这个问题是对上一个更简单的问题的跟进:postgresql 阻塞行为
旧语境:
我想了解 postgresql 的阻塞行为。考虑我有一个从 1:00(阶段 A)开始的插入语句,在 2:00(阶段 B)完成。
但是,我有一些复杂的选择语句:
S1, starting at 0:30, completed at 1:30
S2, starting at 0:30, completed at 2:30
S3, starting at 1:30, completed at 2:30
S4, starting at 1:30, completed at 1:45,
我会得到什么相关的最终结果?从我自己的一次测试中,我意识到 S1,S4 -> 阶段 A。
S2和S3怎么样?
回答:
感谢您的回答,S1->S4都与阶段A相关联。
跟进:
一个更复杂的后续问题。
想象一下,我有一个基于数据库的视图,
Create view db_view1 as select a+random() as a from db
插入(I1)语句是
insert into db select * from db_view1
同样,I1 从 1:00 开始(阶段 A)在 2:00 完成(阶段 B)。但是,另一个客户端实现了相同的插入。以下4种情况:
S5, apply another I1 starting at 0:30, completed at 1:30
S6, apply another I1 starting at 0:30, completed at 2:30
S7, apply another I1 starting at 1:30, completed at 2:30
S8, apply another I1 starting at 1:30, completed at 1:45,
对于 S5-S8,每个场景会发生什么?