起動プロセス(8) その他

innobase_start_or_create_for_mysql関数では最後にopen_or_create_log_file関数を呼び出す。innobase_init関数に復帰した後、また最後にhash_init関数を呼んで、起動プロセスは完了。



■open_or_create_log_file関数

ログファイルの数の分だけこの関数は呼び出されるので、この内部で作成するファイル数は1つのみ。それ以外はopen_or_create_data_files関数と似たり寄ったり。



■hash_init関数
innobase_init関数内において、以下のように呼び出される。

(void) hash_init(&innobase_open_tables,system_charset_info, 32, 0, 0,
                (hash_get_key) innobase_get_key, 0, 0);

hash_init自体はマクロで、_hash_init関数が実体。これはmysysディレクトリに実装されているmysqlの共通ユーティリティ関数。

my_bool _hash_init(HASH *hash, CHARSET_INFO *charset,
           uint default_array_elements, uint key_offset,
           uint key_length, hash_get_key get_key,
           void (*free_element)(void*), uint flags CALLER_INFO_PROTO);

雰囲気からするとテーブル名から何かを解決するためのハッシュテーブルの作成を行っているようだ。



InnoDBの起動プロセスの説明を試みる連載エントリはこれでおしまい。あー、つかれた。

またまた寄り道をしてしまった。orz

本題にもどらんと・・・。