| 特点 | MyISAM | InnoDB |
| 存储限制 | 有 | 64TB |
| 事务安全 | 支持 | |
| 锁机制 | 表锁 | 行锁 |
| B树索引 | 支持 | 支持 |
| 哈希索引 | ||
| 全文索引 | 支持 | |
| 集群索引 | 支持 | |
| 数据缓存 | 支持 | |
| 索引缓存 | 支持 | 支持 |
| 空间使用 | 低 | 高 |
| 内存使用 | 低 | 高 |
| 批量插入速度 | 高 | 低 |
| 支持外键 | 支持 | |
| 数据可压缩 | 支持 |
对于自动增长列,innodb可以手动插入,插入为空或0,则实际插入的值将为自动增长的值。
MyISAM不支持事务和外键,innodb支持事务和外键。
相对于mysiam,innodb写的效率更低,并且会占用更多的磁盘空间保存数据和索引。
对于innodb,自动增长列必须为索引,如果是组合索引,则必须是组合索引的第一列,但myisam没有要求,如果使用MyISAM,将自动增长列作为索引的第二列或者第三列,那么会先将数据按照第一和第二列排序后再自增。比如插入(2,2)(3,3)(2,2)则第一个(2,2)的自动增长列为1,第二个为2,(3,3)的自动增长列为1.
select count(*)from table,MyISAM直接读取值,因为存储了记录数,而innodb必须遍历全表。
使用场景:MyISAM适用于select、insert较多的场景。InnoDB适用于大数据量系统,支持事务操作,可以提交、回滚、错误恢复。
本文对比了MySql中MyISAM和InnoDB两种存储引擎的特点,包括事务安全、锁机制、索引类型、数据和索引缓存、空间使用、内存使用、批量插入速度、外键支持、数据压缩能力以及自动增长列的处理方式。同时介绍了这两种引擎在不同场景下的适用性。
6004

被折叠的 条评论
为什么被折叠?



