Redrock Postgres 搜索 英文
版本: 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

13.6. 注意事项 #

某些 DDL 命令(现在只有 TRUNCATEALTER TABLE 的表重写形式)并不是 MVCC 安全的。这意味着在截断或重写提交后,如果并行事务使用在 DDL 命令提交之前获取的快照,则该表对它们来说将显示为空。这只会对在 DDL 命令开始之前未访问过相关表的那些事务造成影响,因为任何这样做的事务都至少会持有该表的一个 ACCESS SHARE 表锁,而该锁会一直阻塞 DDL 命令,直到事务完成。因此,这些命令不会对目标表上的连续查询造成表内容的任何明显不一致性,但它们可能会导致目标表与数据库中的其他表的内容之间出现可见的不一致性。

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

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