假设存款余额x:1000元,甲事务取走存款300元,乙事务取走存款200元,其执行时间如下:甲事务 时间 乙事务读x t1 t2 读x 更新x二x—300 t3 14 更新x:x—200 如何实现这两个事务的并发控制? (计算题)
答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。
答案:如果按照题中的顺序执行甲乙两个事务,则最后的x为800,而不是正确的500。为此,采用封锁的方法,将甲事务修改为: WHILE(x上已有排他锁) {等待 } 对x加上排他锁读x 更新x=x-300 释放排他锁将乙事务修改为: { 等待 } 对x加上排他锁读x 更新x=x-200 释放排他锁可以说明如下:甲事务 时间 乙事务 XLOCK x t1 获得 t2 XLOCK x 等待更新x=x-300 t3 等待 x=700 Commit t4 等待 UNLOCKx t5 等待 t6 获得XLOCK x t7 更新x=x-200 x=500 t8 Commit t9 UNLOCK x