不可重复读(续) 不可重复读包括三种情况: (1)事务T1读取某一数据后,事务T2对其做了修改, 当事务T1再次读该数据时,得到与前一次不同的 An Introduction to Database System
An Introduction to Database System 不可重复读(续) ❖不可重复读包括三种情况: (1)事务T1读取某一数据后,事务T2对其做了修改, 当事务T1再次读该数据时,得到与前一次不同的 值
不可重复读(续) 例如 ■T1读取B=100进行运算 ①R(A)=50 R(B)=100 ■T2读取同一数据B,对其进 求和=150 行修改后将B=200写回数据 R(B)=100 库 B←B*2 ■T1为了对读取值校对重读B, (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 (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读到的数据就为“脏”数据,即不正确的数据
读“脏”数据(续) 例如 ①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,与数据库内容 不一致,就是“脏” 数据