MyISAM vs InnoDB

November 8th, 2017

  • ISAM和InnoDB都使用B+树来实现索引
  • MyISAM的索引与数据分开存储
  • MyISAM的索引叶子存储指针,主键索引与普通索引无太大区别
  • InnoDB的聚集索引和数据行统一存储
  • InnoDB的聚集索引存储数据行本身,普通索引存储主键
  • InnoDB一定有且只有一个聚集索引
  • InnoDB不宜使用较长的列作为PK

InnoDB并发高的原因

  1. 常见并发控制保证数据一致性的方法有锁,数据多版本;
  2. 普通锁串行,读写锁读读并行,数据多版本读写并行;
  3. redo日志保证已提交事务的ACID特性,设计思路是,通过顺序写替代随机写,提高并发;
  4. undo日志用来回滚未提交的事务,它存储在回滚段里;
  5. InnoDB是基于MVCC的存储引擎,它利用了存储在回滚段里的undo日志,即数据的旧版本,提高并发;
  6. InnoDB之所以并发高,快照读不加锁;
  7. InnoDB所有普通select都是快照读;