RDS for PostgreSQL 中的 postgres_get_av_diag() 函数
postgres_get_av_diag()
函数会检索有关 RDS for PostgreSQL 数据库中阻止或滞后的 autovacuum 进程的诊断信息。为了获得准确的结果,需要在具有最早事务 ID 的数据库中执行查询。有关使用具有最早事务 ID 的数据库的更多信息,请参阅未连接到具有最早事务 ID 龄期的数据库
SELECT blocker, DATABASE, blocker_identifier, wait_event, TO_CHAR(autovacuum_lagging_by, 'FM9,999,999,999') AS autovacuum_lagging_by, suggestion, suggested_action FROM ( SELECT * FROM rds_tools.postgres_get_av_diag () ORDER BY autovacuum_lagging_by DESC) q;
postgres_get_av_diag()
函数将返回一个包含以下信息的表:
- blocker
-
指定阻止真空的数据库活动的类别。
- database
-
在适用和支持的情况下指定数据库的名称。这是其中活动正在进行并正在阻止或将阻止自动真空的数据库。这是您需要连接并执行操作的数据库。
- blocker_identifier
-
指定正在阻止或将阻止自动真空的活动的标识符。该标识符可以是进程 ID 以及 SQL 语句、准备好的事务、只读副本的 IP 地址以及复制槽的名称(逻辑或物理)。
- wait_event
-
指定阻止会话的等待事件,适用于以下拦截器:
-
活动语句
-
事务中空闲
-
- autovacum_lagging_by
-
指定自动真空在每个类别的积压工作中滞后的事务数。
- suggestion
-
指定解除拦截器的建议。这些说明包括活动所在的数据库的名称(如果适用)、会话的进程 ID(PID)(如果适用)以及要执行的操作。
- suggested_action
-
建议需要执行哪些操作来解除拦截器。