動手創建自己的存儲引擎(〇)

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核心內幕. 祝定澤 等. 清華大學出版社