Mar*_*oma 6 sql postgresql transaction-isolation
PostgreSQL 12 的 REPEATABLE_READ 事务隔离级别可防止脏读、不可重复读和幻读。与 READ_COMMITTED 隔离级别相反,REPEATABLE_READ 隔离级别可防止不可重复读取和幻像读取。
我想这是有代价的,否则就会使两者平等。postgres如何保证这3种读现象不会发生?
Lau*_*lbe 12
READ COMMITTED并且REPEATABLE READ使用相同的技术:确定事务可以看到表中行的哪个版本的快照。不同之处在于READ COMMITTED,使用 时,快照是在每个语句开始时拍摄的,以便每个新语句都可以看到之前已提交的所有内容,而事务REPEATABLE READ对所有语句使用相同的快照。
有两个后果:
\n如果有的话,REPEATABLE READ比 便宜READ COMMITTED,因为它需要更少的快照
REPEATABLE READ提供比 SQL 标准所需的更高的隔离 \xe2\x80\x93 数据库似乎根本没有改变
您支付的价格REPEATABLE READ不同:
您面临序列化错误的风险,这迫使您重复交易
\nVACUUMREPEATABLE READ事务开始后无法清除标记为死的行
| 归档时间: |
|
| 查看次数: |
3019 次 |
| 最近记录: |