关于Postgres MVCC可见性规则的疑问:xid101无法看到已提交新版本
PostgreSQL MVCC 可见性规则疑问
我正试图理解PostgreSQL的MVCC行为。默认情况下,PostgreSQL的MVCC通过为物理元组提供系统列xmin、xmax来区分版本。根据隔离级别不同,快照会在事务启动或SQL语句执行时依据可见性规则生成。
已知某场景下,快照的xmin为活跃事务的最小值100,xmax为下一个待分配的事务ID即102。此时元组的可见性规则为:
(xmin <= snapshot.xmin) AND (xmin NOT IN xip)
且
(snapshot.xmax < xmax OR xmax IS NULL OR xmax IN xip)
但按照这个规则,似乎会出现一种情况:事务ID为101的事务需要更新特定行时,无法看到快照中已提交的新版本。
我参考了相关资料学习该内容。
内容的提问来源于stack exchange,提问作者Kim Beob Woo
相关产品推荐
相关产品推荐

