数据库系统实用教程-徐洁磐-database-05.ppt

上传人:bao****ty 文档编号:132864356 上传时间:2020-05-21 格式:PPT 页数:105 大小:626.50KB
返回 下载 相关 举报
数据库系统实用教程-徐洁磐-database-05.ppt_第1页
第1页 / 共105页
数据库系统实用教程-徐洁磐-database-05.ppt_第2页
第2页 / 共105页
数据库系统实用教程-徐洁磐-database-05.ppt_第3页
第3页 / 共105页
数据库系统实用教程-徐洁磐-database-05.ppt_第4页
第4页 / 共105页
数据库系统实用教程-徐洁磐-database-05.ppt_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《数据库系统实用教程-徐洁磐-database-05.ppt》由会员分享,可在线阅读,更多相关《数据库系统实用教程-徐洁磐-database-05.ppt(105页珍藏版)》请在金锄头文库上搜索。

1、第五章事务处理 并发控制与故障恢复技术 5 1事务处理 3 5 1事务处理 5 1 1事务5 1 2事务的性质5 1 3事务活动5 1 4有关事务的语句5 1 5事务的组成 4 5 1 1事务 事务 transaction 由某个用户所执行的一个不能被打断的对数据库的操作序列被称为 事务 事务 是应用程序访问数据库的基本逻辑工作单位 事务 通常由一组对于数据库的访问操作组成 在执行过程中按照预定的次序顺序执行 一个 事务 的执行过程是串行的 它将数据库从一个旧的一致性状态转换到一个新的一致性状态 在 事务 的执行过程中 数据库中的数据可能有不一致的现象 但在 事务 执行结束时 系统将保证数据库

2、中数据的一致性 5 5 1 1事务 例 银行的转帐业务 根据输入的两个银行存款帐号A和B 以及转帐金额X 将帐号A的金额减去X 帐号B的金额增加X 其处理过程如下 其中READ A 表示将帐号A的金额读入内存变量A WRITE A 表示将内存变量A的值作为帐号A的金额写入数据库 READ A IF A X THENBEGINA A X WRITE A READ B B B X WRITE B END 对该事务而言 数据库中数据的一致性就是指 帐号A和帐号B的总金额之和不变 6 5 1 2事务的性质 事务具有四个特性 简称为事务的ACID特性 也被称为事务的执行过程必须满足的四条准则 原子性 A

3、tomicity 在一个事务中 所有的数据库访问操作构成一个不可分割的操作序列 这些操作要么全部执行结束 要么一个都不要执行 例 银行转帐 数据库管理系统会自动维护用户事务执行的原子性 事务管理子系统事务日志 7 5 1 2事务的性质 2 一致性 Consistency 一个事务的成功执行总是将数据库从一个一致的状态转换到另一个一致的状态 数据库的 状态 指数据库中所有数据对象的当前取值情况 数据库的一致的状态可以理解为数据库中所有数据的正确性 它要求数据库中的数据必须满足 在数据库中显式定义的各种完整性约束用户心目中的隐式数据约束 8 5 1 2事务的性质 2 一致性 续 事务执行的 一致性

4、 原则基于这样一个假设 在一个事务开始执行之前数据库处于一个一致的状态 如果没有 其它事务的干扰和系统故障 那么当该事务执行结束时数据库仍然处于一致的状态 事务的 一致性 特性由两方面完成DBMS中的 数据完整性保护 子系统编写事务的应用程序员 9 5 1 2事务的性质 3 隔离性 Isolation 一个事务的执行与并发执行的其它事务之间是相互独立的 互不干扰 这被称为事务执行的 隔离性 事务执行的 隔离性 要求 多个事务并发执行的最终结果 应该与它们的某种串行执行的最终结果相等 这被称为并发事务的可串行化 事务执行的 隔离性 是由DBMS的并发控制子系统来实现的 在数据库系统中 当多个事务

5、并发执行时 每个事务都可以看成只有自己在执行 只有当它与其它事务发生封锁冲突时 才会感觉到其它事务的存在 例如 联网售票系统 10 5 1 2事务的性质 4 持久性 Durability 一个事务一旦完成其全部操作后 它对数据库的所有更新应永久地反映在数据库中 即使以后系统发生故障也应该能够通过故障恢复来保留这个事务的执行结果 事务的 持久性 是由DBMS的恢复管理子系统实现的 数据库管理系统通过其 事务管理 子系统 含 并发控制 子系统 恢复管理 子系统 数据完整性保护 子系统来实现事务的原子性 A 一致性 C 隔离性 I 和持久性 D 11 例 银行的转帐业务 从银行存款帐号A 当前金额1

