MySQL存储引擎InnoDB和MyISAM对比

110 阅读1分钟

InnoDB引擎

优点

  • 支持事物,ACID特性
  • 实现了sql标准的四种隔离级别
  • 支持行级锁和外键约束
  • 可以利用事物日志进行数据恢复
  • 锁级别为行锁,行锁优点是适用于高并发的频繁表修改,高并发是性能优于 MyISAM。缺点是系统消耗较大
  • 索引不仅缓存自身,也缓存数据,相比 MyISAM 需要更大的内存

缺点

  • 不支持FULLTEXT类型的索引,因为它没有保存表的行数,当使用COUNT统计时会扫描全表。

使用场景

  • 需要事务的操作
  • 更新数据需要使用行级锁
  • 大数据量读写
  • 大型互联网应用。

MyISAM引擎

MyISAM 是 MySQL 5.5.5 之前的默认引擎,它的设计目标是快速读取。

优点

  • 高性能读取;
  • 因为它保存了表的行数,当使用COUNT统计时不会扫描全表;

缺点

  • 锁级别为表锁,表锁优点是开销小,加锁快;缺点是锁粒度大,发生锁冲动概率较高,容纳并发能力低,这个引擎适合查询为主的业务
  • 此引擎不支持事务,也不支持外键
  • INSERT和UPDATE操作需要锁定整个表;
  • 它存储表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。

MyISAM引擎适用场景

  • 不需要事务的操作
  • 插入、更新少,读取频繁
  • 频繁的统计计算。