微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – pg_stat_activity不会在过程或事务中更新

查询pg_stat_activity,但是在我第一次在plpgsql函数体,SERIALIZABLE或REPEATABLE READ事务中查询后,内容似乎保持不变. @H_404_5@

@H_404_5@为什么pg_stat_activity不遵循plpgsql过程中的READ COMMITTED规则?

@H_404_5@我如何获得当前状态?我想在plpgsql中循环查询pg_stat_activity的查询,直到在另一个后端运行的另一个查询完成.

解决方法

Postgresql对pg_stat_activity和pg_stat_replication使用的pg_stat_get_activity()函数使用的数据进行每个后端(每个连接,有效)缓存. @H_404_5@

@H_404_5@此缓存在提交/回滚时清除,但不会像往常一样在READ COMMITTED中的事务中的每个语句的末尾清除.

@H_404_5@您可以使用SELECT pg_stat_clear_snapshot()显式清除它.在PL / Pgsql LOOP的主体内调用它来刷新.

@H_404_5@当使用可重复读取或更高隔离时,AFAIK无法在每个语句后要求Postgresql自动刷新.

@H_404_5@在源代码中,请参阅pgstat_read_current_status(void)和pgstat_clear_snapshot(void).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