不可重复读(续) 例如: T1 T1读取B=100进行运算 ①R(A=50 ■T2读取同一数据B,对其进 R(B)=100 求和=150 行修改后将B=200写回数据 R(B)=100 库。 B←B*2 ■T1为了对读取值校对重读B, W(B)=200 B已为200,与第一次读取值 ③R(A=50 R(B)=200 不一致 和=250 (验算不对) 不可重复读 An Introduction to Database System
An Introduction to Database System 不可重复读(续) ◼ T1读取B=100进行运算 ◼ T2读取同一数据B,对其进 行修改后将B=200写回数据 库。 ◼ T1为了对读取值校对重读B, B已为200,与第一次读取值 不一致 T1 T2 ① R(A)=50 R(B)=100 求和=150 ② R(B)=100 B←B*2 W(B)=200 ③ R(A)=50 R(B)=200 和=250 (验算不对) 不可重复读 例如:
不可重复读(续) (2)事务T1按一定条件从数据库中读取了某些数据记录后,事 务T2删除了其中部分记录,当T1再次按相同条件读取数据 时,发现某些记录消失了 (3)事务T1按一定条件从数据库中读取某些数据记录后,事务 T2插入了一些记录,当T1再次按相同条件读取数据时,发 现多了一些记录。 后两种不可重复读有时也称为幻影现象( Phantom row) An Introduction to Database System
An Introduction to Database System 不可重复读(续) (2)事务T1按一定条件从数据库中读取了某些数据记录后,事 务T2删除了其中部分记录,当T1再次按相同条件读取数据 时,发现某些记录消失了 (3)事务T1按一定条件从数据库中读取某些数据记录后,事务 T2插入了一些记录,当T1再次按相同条件读取数据时,发 现多了一些记录。 后两种不可重复读有时也称为幻影现象(Phantom Row)
3.读“脏”数据 读“脏”数据是指: ■事务T1修改某一数据,并将其写回磁盘 ■事务T2读取同一数据后,T1由于某种原因被撤销 ■这时T1已修改过的数据恢复原值,T2读到的数据就与 数据库中的数据不一致 ■T2读到的数据就为“脏”数据,即不正确的数据 An Introduction to Database System
An Introduction to Database System 3. 读“脏”数据 读“脏”数据是指: ◼ 事务T1修改某一数据,并将其写回磁盘 ◼ 事务T2读取同一数据后,T1由于某种原因被撤销 ◼ 这时T1已修改过的数据恢复原值,T2读到的数据就与 数据库中的数据不一致 ◼ T2读到的数据就为“脏”数据,即不正确的数据
读“脏”数据(续) 例如 T1 ①R(C)=100 ■T1将C值修改为200, C←C*2 T2读到C为200 W(C)=200 ■T1由于某种原因撤 R(C)=200 销,其修改作废,C 恢复原值100 ■这时T2读到的C为 ③ ROLLBACK C恢复为100 200,与数据库内容 不一致,就是“脏” 数据 读“脏”数据 An Introduction to Database System
An Introduction to Database System 读“脏”数据(续) T1 T2 ① R(C)=100 C←C*2 W(C)=200 ② R(C)=200 ③ROLLBACK C恢复为100 例如 读“脏”数据 ◼ T1将C值修改为200, T2读到C为200 ◼ T1由于某种原因撤 销,其修改作废,C 恢复原值100 ◼ 这时T2读到的C为 200,与数据库内容 不一致,就是“脏” 数据
并发控制概述(续) 令数据不一致性:由于并发操作破坏了事务的隔离 性 ◇并发控制就是要用正确的方式调度并发操作,使 个用户事务的执行不受其他事务的干扰,从而 避免造成数据的不一致性 An Introduction to Database System
An Introduction to Database System 并发控制概述(续) ❖数据不一致性:由于并发操作破坏了事务的隔离 性 ❖并发控制就是要用正确的方式调度并发操作,使 一个用户事务的执行不受其他事务的干扰,从而 避免造成数据的不一致性