【发布时间】:2021-09-27 15:15:11
【问题描述】:
您能否检查一下我的回答是否适合这些问题?问题 1 是关于丢失更新,问题 2 是关于 2PL(死锁是如何发生的?)
问题 1
我对 (Q1) 的回答
丢失更新问题
原因:
A 的预期最终值为 280,而 B 为 240。但由于丢失更新问题,这两个各自的值无法实现。
对于事务 T1,值 A 在时间 t1 被读取,即 160,值 B 在时间 t2 被读取,即 60。在时间 t2 期间,事务 T2 开始,并且也在读取值 B这被称为脏读。在时间 t4 之后,在事务 1 中计算了值 B,在时间 t6,值 B 已部分提交,即 120,同时在事务 T2 时间 t5 中,值 B 也已计算,现在保持 120 并且正在部分承诺以及。最后,120 的值 B 已在 t7 时间在事务 1 中提交,随后是 120 的值 B,在 t11 时间在事务 2 中提交。这是发生丢失更新问题的时候,事务 1 上的值 B 被事务 T2 上的值 B 覆盖。
版本控制方法 --> 仍然不确定这会在我完成学业后在这里更新我的答案!对此深表歉意!
问题 2
我对 (Q2) 的回答 2PL 中如何发生死锁
【问题讨论】:
标签: database oracle transactions deadlock acid