首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 存儲引擎處理程序實例化機制詳解

     編輯:MySQL 資料庫相關知識

處理程序實例化入口

調用存儲引擎的第一個方法是建立新的處理程序實例。在定義 handlerton 結構前,必須先聲明實例化函數原型,例如 CSV 引擎:

static handler* tina_create_handler(TABLE *table);

該函數接收表指針,返回處理程序對象指針。隨後在 handlerton 的第 21 個元素(函數指針)中指定該函數,標識其負責創建新實例。

各引擎實例化實現範例

MyISAM 引擎

static handler *myisam_create_handler(TABLE *table) {
    return new ha_myisam(table);
}

FEDERATED 引擎

ha_federated::ha_federated(TABLE *table_arg)
    : handler(&federated_hton, table_arg),
      mysql(0), stored_result(0), scan_flag(0),
      ref_length(sizeof(MYSQL_ROW_OFFSET)), current_position(0) {}

除基類 handler() 初始化外,還包含引擎特有的成員初始化。

EXAMPLE 引擎(最小實現)

ha_example::ha_example(TABLE *table_arg)
    : handler(&example_hton, table_arg) {}

僅完成基類 handler() 初始化,這是最低要求的實現。

關鍵點總結

  • 實例化函數簽名固定:handler* xxx_create_handler(TABLE*)。
  • 必須在 handlerton 中註冊該函數指針。
  • 構造函數至少調用基類 handler(handlerton*, TABLE*)。
  • 引擎可在構造函數中進行額外初始化(連接池、緩衝區等)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved