PostgreSQL冻结过程

1.冻结 过程

冻结过程有两种模式,依特定条件而择其一执行。为方便起见,将这两种模式分别称为惰性模式(lazy mode)和迫切模式(eager mode)。

并发清理(Concurrent VACUUM)通常在内部被称为"惰性清理(lazy vacuum)"。

冻结过程通常以惰性模式运行;但当满足特定条件时,也会以迫切模式运行。在惰性模式下,冻结处理仅使用目标表对应的VM扫描包含死元组的页面。迫切模式相则反,它会扫描所有的页面,无论其是否包含死元组,它还会更新与冻结处理相关的系统视图,并在可能的情况下删除不必要的clog。

图1-1 冻结元组 惰性模式

因为惰性模式可能会跳过页面,它可能无法冻结所有需要冻结的元组。

迫切模式弥补了惰性模式的缺陷。它会扫描所有页面,检查表中的所有元组,更新相关的系统视图,并在可能时删除非必需的clog文件与页面。

图1-2 冻结元组 迫切模式

2.移除不必要的提交日志文件

提交日志(clog)存储着事务的状态。 当更新pg_database.datfrozenxid时,PostgreSQL会尝试删除不必要的clog文件。 注意相应的clog页面也会被删除。

图2-1 删除不必要的clog文件和页面

相关推荐
六月雨滴18 小时前
Oracle 数据库内存管理
数据库·oracle
甲方大人请饶命18 小时前
SSM-基础
java·数据库·spring
Jackyzhe19 小时前
从零学习Kafka:幂等与事务
数据库·学习·kafka
六月雨滴19 小时前
Oracle 会话与进程管理
数据库·oracle
shark-chili19 小时前
基于claude code的redis慢查询指令复刻实践
数据库·redis·缓存
@我漫长的孤独流浪19 小时前
数据库完整性约束与安全机制全解析
数据库
px不是xp19 小时前
Docker部署Qdrant向量数据库,初始化向量数据库,重构RAG逻辑
数据库·docker·微信小程序·重构·qdrant
funnycoffee12319 小时前
Cisco Firewpower 4100 9300 FXOS change management ip address
linux·数据库·tcp/ip
Chase_______19 小时前
Java 基础语言 ③:流程控制与数组——从条件分支到数组遍历,一篇通关
java·数据库·python
2501_9219392619 小时前
MySQL(备份恢复、主从复制读写分离)
数据库·mysql