backend_xmin 和 backend_xid 在 pg_stat_activity 中代表什么?

Muk*_*pta 3 postgresql

Postgresql 公开视图pg_stat_activity。根据文档

backend_xid 表示此后端的顶级事务标识符(如果有)。

backend_xmin 表示当前后端的 xmin 范围。

让我们举个例子:

BEGIN;
# INSERT Statement1
# INSERT Statement2
COMMIT;
Run Code Online (Sandbox Code Playgroud)

backend_xid表示分配给整个事务的事务标识符,而如果pg_stat_activity在其行中显示语句 2,则backend_xmin对应xmin于语句 2。

理解正确吗?

Lau*_*lbe 6

这两个值代表事务的快照

每当查询开始时(或者,在REPEATABLE READ隔离级别,当事务中的第一个查询开始时),PostgreSQL 会拍摄数据库的快照。这意味着查询(或事务)会看到数据库的某个状态,无论同时发生什么并发数据修改。

此类快照由当时任何活动事务的最旧事务 ID ( xmin)、最新活动事务的事务 ID ( xmax) 和所有当前活动事务的事务 ID 列表组成。借助这些数字,PostgreSQL 可以确定元组(行版本)是否可见

backend_xmin是相关的,因为(与其他值一起)最旧的值决定了xminhorizo​​n,这是 autovacuum 可以安全删除的死元组的截止点。