MyISAM与InnoDB
✏️ 1、MyISAM
与 InnoDB
区别
MyISAM
与 InnoDB
区别两种类型最主要的差别是InnoDB
支持事务处理与外键和行级锁。
InnoDB
可借由事务日志( Transaction Log )来恢复程序崩溃( crash ),或非预期结束所造成的数据错误;而MyISAM
遇到错误,必须完整扫描后才能重建索引,或修正未写入硬盘的错误。InnoDB
的修复时间,一般都是固定的,但MyISAM
的修复时间,则与数据量的多寡成正比。相对而言,随着数据量的增加,
InnoDB
会有较佳的稳定性。MyISAM
必须依靠操作系统来管理读取与写入的缓存,而InnoDB
则是有自己的读写缓存管理机制。(InnoDB
不会将被修改的數據頁立即交给操作系统)因此在某些情况下,InnoDB
的数据访问会比MyISAM
更有效率。InnoDB
目前并不支持MyISAM
所提供的压缩与 terse row formats(简洁的行格式) ,所以对硬盘与高速缓存的使用量较大。当操作完全兼容 ACID(事务)时,虽然
InnoDB
会自动合并数笔连接,但每次有事务产生时,仍至少须写入硬盘一次,因此对于某些硬盘或磁盘阵列,会造成每秒 200 次的事务处理上限。若希望达到更高的性能且保持事务的完整性,就必使用磁盘缓存与电池备援。当然InnoDB
也提供数种对性能冲击较低的模式,但相对的也会降低事务的完整性。而MyISAM
则无此问题,但这并非因为它比较先进,这只是因为它不支持事务。
✏️ 2、InnoDB
和MyISAM
引擎原理
InnoDB
和MyISAM
引擎原理Last updated