InnoDB存储引擎篇|课后题答疑

第 25 讲

- 深入了解
- 翻译
- 解释
- 总结

1. InnoDB存储引擎中的索引由2个段组成,每个段由一系列区组成,每个区的大小为1M,但在表刚创建时,会给每个索引分配一个Root页面,因此创建一个空的表会占用磁盘空间,且与表上的索引个数有关。 2. MySQL解决InnoDB表分配区空间的问题是先以1个页面为单位分配,只有当32个碎片页都分配后,才会按1个区为单位分配空间。 3. 数据字典表存储在mysql.ibd文件中,数据库初始化时,会按顺序分配这些表的索引的ROOT页面,而数据字典表的索引的Root页面编号存在dd_properties表里,dd_properties表主键的Root页面编号固定为4。 4. 数据字典表的结构是在源代码中定义的,数据字典表的属性保存到DD_PROPERTIES表,下次数据库启动时,DD_PROPERTIES表的Root页面编号固定为4,其他索引的Root页面编号从DD_PROPERTIES表里读取。 5. 数据字典表中存储了每个表的定义,包括表里有哪些字段、每个字段的数据类型是什么、表上有哪些索引等等。 6. MySQL 8.0中,数据字典存储在了InnoDB表中,而数据字典表本身也是一个InnoDB表,查询数据字典表的前提是先要知道这些表的元数据。 7. 数据库初始化时,按一定的顺序,创建数据字典表,第一个创建的是DD_PROPERTIES表。 8. 删除表和索引时,InnoDB会 passively 移除被删除或截断的表空间的页面,而不再立即进行全面的列表扫描,这在MySQL 8.0.23版本中得到了优化。 9. 事务提交时,MySQL不会生成COMMIT类型的Redo日志,而是通过设置Undo State来标记事务的提交状态,确保即使数据库异常重启,Undo段的状态也能正确恢复。 10. 在MySQL 8.0中,可以使用Undo表空间的自动收缩功能或手动回收空间来缩减Undo表空间的大小.
《MySQL 运维实战课》,新⼈⾸单¥59