2011数据库并发控制.ppt

2011数据库并发控制.ppt

ID:56524827

大小:176.50 KB

页数:46页

时间:2020-06-27

2011数据库并发控制.ppt_第1页
2011数据库并发控制.ppt_第2页
2011数据库并发控制.ppt_第3页
2011数据库并发控制.ppt_第4页
2011数据库并发控制.ppt_第5页
资源描述:

《2011数据库并发控制.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据库并发控制浙江大学软件学院杭诚方教授事务概念事务是构成单一逻辑工作单元的操作集合。事务开始:BEGINTRANSACTION事务提交:COMMIT事务回滚:ROLLBACK事务的ACID特性原子性(Atomicity):事务的所有操作在数据库中要么全部正确反映出来要么全部不反映。一致性(Consistency):事务的隔离执行(即没有并发执行的其它事务)保持数据库的一致性。隔离性(Isolation):多个事务并发执行时,系统必须保证,对任一对事务Ti和Tj,在Ti看来,Tj或者在Ti开始之前已经停止执行,或者在T

2、i完成之后开始执行。这样,每个事务都感觉不到系统中有其它事务在并发地执行。持久性(Durability):一个事务成功完成后,它对数据库的改变必须是永久的,即使系统可能出现故障。ACID特性实现原子性和持久性:由DBMS的恢复管理部件来实现,保证发生故障时一个事务对数据库的修改要么全部反映到数据库中,要么完全不反映。采用的技术:日志,备份ACID特性实现一致性:单个事务的一致性由应用程序员负责。完整性约束的自动检查对此提供支持。隔离性:多个事务并发执行的正确性由DBMS的并发控制机制提供支持,通过对并发事务的合理调度来

3、保证每个事务的一致性。事务调度调度是指令在系统中执行的时间顺序。一组事务的一个调度必须包含这一组事务的全部指令,并且必须保持指令在各个事务中出现的顺序。操作系统可能产生许多不同的调度,有些可能使数据库处于不一致状态,DBMS必须保证事务调度执行后数据库总处于一致状态。事务调度T1从帐户A过户¥50到帐户B。T1:read(A);A:=A-50;write(A);read(B);B:=B+50;write(B).T2从帐户A过户10%的存款余额到帐户B.T2:read(A);temp:=A*0.1;A:=A-temp;w

4、rite(A);read(B);B:=B+temp;write(B).执行前A:¥1000,B:¥2000事务调度调度1:串行调度,T2跟在T1之后执行后A:¥855,B:¥2145调度2:串行调度,T1跟在T2之后执行后A:¥850,B:¥2150事务调度调度3:并发调度等价于调度1,执行后A:¥855,B:¥2145T1T2read(B);B:=B+50;write(B).read(A);temp:=A*0.1;A:=A-temp;write(A);read(A);A:=A-50;write(A);read(B);

5、B:=B+temp;write(B).事务调度调度4:并发调度不等价于任何串行调度,执行后A:¥950,B:¥2100T1T2write(A);read(B);B:=B+50;write(B).read(A);temp:=A*0.1;A:=A-temp;write(A);read(B);read(A);A:=A-50;B:=B+temp;write(B).可串行化考虑哪些调度能保证一致性,哪些不能的问题。可串行化:若调度S与一个串行调度的执行有相同的效果,则称调度S是可串行化的。例如,调度3是可串行化的调度4不是可串行

6、化的可恢复性考虑发生事务故障的情况下,什么样的调度是可接受的。可恢复调度无级联调度可恢复调度可恢复调度应满足:对于每一对事务Ti和Tj,如果Tj读取了由Ti所写的数据项,则Ti先于Tj提交。例一个不可恢复的调度TiTjread(A);write(A);read(A);提交read(B);无级联调度级联回滚:因一个事务故障导致一系列事务回滚的现象。无级联调度应满足:对于每对事务Ti和Tj,如果Tj要读取由Ti所写的数据项,则Ti必须在Tj这一读取前提交。某调度是无级联调度则该调度一定是可恢复调度。Oracle的事务处理O

7、racle通过COMMIT、ROLLBACK、SAVEPOINT、SETTRANSACTION来实现用户对事务的控制。COMMIT表示结束当前事务T,事务T所做的更新永久地写入数据库,施加在事务T上的所有的封锁及其所占用的一切资源自动释放,这时其他事务可以查询和更新事务T递交后的数据库。ROLLBACK表示结束当前事务T,事务T所做的更新全部撤消,施加在事务T上的所有的封锁及其所占用的一切资源自动释放,这时其他事务可以查询和事务T执行前的数据库。注意:当应用程序或数据库服务器发生严重故障时,Oracle将隐式地执行RO

8、LLBACK。SAVEPOINT回滚一个很大的事务会增加不必要的时间和空间的开销,可以将一个大事务分成许多小段,在每个小段的开始用SAVEPOINT[指定点]语句作为一个保存点,这样在执行事务时若发生错误,用ROLLBACKTOSAVEPOINT[指定点]语句回滚到最近的(如没有指定点)或指定的保存点,而不是撤消整个事务。SETT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。