加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 15:58:18 所属栏目:百科 来源:网络整理
导读:我查询pg_stat_activity,但是在我第一次在plpgsql函数体,SERIALIZABLE或REPEATABLE READ事务中查询后,内容似乎保持不变. 为什么pg_stat_activity不遵循plpgsql过程中的READ COMMITTED规则? 我如何获得当前状态?我想在plpgsql中循环查询pg_stat_activity的
我查询pg_stat_activity,但是在我第一次在plpgsql函数体,SERIALIZABLE或REPEATABLE READ事务中查询后,内容似乎保持不变.

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

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

解决方法

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读