文档介绍:2017 年3月 24 日第十一章并发控制 1第十一章并发控制 问题的产生 事务的并发执行可能产生的不一致性★ 串行化调度★ 并发控制机制★ SQL Server 的加锁机制(自学) 2017 年3月 24 日第十一章并发控制 2 问题的产生?多用户数据库系统的存在允许多个用户同时使用的数据库系统–飞机定票数据库系统–银行数据库系统特点: 在同一时刻并发运行的事务数可达数百个 2017 年3月 24 日第十一章并发控制 3事务串行执行?每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行。?不能充分利用系统资源,发挥数据库共享资源的特点。 T1 T2 T3 2017 年3月 24 日第十一章并发控制 4事务交叉并发方式?在单处理机系统中,事务的并行执行是这些并行事务的并行操作轮流交叉运行。?单处理机系统中的并行事务并没有真正地并行运行,但能够减少处理机的空闲时间,提高系统的效率。 2017 年3月 24 日第十一章并发控制 5事务同时并发方式?多处理机系统中,每个处理机可以运行一个事务, 多个处理机可以同时运行多个事务,实现多个事务真正的并行运行。 2017 年3月 24 日第十一章并发控制 6问题的产生?事务并发执行带来的问题–会产生多个事务同时存取同一数据的情况–可能会存取和存储不正确的数据,破坏事务一致性和数据库的一致性 2017 年3月 24 日第十一章并发控制 7 事务的并发执行可能产生的不一致性 T1 T2 T1 T2 T1 T2 ①读 A=50 ①读 C=100 ①读 A=16 读 B=100 执行 C=C *2②读 A=16 求和=150 写回 C=200 ③执行 A=A-1 ②读 B=100 ②读 C=200 写回 A=15 执行 B=B *2 ③撤销…提交写回 B=200 C恢复为 100④执行 A=A-1 ③读 A=50写回 A=15 读 B=200 求和=250 (验算不对)不可重复读读“脏”数据丢失修改 2017 年3月 24 日第十一章并发控制 8产生的不一致性的根本原因操作冲突如果两个事务发生的两个操作都针对于同一数据项,只要其中有一个是写操作,则这两个操作是冲突的。 2017 年3月 24 日第十一章并发控制 9 串行化调度 调度 可串行化调度 2017 年3月 24 日第十一章并发控制 10 调度调度:安排多个事务中的操作的执行次序。设有事务, T1 : R1(x) W1(y) T2 : R2(x) W2(x) T3 : R3(y) W3(y) : : Ri(x) 表示事务 Ti对数据项 x进行读操作; Wi(x) 表示事务 Ti对数据项 x进行写操作; S1 : R1(x)W1(y) R2(x)W2(x) R3(y)W3(y) S2 : R2(x)R1(x)W1(y)R3(y)W2(x)W3(y)