将并发分析图与边的含义匹配
正确答案:等待图 → 请求锁的事务指向持有冲突锁的事务;优先图 → 先执行冲突操作的事务指向后执行者
等待图用于诊断当前锁等待死锁,优先图用于判断一个调度是否冲突可串行化
Tab / Shift+Tab 切换项目,方向键选择;Ctrl+Enter 提交答案
请先完成作答
正确答案:等待图 → 请求锁的事务指向持有冲突锁的事务;优先图 → 先执行冲突操作的事务指向后执行者
等待图用于诊断当前锁等待死锁,优先图用于判断一个调度是否冲突可串行化
Tab / Shift+Tab 切换项目,方向键选择;Ctrl+Enter 提交答案
请先完成作答
正确答案:环上的事务形成循环等待,即发生死锁
等待图和优先图的节点虽然都是事务,但边的含义不同,不能混用结论
可按数字键选择;请先作答,再提交答案
请先完成作答
正确答案:根据不相容锁请求构造或更新等待图 → 检测等待图中是否存在有向环 → 在环上按代价和公平策略选择牺牲事务 → 回滚牺牲事务并释放其锁 → 唤醒可继续执行的等待事务并避免长期饥饿
检测负责发现回路,解除通过回滚打破回路,还要考虑重复牺牲造成的活锁
Tab 切换移动按钮,Enter 或空格移动;Ctrl+Enter 提交答案
请先完成作答
正确答案:不同事务的读—写、不同事务的写—读、不同事务的写—写
冲突要求不同事务访问同一数据项且至少一个操作是写,交换顺序可能改变可见结果
可按数字键选择;请先作答,再提交答案
请先完成作答
正确答案:不遵守,事务进入收缩阶段后不能再申请新锁
2PL 把事务分为只扩张锁集合和只收缩锁集合的两段,第一次解锁标志进入收缩阶段
可按数字键选择;请先作答,再提交答案
请先完成作答
正确答案:普通 2PL → 保证冲突可串行化,但锁可在提交前逐步释放;严格 2PL → 通常把写锁保持到提交或回滚,减少级联回滚风险;2PL 的共同边界 → 仍可能因不同加锁顺序形成死锁
可串行化保证与无死锁是两个不同目标,2PL 只直接保证前者
Tab / Shift+Tab 切换项目,方向键选择;Ctrl+Enter 提交答案
请先完成作答
对照答案:T1 先取得 X(A),T2 先取得 X(B);随后 T1 请求 X(B) 等待 T2,T2 请求 X(A) 等待 T1。两者都仍处于扩张阶段,没有解锁后再加锁,因此遵守 2PL;但加锁顺序相反形成循环等待。2PL 保证调度的可串行化性质,不保证死锁不会发生
请先在头脑中组织答案,再查看对照答案