6、0000元 转5000元到银行存款帐号B 当前金额20000元 12 5 1 3事务活动 13 5 1 3事务活动 为了精确地描述一个事务的工作过程 我们建立了一个抽象的事务模型 以表示事务的状态变迁情况 事务的状态变迁图 14 5 1 3事务活动 活动 状态事务在开始执行后 立即进入 活动 状态 在 活动 状态中 事务将执行对数据库的访问操作 在DBMS的事务管理子系统看来 用户事务对数据库的访问操作就是对数据库中数据的读 写操作 读 操作 将数据读入用户事务的私有工作区间如果该数据当前不在DBMS的系统缓冲区中 那么DBMS首先将该数据从磁盘读入系统缓冲区 然后再将其拷贝到用户事务的私有工

7、作区 写 操作 将修改后的数据 写入 数据库这里的 写 操作并不是立即将数据永久性地写入磁盘 很可能暂时存放在DBMS的系统缓冲区中 15 5 1 3事务活动 预提交 状态当事务的最后一条访问语句执行结束之后 事务进入 预提交 状态 此时事务对于数据库的访问操作虽然已经执行结束 但其对于数据的修改结果可能还在内存的系统缓冲区中 必须将其真正写入数据库的磁盘 事务在 预提交 阶段 必须确保将当前事务的所有修改操作的执行结果真正写入到数据库的磁盘中去 在所有 写 磁盘操作执行结束后 事务就进入 提交 状态 在 预提交 阶段 虽然事务本身的操作命令已经执行结束 但是在写磁盘的过程中仍然会发生系统故障

8、 从而导致当前事务的执行失败 在 预提交 失败后 当前事务也将被放弃 abort 事务转而进入 失败 状态 16 5 1 3事务活动 失败 状态处于 活动 状态的事务在顺利到达并执行完最后一条语句之前就中止执行 或者在 预提交 状态下因发生系统故障而中止执行时 我们称事务进入 失败 状态 事务从 活动 状态转变为 失败 状态的原因应用程序 或用户 主动放弃 abort 当前事务因并发控制的原因而被放弃的事务封锁申请的超时等待死锁发生系统故障事务从 预提交 状态转变为 失败 状态的原因发生系统故障 17 5 1 3事务活动 异常中止 状态处于 失败 状态的事务 很可能已对磁盘中的数据进行了一部分

9、修改 为了保证事务的原子性 系统应该撤消 undo操作 该事务对数据库已作的修改 在撤消操作完成以后 事务将被打上一个放弃的标志 aborted 转而进入 异常中止 状态 回退 rollback 对事务的撤消操作也称为事务的 回退 或 回滚 事务的 回退 由DBMS的 恢复子系统 实现 在事务进入 异常中止 状态后 系统有两种选择 作为一个新的事务 重新启动取消事务 18 5 1 3事务活动 提交 状态事务进入 预提交 状态后 并发控制子系统 将检查该事务与并发执行的其它事务之间是否发生干扰现象 在检查通过以后 系统执行提交 commit 操作 把对数据库的修改全部写到磁盘上 并通知系统 事务

10、已成功地结束 为事务打上一个提交标志 committed 事务就进入 提交 状态 不论是 提交 状态 还是 异常中止 状态 都意味着一个事务的执行结束 19 5 1 4有关事务的语句 事务 除了由一组对于数据库的访问操作构成以外 通常还应该包括少量的事务控制语句 用于定义一个事务的开始和结束 包括正常结束和非正常结束 因此 与事务有关的控制语句主要有三条 事务的开始 begintransaction 用于开始一个事务 事务的结束用于终止一个事务 包括事务的正常结束和非正常结束 正常结束提交事务 committransaction 非正常结束回退事务 rollbacktransaction 20

11、 5 1 4有关事务的语句 Begintransaction现有的关系数据库管理系统并没有提供一个用于定义从什么时候开始一个事务的控制语句 事务的启动是隐式的 可以通过三种方式来启动一个新的事务 数据定义命令 DDL 每一条数据定义命令都将被作为一个单独的事务来执行 在此之前的用户事务将被提动提交 将系统设为自动提交方式 打开自动提交标志 每一条数据库访问命令都将被作为一个单独的事务来执行 并根据执行结果自动提交或回退 数据操纵命令 DML 在当前用户的前一个事务执行结束之后提交的第一条数据库访问操作之前 数据库管理系统将自动启动一个新的事务 21 5 1 4有关事务的语句 Committra

