mysql教程 如何寫MySQL儲存引擎

2021-05-02 04:10:58 字數 1110 閱讀 8976

在mysql 5.1中開發乙個儲存引擎已經是比較方便了。所謂儲存引擎實際上是按照mysql的約定,提供某些介面的實現而已,如mysql插入一條記錄時將呼叫write_row方法,通過索引檢索時將呼叫index_read和index_next方法等。mysql與儲存引擎之間的介面主要由兩個類/結構約定,分別是在sql/handler.h中定義的handlerton結構和handler類。handlerton結構主要是約定事務操作介面,handler類主要約定表、索引及記錄操作介面。對不支援事務的儲存引擎只需要建立乙個handler的派生類,並過載該引擎需要支援的方法。對於需要支援事務的儲存引擎,還需要實現handlerton結構中指定的介面。

實現了儲存引擎本身功能後,還需要按一定格式「宣告」一下儲存引擎的存在。首先需要定義乙個型別為st_mysql_storage_engine的變數,其值為mysql_handlerton_inte***ce_version。如下所示:

struct st_mysql_storage_engine foo_storage_engine=

;然後需要用mysql_declare_plugin巨集來給出儲存引擎的宣告,如下所示:

mysql_declare_plugin(foo)          /* foo為儲存引擎名稱 */

mysql_declare_plugin_end;

照此宣告後,在載入儲存引擎時mysql將呼叫init_func函式,此時會傳入乙個handlerton變數,儲存引擎至少需要設定其中的 state、db_type、create、flags等屬性,其中create為一函式指標,將隨後被呼叫。若儲存引擎支援事務,則還需要設定 handlerton中事務介面函式指標指向相應的實現函式。

然後mysql呼叫上面設定的create函式,該函式中,儲存引擎實現者構建乙個該引擎對應的handler派生類例項並返回給 mysql。至此儲存引擎初始化過程完成,儲存引擎與mysql之間的介面也已經確定,此後mysql即會在相應的時刻呼叫handlerton結構或 handler類約定的方法。

mysql源**中的storage/example目錄給出了很好的示例,該目錄實現了乙個「最小」的儲存引擎example,只是能載入進來玩玩,不能用來儲存記錄。開發新的儲存引擎時,最方便的方法也是拷貝乙份example的**來改

如何寫MySQL儲存引擎

connect to sql node link new mysqli 192.168.0.20 root world parameters for mysqli constructor are host,user,password,database if mysqli connect errno ...

什麼是索引?如何寫MySQL索引?

什麼是索引?百科是這樣描述的 索引是為來加速對錶中資料行中的檢索而建立的一種分散的資料結果,時針對表而建立的,它是由資料頁面以外的索引頁面組成,每個索引頁中的行都含有邏輯指標,以便加速檢索物理資料 其實,索引的概念大家都很清楚,也知道索引能夠提公升查詢效率,但大部分童鞋在怎麼建索引,建在哪些欄位上有...

python函式如何寫 python如何寫函式

python函式的定義 定義函式,也就是建立乙個函式,可以理解為建立乙個具有某些用途的工具。定義函式需要用 def 關鍵字實現,具體的語法格式如下 def 函式名 形參列表 由零條到多條可執行語句組成的 塊 return 返回值 其中,用 括起來的為可選擇部分,即可以使用,也可以省略。此格式中,各部...