MySql中的MyISAM和Inno数据库类型有什么区别?
主要区别在于InnoDB支持事务,而MyISAM则不支持.
还有许多其他的差异,但我所知道的常见的是:
MyISAM通常被认为在搜索方面更快,但最近的InnoDB改进正在消除这种差异并提高高并发工作负载性能
InnoDB支持交易,而MyISAM则不支持
InnoDB支持参照完整性,而MyISAM则不支持
InnoDB处理索引的方式略有不同,将主键存储为每个索引的一部分(使索引在磁盘上占用更多空间,但也更有可能覆盖索引)
MyISAM执行表级锁定,而InnoDB可以执行行级锁定
MySQL配置文件中使用了不同的内存/缓冲区/索引设置
据说InnoDB具有更好的崩溃恢复能力
如另一个答案所述,数据以不同方式存储在磁盘上.我相信InnoDB可以在这个区域配置,如果需要,每个表等可以有一个文件
我确信谷歌搜索或MySQL网站将更详细地提出许多其他差异.
InnoDB和MyISAM
功能和性能比较:
InnoDB较新,而MyISAM较旧.
InnoDB更复杂,而MyISAM更简单.
InnoDB在数据完整性方面更加严格,而MyISAM则是松散的.
当MyISAM实现表级锁时,InnoDB实现了用于插入和更新的行级锁.
InnoDB有交易,而MyISAM没有.
InnoDB有外键和关系约束,而MyISAM没有.
InnoDB具有更好的崩溃恢复能力,而MyISAM在恢复系统崩溃时的数据完整性方面表现不佳.
MyISAM有全文搜索索引,而InnoDB没有.
鉴于这些差异,InnoDB和MyISAM各有其优点和缺点.它们在某些情况下比在另一种情况下更适合.
InnoDB的优点
InnoDB应该用于数据完整性优先的地方,因为它通过关系约束和事务的帮助固有地处理它们.
写入密集型(插入,更新)表更快,因为它使用行级锁定,只保留对正在插入或更新的同一行的更改.
InnoDB的缺点
因为InnoDB必须采取表之间的不同关系的护理,数据库管理员和方案的创造者不得不花费更多的时间在设计数据模型,其比MyISAM数据的更复杂.
消耗更多的系统资源,如RAM.事实上,许多人都建议,如果在安装MySQL之后没有实际需要,可以关闭InnoDB引擎.
没有全文索引.
MyISAM的优点
设计和创建更简单,因此对初学者更好.不用担心表之间的外来关系.
由于结构更简单,整体上比InnoDB更快,因此服务器资源的成本更低.
全文索引.
特别适合读取密集型(选择)表.
MyISAM的缺点
没有数据完整性(例如关系约束)检查,这就是数据库管理员和应用程序开发人员的责任和开销.
不支持在关键数据应用程序(如银行业务)中必不可少的事务.
对于经常插入或更新的表,InnoDB比InnoDB慢,因为整个表都被锁定以进行任何插入或更新.
比较非常简单.InnoDB更适合需要频繁插入和更新的数据关键情况.另一方面,MyISAM在不完全依赖于数据完整性的应用程序中表现更好,而且大多只是选择和显示数据.
参考: 比较InnoDB和MyISAM
您还可以在此处查看更多详细信息: MyISAM或InnoDB MySQL引擎?
希望这可以帮助.
MyISAM支持(非标准SQL)全文索引,InnoDB仍然没有.这是我们今天使用MyISAM的唯一原因.