【发布时间】:2013-04-01 11:35:38
【问题描述】:
鉴于这种情况:
TIME TRANSACTION 1 TRANSACTION 2
1sec BEGIN
2sec INSERT RECORDS INTO T1
3sec (doing other things) BEGIN
4sec (doing other things) (doing other things)
5sec COMMIT (doing other things)
6sec SELECT * FROM T1 <<- GETS ROWS INSERTED BY T1
根据 postgres 文档:
还要注意两个连续的 SELECT 命令可以看到不同的数据, 即使它们在单个事务中,如果其他 事务在执行第一个 SELECT 期间提交更改
问题是:如何避免SELECT 在事务开始和查询开始之间提交行。
【问题讨论】:
标签: sql postgresql concurrency transactions isolation-level