10. 如何选择合适的存储引擎?

提供几个选择标准,然后按照标准,选择对应的存储引擎即可,也可以根据 常用引擎对比 来选择你使用的存储引擎。使用哪种引擎需要根据需求灵活选择,一个数据库中多个表可以使用不同的引擎以满足各种性能和实际需求。使用合适的存储引擎,将会提高整个数据库的性能。

  1. 是否需要支持事务。

  2. 对索引和缓存的支持。

  3. 是否需要使用热备。

  4. 崩溃恢复,能否接受崩溃。

  5. 存储的限制。

  6. 是否需要外键支持。

    目前开发已经不考虑外键,主要原因是性能。具体可以看看 《从 MySQL 物理外键开始的思考》 文章。

目前,MySQL 默认的存储引擎是 InnoDB ,并且也是最主流的选择。主要原因如下:

  • 【最重要】支持事务。
  • 支持行级锁和表级锁,能支持更多的并发量。
  • 查询不加锁,完全不影响查询。
  • 支持崩溃后恢复。

在 MySQL5.1 以及之前的版本,默认的存储引擎是 MyISAM ,但是目前已经不再更新,且它有几个比较关键的缺点:

  • 不支持事务。
  • 使用表级锁,如果数据量大,一个插入操作锁定表后,其他请求都将阻塞。

也就是说,我们不需要花太多力气在 MyISAM 的学习上。