12、nsaction提交当前事务 事务在执行过程中对于数据库的所有修改操作都将永久地反应到数据库中 并且不可被取消 事务的提交操作也可能失败 其原因包括 发生系统故障在提交阶段执行的数据完整性检查在事务提交失败后 用户可以通过回退 Rollback 操作来取消当前事务 由系统自动提交的事务 如果提交失败 系统将自动执行事务的回退操作 22 5 1 4有关事务的语句 Rollbacktransaction取消在该事务执行过程中的所有操作 回滚该事务至事务的起点 以便重新执行或放弃 abort 该事务 检查点 savepoint 在事务的执行过程中 系统可以为该事务设置若干个检查点 用户事务可以使用R

13、ollback命令将当前事务回退到前面的某个检查点sp 放弃在检查点sp之后 回退操作之前执行的对数据库的所有访问操作 并继续执行当前事务 不带参数 检查点 的回退操作将结束并放弃整个事务 23 5 1 4有关事务的语句 除了上述三条事务控制语句外 数据库管理系统通常还会提供下述几种与事务有关的控制命令 DCL 设置事务的自动提交命令SETAUTOCOMMITON OFF设置事务的类型SETTRANSACTIONREADONLY READWRITE设置事务的隔离级别SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTED READCOMMITTED READREP

14、EATABLE SERIALIZABLE 上述三条命令并不是事务的组成部分 只是用于定义新事务的执行方式 24 5 1 4有关事务的语句 SETTRANSACTIONREADONLY READWRITE定义在这之后启动的所有事务在执行过程中对数据库的访问方式 READONLY 只读型事务在事务的运行过程中只能执行对数据库的 读 操作 而不能执行 更新 类型的操作 直到定义新的事务类型READWRITE 读 写型事务在事务的运行过程中可以执行对数据库的 读 写 操作 这是事务的缺省类型定义 25 5 1 4有关事务的语句 SETTRANSACTIONISOLATIONLEVEL 定义当前用户的事

15、务与其它并发执行事务之间的隔离级别 事务的隔离级别与所采用的封锁策略紧密相关 READUNCOMMITTED 未提交读在该方式下 当前事务不需要申请任何类型的封锁 因而可能会 读 到未提交的修改结果禁止一个事务以该方式去执行对数据的 写 操作 以避免 写 冲突现象 READCOMMITTED 提交读在 读 数据对象X之前需要先申请对数据对象X的 共享性 封锁 在 读 操作执行结束之后立即释放该封锁 以避免读取未提交的修改结果 26 5 1 4有关事务的语句 READREPEATABLE 可重复读在 读 数据对象X之前需要先申请对数据对象X的 共享性 封锁 并将该封锁维持到当前事务的结束 可以避

16、免其它的并发事务对当前事务正在使用的数据对象的修改 SERIALIZABLE 可序列化 可串行化 并发事务以一种可串行化的调度策略实现其并发执行 以避免它们相互之间的干扰现象 不管采用何种隔离级别 在事务 写 数据对象X之前需要先申请对数据对象X的 排它性 封锁 并将该封锁维持到当前事务的结束 事务的隔离级别与封锁策略之间的关系 27 5 1 5事务的组成 数据对象数据对象的大小可以是一个属性值 一个元组 一张表 元组的集合 或整个数据库 也可以是一个磁盘块 在这里我们并不严格区分它们 而是简单称其为 数据对象A 或简称 数据A 数据对象的地址空间在用户事务与数据库进行数据交换时 存在三种与数据有关的地址空间概念 保存这些数据对象的磁盘空间数据库管理系统所使用的内存缓冲区事务的局部地址空间 内存变量 同一个数据对象在不同的地方可能具有不同的值 28 5 1 5事务的组成 操作事务的开始 STARTT0将数据对象A的值从磁盘中读入内存缓冲区INPUT A 将内存缓冲区中数据对象A的值写入磁盘OUTPUT A 将内存缓冲区中数据对象A的值读入内存变量tREAD A t 隐含着一个INPUT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号