MST

星途 面试题库

面试题:MySQL InnoDB表空间文件结构相关问题

简述MySQL InnoDB表空间文件的主要组成部分及其作用。
14.4万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

主要组成部分及其作用

  1. 数据文件(.ibd)
    • 作用:存储表的数据和索引。每张InnoDB表都有一个对应的.ibd文件(在使用独立表空间模式时),数据以页(Page)为单位进行存储,常见页大小为16KB。索引数据也存于其中,不同类型的索引(如聚簇索引、二级索引)结构和存储方式不同,但都在.ibd文件内。
  2. 系统表空间(ibdata文件)
    • 作用
      • 共享数据字典:存储数据库的元数据信息,例如表结构定义、索引定义等。这些信息对整个数据库实例所有数据库和表都通用。
      • 回滚段:用于事务的回滚操作。当事务执行过程中需要撤销已做的修改时,回滚段记录了这些修改的反向操作信息。
      • 双写缓冲区:为了保证数据页写入的原子性和可靠性。在将数据页从缓冲池刷新到数据文件之前,先将其写入双写缓冲区,然后再分两次写入实际的数据文件,防止部分写导致的数据页损坏。
  3. 重做日志文件(ib_logfile0、ib_logfile1等)
    • 作用:记录数据库物理层面的修改操作。在数据库发生崩溃恢复(crash - recovery)时,InnoDB存储引擎可以根据重做日志文件中的记录,将未完成的事务回滚,并将已提交的事务重新应用,从而保证事务的持久性(Durability),确保已提交的事务对数据的修改不会丢失。
  4. 临时表空间(ibtmp1等)
    • 作用:用于存储临时表和临时索引。当数据库执行排序操作、创建临时表(例如在使用CREATE TEMPORARY TABLE语句,或者在复杂查询中MySQL自动创建临时表进行中间结果存储)时,相关数据会存放在临时表空间。该表空间在数据库实例启动时创建,实例关闭时释放其中的数据。