MySQL插件式的存储引擎是其突出的特色之一,像InnoBD/MyISAM之类的存储引擎都是插件式的存储引擎。为了适应各种不同的需求,我们自己也可以动手创建自己的存储引擎。这听起来比较困难,但实际上要创建一个可用的存储引擎并不是特别难,要创建一个像InnoDB这样的支持完整事务特性的存储引擎才是特别难。
根据一般的开发规范,为MySQL新增代码需要经过代码实现,功能测试,性能测试。
一般而言,要创建一个可用的存储引擎应该分以下几个步骤:
这一步是相对来说最简单的一步,因为MySQL已经为我们创建了一个简单可操作的模板(example引擎)。根据这个模板,可以很方便地创建出自定义存储引擎。
我们自定义的存储引擎能够被MySQL正确加载并识别,能够在建表的时候指定存储引擎为自定义的引擎类型,这一步便可以算成功了。
动手创建自己的存储引擎(二)
动手创建自己的存储引擎(三)
动手创建自己的存储引擎(四)
动手创建自己的存储引擎(五)
动手创建自己的存储引擎(六)
这几条中,1-4条的实现比较简单,而5-6条的实现则需要花费很多的功夫。本系列文章将基于percona-server-8.0.13-4进行个人存储引擎的开发和调试,不管功能实现如何,能自己创建一个存储引擎确实是一件令人激动的事情。我将该自定义存储引擎命名为“天马(TIANMA)”,出自山海经。寓意该存储引擎可以让大家发挥天马行空的想象力。
MySQL本身带有大量的mtr测试用例,每开发完一个功能,都应相应地添加测试用例,并保证其余测试用例通过,代表新增代码对原有代码没有造成侵入。
性能测试一般会使用sysbench对数据库进行测试,主要是对读写能力地测试。
未完待续……
[1] https://dev.mysql.com/doc/internals/en/custom-engine-source-files.html
[2] MySQL核心内幕. 祝定泽 等. 清华大学出版社
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。