在 PostgreSQL 中,读已提交(Read Committed) 和 可重复读(Repeatable Read) 是最常用的两种事务隔离级别。PostgreSQL 默认使用“读已提交”。 它们的核心区别在于事务能够看到哪个时间点的数据(即数据快照的创建时机),以及它们如何处理并发修改引发的冲突。 以下是详细的区别和对比: 1. 核心区别:可见性快照(Snapshot)的创建时机 这是理解两者差异的最关键点(基于 PostgreSQL 的 MVCC 机制): Read Committed(读已提交): 快照时机:在同一个事务中,每一条 SQL 语句执行前都会重新获取一次最新的快照。 结果:同一事务内的两条相同查询,如果在此期间有其他事务提交了修改,两次查询可能会看到不同的结果。 Repeatable Read(可重复读): 快照时机:在事务中的第一条非控制类 SQL 语句执行时获取一次快照,并在整个事务期间保持不变。 结果:同一事务内的不管查询多少次,看到的数据总是一致的(就像是在事务开始时给整个数据库拍了一张照片)。 --- 2. 读现象(Read Phenomena)对比...