一些 DDL 命令(目前只有 TRUNCATE 和会重写表的 ALTER TABLE 形式)不是 MVCC 安全的。这意味着在截断或重写提交之后,如果并发事务使用的是在该 DDL 命令提交之前取得的快照,那么该表对它们来说会表现为空表。这只会对那些在 DDL 命令开始前没有访问过相关表的事务造成问题 — 任何在 DDL 命令开始前访问过该表的事务,都会持有至少一个 ACCESS SHARE 表锁,从而阻塞该 DDL 命令直到该事务完成。因此,这些命令不会在针对目标表的连续查询中造成明显的表内容不一致,但它们可能会导致目标表内容与数据库中其他表内容之间出现可见的不一致。
对可串行化事务隔离级别的支持尚未添加到热备复制目标(见 Section 26.4)。 当前热备模式下支持的最严格隔离级别是可重复读。 虽然在主库上把所有永久数据库写操作都放在可串行化事务中执行,能够确保所有备库最终达到一致状态,但在备库上运行的可重复读事务,有时仍可能看到一种瞬态状态,而这种状态与主库上事务的任何串行执行都不一致。
对系统目录的内部访问并不是按当前事务的隔离级别执行的。 这意味着新创建的数据库对象(例如表)对于并发的可重复读和可串行化事务是可见的, 即使这些对象中包含的行并不可见。相反,在较高隔离级别下,显式检查系统目录的查询不会看到表示并发创建数据库对象的那些行。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。