一些 DDL 命令(当前仅有 TRUNCATE
和表重写形式的 ALTER TABLE
)不是 MVCC 安全的。这意味着在截断或重写提交后,如果并发事务使用在 DDL 命令提交前拍摄的快照,则该表对它们来说将显示为空。这仅对在 DDL 命令开始前未访问过相关表的的事务构成问题——任何已访问过该表的事务将至少持有ACCESS SHARE
表锁,该锁将阻止 DDL 命令,直到该事务完成。因此,这些命令不会导致目标表上连续查询的表内容出现任何明显的差异,但它们可能会导致目标表与数据库中其他表的内容之间出现可见的差异。
尚未向热备用复制目标(在 第 27.4 节 中描述)添加对可序列化事务隔离级别的支持。热备用模式下当前支持的最严格隔离级别是可重复读。虽然在主数据库上以可序列化事务执行所有永久数据库写入操作将确保所有备用数据库最终达到一致状态,但在备用数据库上运行的可重复读事务有时会看到与主数据库上事务的任何串行执行不一致的瞬态状态。
对系统目录的内部访问不使用当前事务的隔离级别。这意味着新创建的数据库对象(如表)对并发可重复读和可序列化事务可见,即使它们包含的行不可见。相比之下,在较高的隔离级别中,显式检查系统目录的查询不会看到表示并发创建的数据库对象的那些行。