解读MySQL 8.0数据字典的初始化与启动
💡
原文中文,约11900字,阅读约需29分钟。
📝
内容提要
本文介绍了MySQL 8.0数据字典的基本概念和初始化与启动加载的流程,以及解决了之前版本的冗余、原子性和crash safe等问题。
🎯
关键要点
- MySQL 8.0数据字典用于存储数据库内部对象的信息,称为元数据。
- MySQL 8.0之前的元数据分散存储,导致DDL原子性支持困难,容易出现crash后恢复问题。
- MySQL 8.0通过使用支持事务的InnoDB存储引擎实现数据字典的统一管理,消除了冗余并支持原子DDL。
- 数据字典表在debug模式下可直接查看,release模式下通过INFORMATION_SCHEMA视图查询。
- 数据字典的相关代码位于sql/dd目录,表的定义在sql/dd/impl/tables目录中。
- 数据字典的初始化在mysqld -initialize时启动,主要流程包括对InnoDB的初始化和表的创建。
- 数据字典的启动过程与初始化相似,主要区别在于从存储读取已有的元数据。
- MySQL 8.0的新数据字典设计解决了冗余、DDL原子性和crash safe等问题,提供了更好的数据管理和恢复能力。
➡️