@ 《数据库原理及应用》 第7章并发控制 新疆大学 软件学院 张灵飞 nickzhlf@163.com 2025年2月24日星期一 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 新疆大学 软件学院 张灵飞 nickzhlf@163.com 2025年2月24日星期一 《数据库原理及应用》 第7章 并发控制
本章内容 事务并发 并发事务引起的问题 3 可串行化 基于锁的并发控制协议 *活锁与死锁 *多粒度封锁 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 1 Click to add Title 事务并发 2 Click to add Title 并发事务引起的问题 23 Click to add Title 可串行化 14 Click to add Title 基于锁的并发控制协议 15 Click to add Title *活锁与死锁 26 Click to add Title *多粒度封锁
事务并发 @ ■I/O与CPU等可以并行交叉运行 ■并发执行的优点 ◆改善系统的资源利用率 ◆减少短事务的等待时间 ■调度(schedule) ◆一个或多个事务的操作按时间排序的一个序列。 T1 T READ(A) WRITE(A) 一个事务的两个操作在调度中 READ(C) 出现的顺序必须与其在事务内 WRITE(C) 定义的先后顺序一致。 RAED(B) WRITE(B) 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ I/O与CPU等可以并行交叉运行 ◼ 并发执行的优点 ◆改善系统的资源利用率 ◆减少短事务的等待时间 ◼ 调度(schedule) ◆一个或多个事务的操作按时间排序的一个序列。 一个事务的两个操作在调度中 出现的顺序必须与其在事务内 定义的先后顺序一致
本章内容 事务并发 并发事务引起的问题 3 可串行化 基于锁的并发控制协议 *活锁与死锁 *多粒度封锁 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 1 Click to add Title 事务并发 2 Click to add Title 并发事务引起的问题 23 Click to add Title 可串行化 14 Click to add Title 基于锁的并发控制协议 15 Click to add Title *活锁与死锁 26 Click to add Title *多粒度封锁
并发问题 ■读脏数据(dirty read) ◆脏数据(dirty data)是对未提交事务所写数据的统称。 T1 T2 READ(A) √若脏读就造成了数据库的不一 A:=A*0.1 致状态,应严格禁止。 WRITE(A) √若脏读带来的影响足够小,偶 READ(A) 尔可读一次脏数据,它可以提高 COMMIT 并发性,减少事务的等待时间 ROLLBACK 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ 读脏数据(dirty read) ◆脏数据(dirty data)是对未提交事务所写数据的统称。 ✓若脏读就造成了数据库的不一 致状态,应严格禁止。 ✓若脏读带来的影响足够小,偶 尔可读一次脏数据,它可以提高 并发性,减少事务的等待时间
并发问题 ■不可重复读(unrepeatable read) T1 T2 READ(A) READ(B) READ(C) >事务T1的两次读取数据之间,其它 READ(D) READ(A) 事务修改了它要读取的数据,以致两 READ(E) A=A*0.1 次读到的值不同 WRITE(A) . COMMIT >在事务串行执行时,不会出现此现 READ(A) 象 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ 不可重复读(unrepeatable read) ➢事务T1的两次读取数据之间,其它 事务修改了它要读取的数据,以致两 次读到的值不同 ➢在事务串行执行时,不会出现此现 象
并发问题 ■ 丢失更新(1 ost update) T1 T2 READ(A) READ(A) >由两个事务对同一数据并发 WRITEE) A:=A+10 地写入引起 WRITE(A) COMMIT COMMIT 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ 丢失更新(lost update) ➢由两个事务对同一数据并发 地写入引起 A:=A*0.1
本章内容 事务并发 并发事务引起的问题 可串行化 基于锁的并发控制协议 6 *活锁与死锁 *多粒度封锁 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 1 Click to add Title 事务并发 2 Click to add Title 并发事务引起的问题 23 Click to add Title 可串行化 14 Click to add Title 基于锁的并发控制协议 15 Click to add Title *活锁与死锁 26 Click to add Title *多粒度封锁
可串行化 回顾:事务ACID特性中的隔离性? 事务在运行中不受其它事务干扰的方法: ●串行: ◆每个事务依次顺序执行 。并行但控制: ◆事务之间并发执行,DBMS调整事务的调度,使其运行结 果与一次只执行一个事务的结果相同 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ 回顾:事务ACID特性中的隔离性? ➢ 事务在运行中不受其它事务干扰的方法: ⚫ 串行: ◆每个事务依次顺序执行 ⚫ 并行但控制: ◆事务之间并发执行,DBMS调整事务的调度,使其运行结 果与一次只执行一个事务的结果相同
可串行化 串行调度 ■串行调度:不同事务的活动在调度中是一个接一个执行 的,没有交叉的运行。 T1 T2 T1 T2 READ(A) READ(A) A=A+A*0.1 A:=A+10 WRITE(A) WRITE(A) READ(B) READ(B) B:=B+B02 B=B-20 WRITE(B) WRITE(B) READ(A) READ(A) A=A+10 A=A+A*0.1 WRITE(A) WRITE(A) READ(B) READ(B) B.=B.20 B:=B+B*0.2 WRITE(B) WRITE(B) 两个串行调度的结果不同。但只要保持了数据库的一致性,最终的结 果并不重要 新疆人字软仟字阮 爱,激情,进取,感恩 2025年2月24日1U时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ 串行调度:不同事务的活动在调度中是一个接一个执行 的,没有交叉的运行。 ➢ 两个串行调度的结果不同。但只要保持了数据库的一致性,最终的结 果并不重要