MySql:MyISAM与Inno DB!

MyISAM和MySql中的Inno DB类型有什么区别?


主要区别在于InnoDB支持事务,而MyISAM则不支持事务。

还有很多其他的区别,但是我知道的常见的是:

  • MyISAM通常被认为搜索速度更快,但最近的InnoDB改进正在消除这种差异并提高高并发工作负载性能
  • InnoDB支持事务,而MyISAM则不支持事务
  • InnoDB支持参照完整性,而MyISAM则不支持
  • InnoDB处理索引的方式有点不同,将主键存储为每个索引的一部分(使索引在磁盘上占用更多空间,但也使得覆盖索引更有可能)
  • MyISAM执行表级锁定,而InnoDB可以执行行级锁定
  • MySQL配置文件中使用了不同的内存/缓冲区/索引设置
  • InnoDB通常被认为具有更好的崩溃恢复
  • 正如另一个答案中提到的,数据以不同的方式存储在磁盘上。 我相信InnoDB在这个区域是可配置的,并且如果需要的话,每个表格可以有一个文件
  • 我相信谷歌搜索或MySQL网站会带来更多细节上的其他差异。


    InnoDB和MyISAM

    功能和性能比较:

  • InnoDB较新,而MyISAM较旧。
  • InnoDB更复杂,而MyISAM更简单。
  • InnoDB在数据完整性方面更加严格,而MyISAM松散。
  • InnoDB实现用于插入和更新的行级锁,而MyISAM实现表级锁。
  • InnoDB有事务,而MyISAM则没有事务。
  • InnoDB有外键和关系约束,而MyISAM则没有。
  • InnoDB具有更好的崩溃恢复能力,而MyISAM在恢复系统崩溃时的数据完整性方面效果很差。
  • MyISAM具有全文搜索索引,而InnoDB则没有。
  • 鉴于这些差异,InnoDB和MyISAM彼此独特的优势和劣势。 在某些情况下,它们都比另一个更适合。

    InnoDB的优点

  • 在数据完整性成为优先事项的地方,应该使用InnoDB,因为在关系约束和事务的帮助下,它本质上会照顾它们。
  • 在写入密集型(插入,更新)表中更快,因为它利用行级锁定,并且只修改插入或更新的同一行。
  • InnoDB的缺点

  • 由于InnoDB必须处理表之间的不同关系,因此数据库管理员和方案创建者必须花费更多时间来设计比MyISAM更复杂的数据模型。
  • 消耗更多系统资源,如RAM。 事实上,许多人建议,如果在安装MySQL之后没有实质性需求,InnoDB引擎将被关闭。
  • 没有全文索引。
  • MyISAM的优势

  • 设计和创建更简单,因此对初学者更好。 不用担心表格之间的外部关系。
  • 整体而言,由于结构更简单,服务器资源成本更低,因此总体上比InnoDB更快。
  • 全文索引。
  • 特别适合读密集(选择)表格。
  • MyISAM的缺点

  • 没有数据完整性(例如关系约束)检查,这随后成为数据库管理员和应用程序开发人员的责任和开销。
  • 不支持在关键数据应用程序(如银行业务)中至关重要的交易。
  • 对于频繁插入或更新的表,比InnoDB慢,因为整个表被锁定以进行任何插入或更新。
  • 比较非常简单。 InnoDB更适合需要频繁插入和更新的数据紧急情况。 另一方面,MyISAM在不太依赖数据完整性的应用程序中执行得更好,主要是选择并显示数据。

    参考:比较InnoDB和MyISAM

    您还可以在这里查看更多详细信息:MyISAM或InnoDB MySQL引擎?

    希望这可以帮助。


    MyISAM支持(非标准SQL)全文索引,而InnoDB依然没有。 这是我们今天使用MyISAM的唯一原因。

    链接地址: http://www.djcxy.com/p/52229.html

    上一篇: MySql: MyISAM vs. Inno DB!

    下一篇: Should I be using MyISAM or InnoDB (or something else)?