InnoDB 是磁盘存储引擎技术的巅峰之作,代表了磁盘数据库最先进的技术水平,给人类创造了巨大的价值。它提供了许多高级功能,如事务支持、行级锁定、崩溃恢复等。
2004 年,扎克伯格选择了 MySQL 来创建 Facebook,不承想, Facebook 迅速火遍了全世界。随后的十年里, Google、亚马逊、阿里巴巴等互联网巨头纷纷选择 MySQL 作为自己的核心数据库,这带来了 MySQL 的高速发展:这些互联网巨头投入大量技术资源将 MySQL 打造成了一款非常优秀的开源数据库软件,而 InnoDB 则是其中最受重视的部分。
这些公司的数据库需求基本相似:表字段较少,但行数众多;对单个查询的时间要求极高;很少存储长字符串和二进制文件。这种需求恰好不是传统数据库(如 Oracle)的强项。而且,互联网公司的发展一日千里,无论是授权费还是实施速度,买 Oracle 都不如自己魔改 MySQL 来的方便。之后的十几年, MySQL 特别是 InnoDB 的发展真的可以说是虎虎生风、一日千里,如果你站在 2014 往回看 2004 ,也确实称得上恍如隔世。
但 InnoDB 也不是银弹,它的性能也是靠“取舍”得来的。
和之前的 MyISAM 相比, InnoDB 最大的变化就是将磁盘上数据的基本存储结构从索引 + 数据这样的分体式,变成了所有数据都挂在索引上的整体式:从“ B+ 树索引”加“磁盘连续存储数据”( 中间用指针链接 ) 变成了“ B+ 树存储全部索引和数据”。
这个操作给 MySQL 带来了翻天覆地的变化。那么, InnoDB 到底做了哪些取舍呢?
行数/10
那么多倍)ACID
,成为了一个合格的 OLTP 数据库这些代价和收益,基本都是两个东西带来的: B+ 树和 Buffer Pool。下面我们分别认识一下这两个技术。
📙 高并发的哲学原理 《Philosophical Principles of High Concurrency》
Copyright © 2023 吕文翰