Mysql 存储引擎中InnoDB与Myisam的区别

Table of Contents

事务

  • innodb 支持事务功能,myisam 不支持
  • myisam 的执行速度更快,性能更好

select ,update ,insert ,delete 操作

  • myisam 大量的SELECT 场景较佳
  • InnoDB 大量的INSERT或UPDATE 场景较佳

锁机制

  • InnoDB 行级锁
  • myisam 表级锁

查询表的行数

  • myisam 会保存行数
  • InnoDB 不会保存行数,需全表遍历

物理结构

  • myisam 三个文件
  • InnoDB 表空间数据文件和它的日志文件 InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB

anto_increment 机制不同

其他

  • 为什么MyISAM会比Innodb 的查询速度快?
INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多;
1)数据块,INNODB要缓存,MYISAM只缓存索引块,  这中间还有换进换出的减少; 
2)innodb寻址要映射到块,再到行,MYISAM 记录的直接是文件的OFFSET,定位比INNODB要快
3)INNODB还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和维护MVCC ( Multi-Version Concurrency Control )多版本并发控制

Author: josephzeng

Last Updated 2016-04-16. Created by Emacs 24.5.1 (Org mode 8.2.10)

Validate