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