mysqld_main() 函数中,init_server_components() 函数负责MySQL核心模块的启动,包括mdl系统,Innodb存储引擎的启动等等:
-
mdl子系统初始化。
-
初始化 table definition cache 和 hostname cache hash表
-
初始化 timer组件
-
初始化 query cache
-
随机数模块和浮点数计算器初始化
-
初始化 slave list
-
启动 error log
-
初始化各种 xxx_delegate 类型的指针, 为他们分配对象, 对动态插件的支持
-
初始化 storage engins 之前配置 binlog
-
初始化 gtid server
-
tc_log 尽早指向 TC_LOG_DUMMY, 以便允许 plugin_init() 在读取 mysql.plugin 表之后提交附加的事务;tc_log为事务两阶段提交过程中的协调者
-
plugin_register_builtin_and_init_core_se(),注册内置插件,初始化 MyISAM、CSV、InnoDB 插件。
-
plugin_register_dynamic_and_init_all(),注册并初始化动态插件,已经注册但尚未初始化的插件也要初始化。
-
处理命令行选项
-
打开 slow log file 和 general log file
-
设置默认的存储引擎
-
设置并打开 tc_log
18. xa recovery 操作
- 打开 binlog
20. 初始化优化器cost 模块
- 初始化 max_user_conns 和 sql_command_flags & server_command_flags 数组。
注册内置插件,初始化 MyISAM、CSV、INNODB插件。
接下来我们会重点关注Innodb存储引擎的启动流程。
Original: https://www.cnblogs.com/juanmaofeifei/p/16111523.html
Author: 卷毛狒狒
Title: MySQL启动过程详解二:核心模块启动 init_server_components()
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590939/
转载文章受原作者版权保护。转载请注明原作者出处!