(续)不可重复读例如:T1T2T,读取B=100进行运算① R(A)=50R(B)=100T2读取同一数据B,对其进求和=150行修改后将B=200写回数据②R(B)=100库。B←B*21T为了对读取值校对重读B,W(B)=200B已为200,与第一次读取值R(A)=503不一致R(B)=200求和-250(验算不对)不可重复读AnIntroductiontoDatabaseSystem
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)事务T,按一定条件从数据库中读取了某些数据记录后事务T,删除了其中部分记录,当T,再次按相同条件读取数据时,发现某些记录神秘地消失了。(3)事务T,按一定条件从数据库中读取某些数据记录后,事务T,插入了一些记录,当T,再次按相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称为幻影现象(PhantomRow)AnIntroductiontoDatabaseSystem
An Introduction to Database System 不可重复读(续) (2)事务T1按一定条件从数据库中读取了某些数据记录后, 事务T2删除了其中部分记录,当T1再次按相同条件读取数 据时,发现某些记录神秘地消失了。 (3)事务T1按一定条件从数据库中读取某些数据记录后,事 务T2插入了一些记录,当T1再次按相同条件读取数据时, 发现多了一些记录。 后两种不可重复读有时也称为幻影现象(Phantom Row)
3.读“脏”数据读“脏”数据是指:事务T,修改某一数据,并将其写回磁盘事务T,读取同一数据后,T由于某种原因被撤销这时T,已修改过的数据恢复原值,T,读到的数据就与数据库中的数据不一致IT,读到的数据就为“脏”数据,即不正确的数据AnIntroductiontoDatabaseSystem
An Introduction to Database System 3. 读“脏”数据 读“脏”数据是指: ◼ 事务T1修改某一数据,并将其写回磁盘 ◼ 事务T2读取同一数据后,T1由于某种原因被撤销 ◼ 这时T1已修改过的数据恢复原值,T2读到的数据就与 数据库中的数据不一致 ◼ T2读到的数据就为“脏”数据,即不正确的数据
(续)读“脏”数据例如TiT2T将C值修改为200,T,R(C)=1001窗读到C为200C-C*2T由于某种原因撤销,W(C)=200其修改作废,C恢复原值?R(C)=200100这时T,读到的C为200,与数据库内容不一致:ROLLBACK?就是“脏”数据C恢复为100读“脏”数据AnIntroductiontoDatabaseSystem
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, 与数据库内容不一致, 就是“脏”数据
(续)并发控制概述?数据不一致性:由于并发操作破坏了事务的隔离性心并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性*对数据库的应用有时允许某些不一致性,例如有些统计工作涉及数据量很大,读到一些“脏”数据对统计精度没什么影响,可以降低对一致性的要求以减少系统开销*参见爱课程网11.1节动画《并发操作带来的数据不一致性》AnIntroduction toDatabase System
An Introduction to Database System 并发控制概述(续) ❖ 数据不一致性:由于并发操作破坏了事务的隔离性 ❖ 并发控制就是要用正确的方式调度并发操作,使一个用户 事务的执行不受其他事务的干扰,从而避免造成数据的不 一致性 ❖ 对数据库的应用有时允许某些不一致性,例如有些统计工 作涉及数据量很大,读到一些“脏”数据对统计精度没什 么影响,可以降低对一致性的要求以减少系统开销 ❖ 参见爱课程网11.1节动画《并发操作带来的数据不一致性》