支持的版本:当前 (17) / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0

13.6. 注意事项 #

一些 DDL 命令,目前只有 TRUNCATEALTER TABLE 的表重写形式不是 MVCC 安全的。这意味着在截断或重写提交后,如果并发事务使用的是在 DDL 命令提交之前拍摄的快照,则表对于这些并发事务将显示为空。这只会对在 DDL 命令启动之前没有访问过相关表的事务产生问题 — 任何这样做过的事务至少会持有 ACCESS SHARE 表锁,这将阻止 DDL 命令直到该事务完成。因此,这些命令不会导致目标表连续查询的目标表内容出现任何明显的不一致,但它们可能会导致目标表和数据库中其他表的内容之间出现可见的不一致。

对可序列化事务隔离级别的支持尚未添加到热备复制目标(在第 26.4 节中描述)。热备模式下当前支持的最严格隔离级别是可重复读。虽然在主服务器上执行所有可序列化事务中的永久数据库写入将确保所有备用服务器最终达到一致状态,但在备用服务器上运行的可重复读事务有时可能会看到与主服务器上任何串行执行的事务不一致的瞬态状态。

对系统目录的内部访问不是使用当前事务的隔离级别完成的。这意味着新创建的数据库对象(如表)对于并发的可重复读和可序列化事务是可见的,即使它们包含的行不可见。相比之下,在较高的隔离级别中,显式检查系统目录的查询不会看到表示并发创建的数据库对象的行。

提交更正

如果您在文档中看到任何不正确、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。