mysql-5.1のstorage engine

storage engineの実装は、storageディレクトリにある

bdb heap innobase myisam myisammrg ndbがある

storage engineのインタフェースには、handlerとhandlertonがある

handlerはinsertやselectなど、テーブルを操作するインターフェースを定義したclass。sql/handler.hで定義されている。各storage engineは、handlerを継承してstorage engineごとのテーブル操作を実装している。handlerのインスタンスは、各テーブルの操作ごとに生成される。例えばinnodbのAAAというテーブルを検索するとき、AAAを操作するためのha_innobase(innodbのhandler)が生成(new)される。

handlerton(handler + singleton)は、各storage engineにつき1つだけ実体を持つ構造体。sql/handler.hで定義されている。storage engineの情報や、storage engineを操作するためのインタフェースを定義している。handlertonには、handlerを生成する関数や、commit/rollbackなどstorage engine全体を操作する関数が設定される。

innodbのhandlertonとhandlerは、sql/ha_innodb.ccに定義されている。