识别并解决 RDS for PostgreSQL 中的积极真空拦截器 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

识别并解决 RDS for PostgreSQL 中的积极真空拦截器

在 PostgreSQL 中,清理对于确保数据库良好运行状况至关重要,因为它可以回收存储并防止出现事务 ID 重叠问题。但是,有时可能会阻止真空清理操作按预期运行,这样可能会导致性能下降、存储膨胀,甚至会因事务 ID 重叠而影响您的数据库实例的可用性。因此,识别和解决这些问题对于实现最佳数据库性能和可用性具有至关重要的意义。阅读了解 Amazon RDS for PostgreSQL 环境中的自动真空功能,以了解有关自动真空的更多信息。

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 亿个事务。