起動プロセス(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
本題にもどらんと・・・。