数据库系统及应用.pptx
第10章并发控制Chp.1516intextbook主讲人:余艳玮ywyu@ustc.edu.cn
Databasesprotection数据库保护:排除和防止各种对数据库的干扰破坏,确保数据安全可靠,以及在数据库遭到破坏后尽快地恢复数据库保护通过四个方面来实现数据库的恢复技术[Chp.17]Dealwithfailure并发控制技术[Chp.1516]Dealwithdatasharing完整性控制技术[notdiscuss]Enableconstraints安全性控制技术[notdiscuss]Authorizationandauthentication
ConcurrencyControlT1 T2… TnDB(consistencyconstraints)多个事务同时存取共享的数据库时,如何保证数据库的一致性?
主要内容并发操作与并发问题并发事务调度与可串性
(SchedulingandSerializability)锁与可串性实现(Locks)
一、并发操作和并发问题在多用户DBS中,如果多个用户同时对同一数据进行操作称为并发操作并发操作使多个事务之间可能产生相互干扰,破坏事务的隔离性(Isolation)DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的一致性,避免产生不正确的数据并发操作丢失更新脏读不一致分析并发操作通常会引起三类问题
1、丢失更新问题时间事务T1事务T2数据库中A的值110002Read(A,t)3Read(A,t)4t=t-1005t=t+1006Write(A,t)7Commit9008Write(A,t)9Commit1100
A=1000A:1000……事务T1事务T2缓冲区37A=9009A=11002A:10006A:9008A:1100基于延迟更新的事务执行示例数据库服务器客户机延迟更新:事务Commit后才将所有更新写入数据库
A=1000A:1000……事务T1事务T2缓冲区32A:1000基于立即更新的事务执行示例数据库服务器客户机立即更新:事务的每次更新操作立即将更新结果写入数据库6A:900A=9008A:1100A=1100
2、脏读问题时间事务T1事务T2数据库中A的值110002Read(A,t)3t=t-1004Write(A,t)5Read(A,t)6Rollbackt=t+1009007Write(A,t)8Commit1000脏数据:未提交并且随后又被撤销的数据称为脏数据
3、不一致分析问题时间事务T1事务T212Read(A,t)Read(B,t)3t=t-1004Read(A,v)5Write(A,t)6CommitSum=t+v7Commit不一致分析问题:事务读了过时的数据
4、问题如何解决?一种方法:让所有事务一个一个地串行执行一个事务在执行时其它事务只能等待不能充分利用系统资源,效率低下为了充分发挥DBMS共享数据的特点,应允许事务并发执行但必须保证事务并发执行的正确性必须用正确的方法调度执行事务的并发操作
二、调度(Schedule)单击此处添加正文,文字是您思想的提炼,为了演示发布的良好效果,请言简意赅地阐述您的观点。Write(B,t) Write(B,s)04t?t+100 s?s?2Read(B,t) Read(B,s)03单击此处添加正文,文字是您思想的提炼,为了演示发布的良好效果,请言简意赅地阐述您的观点。Write(A,t) Write(A,s)02t?t+100 s?s?2T1: Read(A,t) T2: Read(A,s)01单击此处添加正文,文字是您思想的提炼,为了演示发布的良好效果,请言简意赅地阐述您的观点。Constraint:A=B05Example
二、调度(Schedule)T1 T2 A BRead(A,t);t?t+100 25 25Write(A,t); 125 25Read(B,t);t?t+100;Write(B,t); 125 125Read(A,s);s?s?2;Write(A,s); 250 125Read(B,s);s?s?2;Write(B,s); 250 250ScheduleA
二、调度(Schedule)0102T1 T2 A BRead(A,s);s?s?2; 25 25Write(A,s); 50 25Read(B,s);s?s?2;Write(B,s); 50 50Read(A,t);t?t+100Wri