虽然InnoDB仅仅是一个存储引擎,但其功能还是非常完善和强大的,因而其代码量还是比较大的。表1-1显示了各MySQL数据库版本中InnoDB存储引擎的代码行数。
表1 - 1 I n n o D B 存储引擎各版本代码行数统计
M y S Q L 数据库版本 I n n o D B 源码行数
3 . 2 3 . 4 9 1 0 7 6 5 3
4 . 0 . 2 5 1 0 7 5 6 1
4 . 1 . 2 2 1 1 6 2 2 8
5 . 0 . 9 2 1 2 3 4 4 4
5 . 1 . 6 0 1 6 4 1 7 1
5 . 1 . 6 0 (I n n o D B P l u g i n ) 2 0 3 6 4 9
5 . 5 . 3 5 2 0 2 7 3 5
5 . 6 . 1 5 3 0 8 4 5 6
5 . 7 . 3 - m 1 3 (预览版本) 3 1 8 1 0 0
功能的完善不可避免地会导致代码量的不断增加,但是一个软件的内核(或者说微内核)却不会有太大的变动,InnoDB存储引擎亦是如此。因此本书选择MySQL3.23.49版本的
InnoDB存储引擎作为源码分析的切入口,讲述InnoDB存储引擎的体系结构及其各主要功能模块实现的分析。即便如此,在MySQL3.23.49版本中InnoDB存储引擎也有10万多行的代码。
各位读者不要小看MySQL3.23.49中这个古老的版本,因为即使在最新的MySQL5.6版本中,InnoDB存储引擎的内核实现也没有进行非常大的改动。正所谓一门深入,心定开慧,一通全通,妙极方法。通过设置断点调试仅能得到非常片面而又主观的内容,而通过本书的介绍可以使读者全面地了解InnoDB存储引擎的体系结构与实现。此外,读者还可以对比新版本的实现,看看两者之间的改进与优化。