InnoDB 是 MySQL 数据库的引擎之一。如今,InnoDB 已经成为 MySQL 最常用的存储引擎,支撑着全球各大互联网公司的业务,充分体现出了它所具备的高可用、高性能及高扩展性。

InnoDB 的历史

  • 1995 年,Heikki Tuuri 创建 Innobase Oy 公司,开发 InnoDB
  • 2001 年,InnoDB 存储引擎集成到 MySQL
  • 2005 年,Innobase 被 Oracle 收购
  • 2010 年,MySQL 5.5 版本发布,InnoDB 成为默认存储引擎

innobase

起初,Innobase 想把 InnoDB 作为一款独立的数据库产品(从名字上就能看出来)进行开发并出售,所以它的很多功能都比较完善,不过当时没人买。这时 Innobase 注意到了 MySQL ,发现它的发展前景和推动力都非常好,又支持插件式的存储引擎,于是两公司一合计,InnoDB 就集成到了 MySQL 中。

InnoDB 在十几年前就已经很强了:开源,支持事务,支持 MVCC,行级锁,甚至还有 Oracle 那时所不支持的压缩功能。对于 Oracle 来说,InnoDB 实在是一个很大的威胁。MySQL 也在不断地试着与 Innobase 达成并购协议,但 Innobase 还是选择被 Oracle 收购。之后的很长一段时间里,MySQL 内的 InnoDB 版本没有任何变化,发展几乎停滞。无奈之下,MySQL 也选择了被 Sun 收购。

最终,Sun 也被 Oracle 收购。这些年,在 Oracle 的研发下,MySQL 或者说 InnoDB 的发展速度非常快。目前最新的 5.7 版本不管在性能还是特性上,都远远超过了老版本,很多规划中的 feature 也让人十分期待。

InnoDB 的特点

InnoDB 的设计目标主要面向在线事务处理(OLTP)的应用,其主要特点有:

  • 支持事务和完整的 ACID
  • 具备4种事务隔离级别
  • 主键采用基于B+树的聚集索引高效存取
  • 快速创建、删除二级索引
  • 多版本并发控制(MVCC)
  • 支持外键
  • 行级锁
  • 自动侦测死锁
  • 支持多种文件格式,数据压缩
  • 支持 Crash Recovery
  • 高性能、高并发、高效的 Buffer Pool 管理

InnoDB 基本上就是一个小型的 Oracle,但又和 Oracle 非常不同。