動手創建自己的存儲引擎(〇)
- 2020 年 1 月 4 日
- 筆記
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核心內幕. 祝定澤 等. 清華大學出版社