日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql存储引擎使用教程_mysql教程:如何写MySQL存储引擎

發布時間:2023/12/2 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql存储引擎使用教程_mysql教程:如何写MySQL存储引擎 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在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_INTERFACE_VERSION。如下所示:

struct st_mysql_storage_engine foo_storage_engine=

{ MYSQL_HANDLERTON_INTERFACE_VERSION };

然后需要用mysql_declare_plugin宏來給出存儲引擎的聲明,如下所示:

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

{

MYSQL_STORAGE_ENGINE_PLUGIN,

&foo_storage_engine,            /* 這里即為上面定義的st_mysql_storage_engine變量 */

"FOO",                        /* SHOW ENGINES中顯示的存儲引擎名稱 */

"Author Here",                  /* 作者名 */

"Foo storage engine",            /* SHOW ENGINES中顯示的存儲引擎說明 */

PLUGIN_LICENSE_GPL,

init_func,              /* 某函數,將在加載存儲引擎時調用 */

done_func,              /* 某函數,將在卸載存儲引擎時調用 */

0x0001 /* 版本號0.1 */,

NULL,                     /* status variables */

NULL,                     /* system variables */

NULL                     /* config options */

}

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存储引擎使用教程_mysql教程:如何写MySQL存储引擎的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。