MySQL启动过程详解二:核心模块启动 init_server_components()

mysqld_main() 函数中,init_server_components() 函数负责MySQL核心模块的启动,包括mdl系统,Innodb存储引擎的启动等等:

  1. mdl子系统初始化。

  2. 初始化 table definition cache 和 hostname cache hash表

  3. 初始化 timer组件

  4. 初始化 query cache

  5. 随机数模块和浮点数计算器初始化

  6. 初始化 slave list

  7. 启动 error log

  8. 初始化各种 xxx_delegate 类型的指针, 为他们分配对象, 对动态插件的支持

  9. 初始化 storage engins 之前配置 binlog

  10. 初始化 gtid server

  11. tc_log 尽早指向 TC_LOG_DUMMY, 以便允许 plugin_init() 在读取 mysql.plugin 表之后提交附加的事务;tc_log为事务两阶段提交过程中的协调者

  12. plugin_register_builtin_and_init_core_se(),注册内置插件,初始化 MyISAM、CSV、InnoDB 插件。

  13. plugin_register_dynamic_and_init_all(),注册并初始化动态插件,已经注册但尚未初始化的插件也要初始化。

  14. 处理命令行选项

  15. 打开 slow log file 和 general log file

  16. 设置默认的存储引擎

  17. 设置并打开 tc_log

18. xa recovery 操作

  1. 打开 binlog

20. 初始化优化器cost 模块

  1. 初始化 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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • VM Ware 给Centos虚拟机配置静态IP

    前言:在大家的日常运维工作中,肯定多多少少都会用到虚拟机,但是默认情况下VMware创建的虚拟机每次启动都有可能更换IP这就对我们的工作造成了一定的麻烦,下面我就给大家介绍下,如何…

    数据库 2023年6月9日
    093
  • mysql杂记漫谈

    Hello,大家好,这几天消失了一下,主要是线上系统出了点小bug和sql性能问题,在努力搬砖,就把之前的设计模式系列放了一下下,正好趁这个复习巩固了一下sql执行计划和sql优化…

    数据库 2023年6月14日
    077
  • 读取resources下的资源

    这里我通过一个普通的SpringBoot项目进行测试,当然其他项目也都是通用的。 将其中的Test修改为你的类名即可: java;gutter:true; import lombo…

    数据库 2023年6月14日
    081
  • Java中CMD命令来备份mysql数据库备份文件出来为0字节问题

    Java中CMD命令来备份mysql&#…

    数据库 2023年5月24日
    0113
  • MySQL45讲之幻读

    前言 本文介绍了什么是虚读,虚读存在的问题和解决方法,以及间隙锁带来的麻烦。 [En] This paper introduces what is phantom reading,…

    数据库 2023年5月24日
    085
  • login方法访问不到解决过程

    背景:由于项目登录模块之前使用传统的字符验证码,干扰又太严重,经常会有输入十次以上才能蒙对的情况。于是提出让改为滑动验证码(斗鱼,B站等等)。如图所示: 原有的: 要改的: 这个实…

    数据库 2023年6月11日
    0141
  • ansible碎碎念

    Using a SSH password instead of a key is not possible because Host Key checking is enabled…

    数据库 2023年6月11日
    076
  • 手写spring的ioc的流程截图(笔记-1)

    spring ioc是什么? IoC 容器是 Spring 的核心,也可以称为 Spring 容器。Spring 通过 IoC 容器来管理对象的实例化和初始化,以及对象从创建到销毁…

    数据库 2023年6月6日
    074
  • 操作线程的方法

    操作线程的方法操作线程有很多方法,这些方法可以使线程从某一种状态过渡到另一种状态。 线程的休眠能控制线程行为的方法之一是调用sleep()方法,sleep()方法可以指定线程休眠的…

    数据库 2023年6月16日
    083
  • 07 sql函数

    函数:切记函数和括号要紧密相连内置函数1.算术函数abs mod roundmax min avg sum count 这几个为聚集函数,特别在分组中常用 select abs(-…

    数据库 2023年6月16日
    074
  • Java处理.tif或.tiff图片

    前言 Java将图片读取到内存用的是ImageIO,默认可以处理的图片格式如下: undefined ImageIO.getWriterFileSuffixes() //此方法返回…

    数据库 2023年6月9日
    078
  • MySQL主从复制

    一、概述 主从复制是指将主数据库(Master)的DDL和DML操作通过二进制日志传到从库(Slave)服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数…

    数据库 2023年5月24日
    0107
  • django-ckeditor上传图片到阿里云OSS

    参考信息 资料1: django_ckeditor上传图片到七牛云OSS 使用 1. 安装django-ckeditor 【参考 资料1 】 2. setting.py配置INST…

    数据库 2023年6月9日
    0101
  • Mysql8+数据库安装和使用

    一、Mysql的版本选择 Mysql目前分文社区版和企业版,社区版在技术方面会加入许多新的未经严格测试的特性,而企业版经过严格测试认证,更加稳定、安全、可靠,性能也比社区版好。社区…

    数据库 2023年6月14日
    081
  • 做自动化测试选择Python还是Java?

    你好,我是测试蔡坨坨。 今天,我们来聊一聊测试人员想要进阶,想要做自动化测试,甚至测试开发,如何选择编程语言。 自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件…

    数据库 2023年6月11日
    0105
  • Nginx基础入门篇(1)—优势及安装

    一、Nginx 的优势 1.1发展趋势: 2016年: 1.2、简介 Nginx (engine x) 是一个高性能的HTTP(解决C10k的问题)和反向代理服务器,也是一个IMA…

    数据库 2023年6月14日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球