­

动手创建自己的存储引擎(〇)

MySQL插件式的存储引擎是其突出的特色之一,像InnoBD/MyISAM之类的存储引擎都是插件式的存储引擎。为了适应各种不同的需求,我们自己也可以动手创建自己的存储引擎。这听起来比较困难,但实际上要创建一个可用的存储引擎并不是特别难,要创建一个像InnoDB这样的支持完整事务特性的存储引擎才是特别难。

一般而言,要创建一个可用的存储引擎应该分以下几个步骤:

1. 初始化存储引擎

这一步是相对来说最简单的一步,因为MySQL已经为我们创建了一个简单可操作的模板(example引擎)。根据这个模板,可以很方便地创建出自定义存储引擎。

我们自定义的存储引擎能够被MySQL正确加载并识别,能够在建表的时候指定存储引擎为自定义的引擎类型,这一步便可以算成功了。

动手创建自己的存储引擎(一)

2. 能够支持表的创建

动手创建自己的存储引擎(二)

3. 能够支持表的读写

动手创建自己的存储引擎(三)

4. 能够支持对数据的修改

动手创建自己的存储引擎(四)

5. 能够支持索引功能

动手创建自己的存储引擎(五)

6. 能够支持事务特性

动手创建自己的存储引擎(六)

这几条中,1-4条的实现比较简单,而5-6条的实现则需要花费很多的功夫。本系列文章将基于percona-server-8.0.13-4进行个人存储引擎的开发和调试,不管功能实现如何,能自己创建一个存储引擎确实是一件令人激动的事情。我将该自定义存储引擎命名为“天马(TIANMA)”,出自山海经。寓意该存储引擎可以让大家发挥天马行空的想象力。

未完待续……


参考文献

[1] https://dev.mysql.com/doc/internals/en/custom-engine-source-files.html

[2] MySQL核心内幕. 祝定泽 等. 清华大学出版社