Innodb启动过程如下:
-
初始化innobase_hton,它是一个handlerton类型的指针,以便在server层能够调用存储引擎的接口。
-
Innodb相关参数的检车和初始化,包括系统表空间,临时表空间,undo表空间,redo文件,doublewrite文件等。
-
innobase_start_or_create_for_mysql()创建或者启动 innobase。
innobase_start_or_create_for_mysql() 过程如下:
1. 重置 start state.
_2. 处理 innodb_flush_method, 一般情况下,线上使用 O_DIRECT | O_DIRECT_NO_FSYNC
_
3. 设置 Innodb 最大线程数量
4. 重置 innodb_buffer_pool_instances 和 innodb_buffer_pool_size
5. 根据 srv_buf_pool_instances 调整 innodb_page_cleaners 的数量