识别并解决 RDS for PostgreSQL 中的积极真空拦截器
在 PostgreSQL 中,清理对于确保数据库良好运行状况至关重要,因为它可以回收存储并防止出现事务 ID 重叠
postgres_get_av_diag()
函数可用于识别会阻止或延迟积极 vacuum 进度的问题。提供了建议,其中可能包括用于解决可识别问题的命令,或者在无法识别问题时提供进一步诊断的指导。当龄期超过 RDS 的 5 亿个事务 ID 的自适应自动真空阈值时,将报告积极真空拦截器。
事务 ID 的龄期是多少?
事务 ID 的 age()
函数会计算自数据库 (pg_database.datfrozenxid
) 或表 (pg_class.relfrozenxid
) 的最早解冻事务 ID 以来发生的事务数。此值表示自上次积极真空操作以来的数据库活动,并突出显示即将到来的真空进程可能出现的工作负载。
什么是积极真空?
积极真空操作会对表中的所有页面进行全面扫描,包括在常规真空期间通常跳过的页面。这种彻底的扫描旨在“冻结”接近其最大龄期的事务 ID,从而有效地防止出现被称为事务 ID 重叠
要使 postgres_get_av_diag()
报告拦截器,拦截器必须至少有 5 亿个事务。