起動プロセス(3) innobase_start_or_create_for_mysql関数
InnoDBの初期処理の大まかな流れはこの関数に記述されております。
1. 設定情報の取得処理はここでも続いている。
2. innodb_buffer_pool_sizeの大きさによって、srv_max_n_threadsという変数の値を50000,10000,1000の3段階に分けて設定している。
- "WIN"あるいは"NETWARE"なら無条件でsrv_max_n_threads=1000
- innodb_buffer_pool_size >= 1GBならsrv_max_n_threads=50000
- innodb_buffer_pool_size >= 8MBならsrv_max_n_threads=10000
- innodb_buffer_pool_size < 8MBならsrv_max_n_threads=1000
- これを減らすとメモリの節約になるらしい。特に64bitだとそうだとコメントしてある。
3. srv_boot関数を呼び出す。
4. buf_pool_init関数を呼び出す。
5. log_init関数を呼び出す。
6. srv_n_file_io_threads数だけI/Oスレッドを作成する。I/Oスレッドの開始関数はio_handler_thread関数。
7. open_or_create_datafiles関数を呼び出す。
8. srv_n_log_files数だけ、for文を使ってopen_or_create_log_file関数を呼び出す。