版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库并发控制,浙江大学软件学院 杭诚方 教授,事务概念,事务是构成单一逻辑工作单元的操作集合。 事务开始:BEGIN TRANSACTION 事务提交:COMMIT 事务回滚: ROLLBACK,事务的ACID特性,原子性(Atomicity):事务的所有操作在数据库中要么全部正确反映出来要么全部不反映。 一致性(Consistency):事务的隔离执行(即没有并发执行的其它事务)保持数据库的一致性。 隔离性(Isolation):多个事务并发执行时,系统必须保证,对任一对事务Ti和Tj,在Ti 看来,Tj或者在Ti开始之前已经停止执行,或者在Ti完成之后开始执行。这样,每个事务都感觉不到系
2、统中有其它事务在并发地执行。 持久性(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; write(A); read(B); B:=B+temp; write(B).,执行前 A:¥1000, B:¥2000,事务调度,调度1:串行调度,T
4、2跟在T1之后 执行后 A:¥855, B:¥2145 调度2:串行调度,T1跟在T2之后 执行后 A:¥850, B:¥2150,事务调度,调度3:并发调度 等价于调度1,执行后 A:¥855, B:¥2145,事务调度,调度4:并发调度 不等价于任何串行调度, 执行后 A:¥950, B:¥2100,可串行化,考虑哪些调度能保证一致性,哪些不能的问题。 可串行化:若调度S与一个串行调度的执行有相同的效果,则称调度S是可串行化的。 例如,调度3是可串行化的 调度4 不是可串行化的,可恢复性,考虑发生事务故障的情况下,什么样的调度是可接受的。 可恢复调度 无级联调度,可恢复调度,可恢复调度应满
5、足:对于每一对事务Ti和Tj,如果Tj读取了由Ti所写的数据项,则Ti先于Tj提交。 例 一个不可恢复的调度 Ti Tj read(A); write(A); read(A); 提交 read(B);,无级联调度,级联回滚:因一个事务故障导致一系列事务回滚的现象。 无级联调度应满足:对于每对事务Ti和Tj,如果Tj要读取由Ti所写的数据项,则Ti必须在Tj这一读取前提交。 某调度是无级联调度则该调度一定是可恢复调度。,Oracle 的事务处理,Oracle 通过COMMIT、ROLLBACK、SAVEPOINT、SET TRANSACTION来实现用户对事务的控制。,COMMIT,表示结束当前
6、事务T, 事务T所做的更新永久地写入数据库,施加在事务T上的所有的封锁及其所占用的一切资源自动释放,这时其他事务可以查询和更新事务T递交后的数据库。,ROLLBACK,表示结束当前事务T, 事务T所做的更新全部撤消,施加在事务T上的所有的封锁及其所占用的一切资源自动释放,这时其他事务可以查询和事务T执行前的数据库。 注意:当应用程序或数据库服务器发生严重故障时,Oracle将隐式地执行ROLLBACK。,SAVEPOINT,回滚一个很大的事务会增加不必要的时间和空间的开销,可以将一个大事务分成许多小段,在每个小段的开始用SAVEPOINT 指定点 语句作为一个保存点,这样在执行事务时若发生错误
7、,用ROLLBACK TO SAVEPOINT 指定点 语句回滚到最近的(如没有指定点)或指定的保存点,而不是撤消整个事务。,SET TRANSACTION,显式地启动一个事务,语法是: SET TRANSACTION 参数,其中参数 如下: READ ONLY:表示建立只读事务,此事务中执行INSERT、DELETE、UPDATE或SELECT FOR UPDATE都属非法。此事务不指定回滚段。 READ WRITE:表示建立读写事务,此事务中可以执行INSERT、DELETE、UPDATE或SELECT FOR UPDATE。,SET TRANSACTION,ISOLATION LEVEL
8、 SERIALIZABLE:表示任何试图操作已经修改但尚未递交的数据对象的DML事务将失败。 ISOLATION LEVEL READ COMMITTED:这是Oracle的默认设置。表示任何试图操作已经修改但尚未递交的数据对象的DML事务将等待前面的DML解除封锁。 USE ROLLBACK SEGMENT 回滚段名:给事务指定一个回滚段。默认情况,Oracle会自动给该事务指定一个回滚段。,并发控制,(1)事务串行执行 每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行 不能充分利用系统资源,发挥数据库共享资源的特点,并发控制,(2)交叉并发方式(interleaved c
9、oncurrency) 事务的并行执行是这些并行事务的并行操作轮流交叉运行 是单处理机系统中的并发方式,能够减少处理机的空闲时间,提高系统的效率,并发控制,(3)同时并发方式(simultaneous concurrency) 多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行 最理想的并发方式,但受制于硬件环境 更复杂的并发方式机制,事务并发执行带来的问题,可能会存取和存储不正确的数据,破坏事务的隔离性和数据库的一致性 DBMS必须提供并发控制机制 并发控制机制是衡量一个DBMS性能的重要标志之一,并发控制机制的任务,对并发操作进行正确调度
10、 保证事务的隔离性 保证数据库的一致性,T1的修改被T2覆盖了!,数据不一致实例:飞机订票系统,并发操作带来的数据不一致性,丢失修改(lost update) 不可重复读(non-repeatable read) 读“脏”数据(dirty read),丢失修改,丢失修改是指事务1与事务2从数据库中读入同一数据并修改 事务2的提交结果破坏了事务1提交的结果 导致事务1的修改被丢失。,不可重复读,不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。,三类不可重复读,事务1读取某一数据后: 1。事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。 2.
11、事务2删除了其中部分记录,当事务1再次读取数据时,发现某些记录神密地消失了。 3. 事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。,读“脏”数据,事务1修改某一数据,并将其写回磁盘 事务2读取同一数据后 事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值 事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。,什么是封锁,封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁 加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。 封锁是实现并发控制的一个非常重要的
12、技术,基本封锁类型,DBMS通常提供了多种类型的封锁。一个事务对某个数据对象加锁后究竟拥有什么样的控制是由封锁的类型决定的。 基本封锁类型 排它锁(eXclusive lock,简记为X锁) 共享锁(Share lock,简记为S锁),排它锁(X锁),排它锁又称为写锁 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁,共享锁(S锁),共享锁又称为读锁 若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁,Oracle的并发控制,Oracle采用封锁技术保证并发操作的可串行性 Oracle锁的
13、种类 字典锁 数据锁(亦称DML锁),字典锁,ORACLE DBMS内部用于对字典表的封锁 由DBMS在必要的时候自动加锁和释放锁,用户无权控制 字典锁类型 语法分析锁 DDL锁,数据锁,数据锁类型 共享锁(S锁) 排它锁(X锁) 行级共享锁(RS锁) 行级排它锁(RX锁) 共享行级排它锁(SRX锁),数据锁,封锁粒度 行级 表级,数据锁,数据封锁的两种方式 数据封锁由系统控制,对用户是透明的 允许用户用LOCK TABLE语句显式对封锁对象加锁,数据锁,ORACLE数据锁的特点 缺省情况下,读数据不加锁 ORACLE通过回滚段(Rollback Segment)来保证用户不读“脏”数据和可重
14、复读。 优点:提高数据的并发度,数据锁,死锁 采用死锁诊断与解除法 周期性诊断系统中有无死锁 存在死锁,则撤消执行更新操作次数最少的事务,LOCK TABLE,允许用户显式对封锁对象加锁,语法为: LOCK TABLE 表/视图名 IN 封锁模式 MODE NOWAIT; Specify NOWAIT if you want the database to return control to you immediately,封锁模式,ROW SHARE (行共享锁, RS)permits concurrent access to the locked table but prohibits u
15、sers from locking the entire table for exclusive access. ROW SHARE is synonymous with SHARE UPDATE, which is included for compatibility with earlier versions of Oracle Database. ROW EXCLUSIVE (行排他锁, RX) is the same as ROW SHARE, but it also prohibits locking in SHARE mode. ROW EXCLUSIVE locks are automatically obtained when updating, inserting, or deleting.,封锁模式,SHARE UPDATE(synonymous with ROW SHARE) SHARE (共享锁, S) SHARE permits concurrent queries but prohibits updates to the locked table. SHARE ROW EXCLUSIVE (共享行排他锁, SRX) is used to look a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建师范大学《数字信号处理应用二》2023-2024学年第一学期期末试卷
- 福建师范大学《泥塑基础》2021-2022学年第一学期期末试卷
- 机器人行业2024年三季度投融市场报告
- 福建师范大学《机械设计基础》2023-2024学年第一学期期末试卷
- 电气规范考核题
- 泛函分析课件教学课件
- 2024年天津客运驾驶员从业资格证考试答案
- 2024年呼和浩特客运员考试题库及答案详解
- 2024年湖南客运资格证操作考试内容
- 2024年北京客运资格证培训考试题答案
- 级配砂石换填专项施工方案(可编辑)
- 模拟汽车运输振动测试指导书
- 形式发票格式2 INVOICE
- 零基预算在企业环境成本控制中的应用
- 采油树维护保养与操作
- 集油池施工方案Word版
- 卫生院工程施工组织设计方案
- 小学三年级上册道德与法治课件-3.做学习的主人(我和时间做朋友)-部编版(14张)ppt课件
- 玉米育种基地建设项目可行性研究分析报告
- 逻辑在高考语文中的运用
- 电梯维护保养规则
评论
0/150
提交评论