mysql存储引擎

特点 MyISAM InnoDB Memory Merge NDB
存储限制 64TB 没有
事务安全 支持
锁机制 表锁 行锁 表锁 表锁 行锁
B树索引 支持 支持 支持 支持 支持
哈希索引 支持 支持
全文索引 支持
集群索引 支持
数据缓存 支持 支持 支持
索引缓存 支持 支持 支持 支持 支持
数据可压缩 支持
空间使用
内存使用 中等
批量插入的速度
支持外键 支持

MyISAM

  • MyISAM是MySQL默认的存储引擎。MyISAM不支持事务,也不支持外键,其优势是访问的速度快,对事务完整性没有要求或者以select,insert为主的应用基本上可以使用这个引擎来创建表。
  • 每个MyISAM在磁盘上存储成3个文件,其文件名和表明都相同,但扩展名分别是
    1. .frm(存储表定义);
    2. .MYD(MYData, 存储数据);
    3. .MYI(MYIndex,存储索引);
  • 数据文件与索引文件分开放置,平均分配IO,获得更快的速度。

InnoDB

  • InnoDB存储表和索引有以下两种方式。
    1. 使用共享表空间存储,这种方式创建的表的表结构保存在.frm文件中,数据和索引保存在innodb_data_home_dir 和 innodb_data_file_path定义的表空间中,可以是多个文件.
    2. 使用多表空间存储,这种方式创建的表结构仍然保存在.frm文件中,但是每个表的数据和索引单独保存在.ibd中。

如何选择合适的存储引擎

  • MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务完整性要求不高,那么选择这个存储引擎是非常合适的。MyISAM是在web,数据仓储和其他应用环境下最常使用的存储引擎之一。
  • InnoDB:用于实务操作应用程序,支持外键,如果应用对于事务的完整性要求比较高,在并发条件下要求数据一致性,数据操作除了插入和查询以外,还有很多修改和删除操作,那无疑很需要InnoDB存储引擎。InnoDB存储引擎除了有效地降低由于删除和更新导致的锁定,还可以确保事务的完整提交和回滚,对于财务系统来说,这是最好的。