前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动手创建自己的存储引擎(〇)

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

原创
作者头像
devsql
修改2020-01-08 16:23:06
1.3K0
修改2020-01-08 16:23:06
举报
文章被收录于专栏:MySQL内核MySQL内核MySQL内核

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

根据一般的开发规范,为MySQL新增代码需要经过代码实现,功能测试,性能测试。

1. 代码开发

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

1.1 初始化存储引擎

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

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

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

1.2 能够支持表的创建

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

1.3 能够支持表的读写

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

1.4 能够支持对数据的修改

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

1.5 能够支持索引功能

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

1.6 能够支持事务特性

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

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

2. 功能测试

MySQL本身带有大量的mtr测试用例,每开发完一个功能,都应相应地添加测试用例,并保证其余测试用例通过,代表新增代码对原有代码没有造成侵入。

3. 性能测试

性能测试一般会使用sysbench对数据库进行测试,主要是对读写能力地测试。

未完待续……


参考文献

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 代码开发
    • 1.1 初始化存储引擎
      • 1.2 能够支持表的创建
        • 1.3 能够支持表的读写
          • 1.4 能够支持对数据的修改
            • 1.5 能够支持索引功能
              • 1.6 能够支持事务特性
              • 2. 功能测试
              • 3. 性能测试
              • 参考文献
              相关产品与服务
              云数据库 SQL Server
              腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档