上一篇:
【0367】Postgres内核 XLOG record 中 main data 数据是什么 ? ( 10 )
文章目录
- 1. 移除 old relcache 缓存文件
-
- 1.1 删除 init files
-
- 1.1.1 移除 global 下的 init files
- 1.1.2 扫描 default tablespace
1. 移除 old relcache 缓存文件
清除所有旧的 relcache 缓存文件。倘若我们进行任何 WAL 重放(WAL replay),这是“必要的”,因为那很可能致使缓存文件与数据库的实际情况不同步。从理论上讲,如果数据库已干净利落地关闭,我们可以将其留存原处,但似乎最稳妥的做法始终是将其删除, 并让它们在首次后端进程启动期间得以重建。这些文件需要从包括 pg_tblspc 在内的所有目录中移除,然而,符号链接仅在从备份进行归档恢复时 读取 tablespace_map 文件后创建,所以需要在创建符号链接之后清除此处的旧 relcache 文件
该过程由函数 RelationCacheInitFileRemove() 完成。 其调用链路如下:
void