第6章 失误处理及并发控制.pptVIP

  • 2
  • 0
  • 约6.84千字
  • 约 35页
  • 2015-08-12 发布于广东
  • 举报
并发异常 任务1:读出数据A,将其加上50,写回 任务2:读出数据A,将其加上40,写回 假设A原值为100,串行执行结果:190 并发执行,可能出现各种可能结果 串行化结果:X:=190 并行:R1(A), R2(A), W1(A), W2(A), COMMIT1, COMMIT2。结果:X:=140,错误。 问题:第6步,A2写了A1写后未提交的脏数据。 串行化结果:X:=140 并型:R1(A),W1(A),R2(A),ROLLBACK1,W2(A) , COMMIT2。结果,X:=190,错误。 问题:第4步,A2读了A1写后未提交的脏数据。 串行化结果:X:=190 并行:R1(A),R2(A),W1(A), COMMIT1,W2(A) , COMMIT2。结果,X:=140,错误。 问题:第2、6步,执行第6前X已经不是第2步读出的100,已经是140。A1对A2正在使用的记录数据作了修改。 区别:2步A2没有读A1修改且尚未提交的脏数据(不是脏读);7步A2没有写A1修改且尚未提交的脏数据(不是脏写) 若要避免不可重复读的发生,可以锁定(S)SELECT语句返回的所有记录(10条),别的进程不能修改。 串行化结果:两个事务都满足规则,都返回YES。 并行:同一事务中相同的两次读,结果集记录个数增加。 Oracle中,使用谓词锁避免幻影读,即满足SELECT语

文档评论(0)

1亿VIP精品文档

相关文档