意歐库发制8的详爱座制萄 表10.1发生丢失更新的过程 顺序 任务 操作 库存量 T1读库存量 50 T2读库存量 50 T1库存量=50+100 3456 T2库存量50-40 T1写库存量 150 T2写库存量 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 顺序 任务 操作 库存量 1 T1 读库存量 50 2 T2 读库存量 50 3 T1 库存量=50+100 4 T2 库存量=50-40 5 T1 写库存量 150 6 T2 写库存量 10 表10.1 发生丢失更新的过程
意歐库发制8的详爱座制萄 令读“脏数据” 当T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2 使用了T1的结果,而在T2操作之后T1又回滚,这时引起的错误是T2读取 了T1的“脏数据” 表10.2发生读“脏数据”的过程 顺序 任务 操作 库存量 50 123 T1读库存 库存量=50+100 T1写库存量 150 读库存量 150 577 T2库存量150-40 T1 ROLLBACK T2写库存量 10 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 ❖ 读“脏数据” 当T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2 使用了T1的结果,而在T2操作之后T1又回滚,这时引起的错误是T2读取 了T1的“脏数据”。 表10.2 发生读“脏数据”的过程 顺序 任务 操作 库存量 1 T1 读库存量 50 2 T1 库存量=50+100 3 T1 写库存量 150 4 T2 读库存量 150 5 T2 库存量=150-40 7 T1 ROLLBACK 7 T2 写库存量 10
意歐库发制8的详爱座制萄 令不可重复读 读取数据A后,T2执行了对A的更新,当T1再次读取数据A(希 望与第一次是相同的值)时,得到的数据与前一次不同,这时引起的错 误称为“不可重复读”。 表10.3发生“不可重复读”的过程 顺序任务 操作 库存量A入库量B T1读A=50 100 T1读B=100 求和=50+100 3456789 T2读B=100 T2执行BB米4 T2回写B=400 50 400 T1|读A=50 50 TI 读B=400 400 T1求和=450(验算不对) 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 ❖ 不可重复读 当T1读取数据A后,T2执行了对A的更新,当T1 再次读取数据A(希 望与第一次是相同的值)时,得到的数据与前一次不同,这时引起的错 误称为“不可重复读”。 表10.3 发生“不可重复读”的过程 顺序 任务 操作 库存量A 入库量B 1 T1 读A=50 50 100 2 T1 读B=100 3 T1 求和=50+100 4 T2 读B=100 50 5 T2 执行B=B*4 6 T2 回写B=400 50 400 7 T1 读A=50 50 8 T1 读B=400 400 9 T1 求和=450(验算不对)