MyISAM 和 InnoDB 存储引擎区别及各自使用场景

InnoDB 主要优势

  • 事务支持:事务提交回滚以及错误恢复。
  • 行级锁
  • 聚合索引
  • 外键支持

InnoDB 在 MySQL 5.6.4 后支持全文索引。

MySQL 5.5 后默认存储引擎为InnoDb。

如果不能使用到索引,行级锁会失效。

如何选择两种存储引擎

大量读,几乎没有写请求 和 小于5.6.4版本需要全文索引,选择 MyISAM,其他情况选择InnoDB。

我的性能测试结果,仅供参考

单进程插入10万条记录,MyISAM 1.8348009586334 秒, InnoDB 2.0098528862 秒

6个进程同时各插入10万条记录,MyISAM 3.860533952713 秒, InnoDB 2.9386329650879 秒(每个进程运行时间差不多,文章中给出的是其中一进程的运行时间,下同)

12个进程同时各插入10万条记录,MyISAM 7.4965870380402 秒, InnoDB 5.0007991790771 秒

单进程插入1万条记录,MyISAM 4.3874440193176 秒, InnoDB 3.8677229881287 秒

6个进程同时各插入1万条记录,MyISAM 9.7532279491425 秒, InnoDB 6.4886889457703 秒(平均每个进程运行时间)

12个进程同时各插入1万条记录,MyISAM 22.401536941528 秒, InnoDB 8.3166329860687 秒(平均每个进程运行时间)

12个进程同时主键SELECT1万次,MyISAM 3.3773090839386 秒, InnoDB 3.3466641902924 秒(平均每个进程运行时间)

30个进程同时主键SELECT1万次,MyISAM 8.7141139507294 秒, InnoDB 8.6588280200958 秒(平均每个进程运行时间)

总结:从这个测试结果来看,InnoDB几乎是完胜啊。(结果仅供参考,或许完全没有参考价值,毕竟与真实业务中的查询情况相差巨大)

发表评论