PostgreSQL 9.6.0 手册 | |||
---|---|---|---|
上一页 | 上一级 | 章 13. 并发控制 | 下一页 |
一些 DDL 命令(当前只有TRUNCATE和表重写形式的ALTER TABLE)对于 MVCC 不是安全的。这意味着在截断或者重写提交之后,该表将对并发事务(如果它们使用的快照是在 DDL 命令提交前取得的)呈现出空表的形态。这只对没有在该 DDL 命令开始前访问所讨论的表的事务存在问题 — 任何在 DDL 命令开始前访问过该表的事务将持有至少一个 ACCESS SHARE 表锁,这将阻塞该 DDL 命令直到该事务完成。因此这些命令对于目标表上的连续查询将不会造成任何明显的表内容不一致,但是它们可能导致目标表内容和数据库中其他表内容之间的不一致。
对于可序列化事务隔离级别的支持还没有被加入到热备复制目标(在第 26.5 节中描述)中。当前在热备模式中支持的最严格的隔离级别是可重复读。虽然在主控机上用可序列化事务执行所有持久化数据库写入将确保所有后备机将最终达到一个一致的状态,但是运行在后备机上的一个可重复读事务有时可能会看到一个短暂的、与主控机上事务的任何串行执行都不一致的状态。