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)?