开发者社区 > 数据库 > 正文

InnoDB 引擎的文件系统缓存是怎么工作的?

已解决

InnoDB 引擎的文件系统缓存是怎么工作的?

展开
收起
云上静思 2022-09-20 15:16:36 334 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    在配置项 innodb_file_per_table 为ON 的情况下,每个表都会对应一个单独的“.idb”文件。InnoDB 引擎启动时,会先从datadir 目录下扫描所有的“.ibd”文件,该文件由若干Page 组成。InnoDB 引擎启动时会首先解析其中的 Page0 到Page3(为了更方便地管理区和页而设置的索引页)获取该文件的元信息,并将该文件与文件名也就是Tablespace 做一个散列映射,保存在Fil_system 对象的mdirs 域中,这个mdirs域用于记录启动时扫描的路径与发现的文件。InnoDB 引擎在崩溃恢复阶段解析日志记录(log record)时,会通过log record 中记录的Space ID,去mdirs 域中获取对应的“.ibd”文件并打开,并根据Page No 读取对应的页,最终Apply 对应的Redo Log,恢复数据库到崩溃的那一刻。在InnoDB 引擎运行过程中,内存会保存所有Tablespace 的space_id、space_name 字段(分别对应一个表空间的Space ID 和名称)以及相应的“.ibd”文件的映射,这些结构都存储在InnoDB 的Fil_system 对象中。

    以上内容摘自《云原生数据库原理与实践》,这本书可以在电子工业出版社天猫店购买。

    2022-09-20 16:47:04
    赞同 展开评论 打赏

数据库领域前沿技术分享与交流

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
用户态高速块缓存方案 立即下载
高性能Web架构之缓存体系 立即下载