




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第19章数据库一致性与事务管理 数据库中的数据是每时每刻都有可能发生变化的 但是这种变化必须是可以接受的和合理的 即数据必须保持一致性 事务是保证数据一致性的重要手段 本章将从以下几个方面讲述数据一致性 什么是数据库一致性和事务Oracle中的事务事务的属性和隔离级别事务的处理原则通过本章的学习 读者可以对数据一致性有清晰的认识 并了解Oracle中的事务处理原则 19 1数据一致性和事务 用户对数据库的操作是复杂多变的 这些复杂的动作可能是一个逻辑整体 如果处理不当极易造成数据不一致 同属一个逻辑整体的操作应该作为一个事务进行处理 从而避免出现数据不一致性 19 1 1Oracle中的数据一致性 数据库是现实世界的反映 例如 一个存储了多家连锁店铺库存信息的数据库 如果需要进行货物调配 则需要进行数据更新 从A店调出的货物送至B店 那么A店对应的库存量应该进行削减 B店库存进行相应增加 在数据库中的实际操作应该是两条SQL语句 一条语句减少A店库存 另外一条增加B店库存 但是 数据库有可能抛出这样那样的异常 例如 第一条语句执行完毕 突然断电 或者第二条语句由于其他原因 如表本身的约束 而没有执行成功 就造成了数据不符合实际情况 即实际库存与数据库记录不符 类似的场景还有很多 但作为存储基础数据的数据库 必须避免任何犯错的可能 即必须保持数据一致性 19 1 2Oracle中的事务 事务是保证数据一致性的重要手段 试图改变数据库状态的多个动作应该视作一个密不可分的整体 无论其中经过了多么复杂的操作 该整体执行之前和执行之后 数据库均可保证一致性 整个逻辑整体即使一个事务 19 2Oracle中的事务处理 一个事务的生命周期包括 事务开始 事务执行和事务结束 在Oracle中 并不会显式声明事务的开始 而是由Oracle自行处理 事务的结束可以利用commit或者rollback命令 本节将从以下角度讲述Oracle中的事务处理 利用Commit命令结束事务利用Rollback命令结束事务事务属性和隔离级别 19 2 1利用commit命令界定事务 事务的开始无需显式声明 在一个会话中 一次事务的结束便意味着新事务的开始 事务的结束可以利用commit命令 如示例19 1所示 示例19 1 利用commit命令界定事务 在表warehouse中存储了仓库及库存信息 如下所示 SQL select fromwarehouse 19 2 2利用rollback命令界定事务 rollback命令用于回滚事务内的所有数据修改 并结束事务 在示例19 1中 无论进行了多少次调仓 使用rollback命令将忽略所有操作 示例19 2 利用rollback命令界定事务 SQL updatewarehousesetstock stock 100wherewarehouse name A仓 andgoods 衬衫 1rowupdatedSQL updatewarehousesetstock stock 100wherewarehouse name B仓 andgoods 衬衫 19 2 3Oracle事务的属性和隔离级别 Oracle中 可以设定事务的属性和隔离级别 以保证事务运行在某种特定环境 因为数据库状态总是在不断进行变化的 特定的环境有利于事务在一个稳定的状态下工作 这些属性和隔离级别包括 readonly属性 readwrite属性 serializable隔离级别 readcommited隔离级别 1 readonly属性2 readwrite属性3 serializable隔离级别4 readcommited隔离级别 19 3事务处理原则 事务并非Oracle数据库的专利 而是被广泛应用 并具有统一的处理原则 事务的处理原则包括以下几点 原子性 Atomicity 一致性 Consistency 隔离性 Isolation 持久性 Durablity 19 3 1事务的原子性 Atomicity 原子性是事务的最基本属性 当事务被提交时 所有数据修改都将被确认 当事务回滚时 所有数据修改都将被忽略 不能出现部分提交部分忽略的情形 当然 具体的实现细节均由数据库实现 对于用户来说 只需使用commit rollback命令来提交 回滚事务即可 19 3 2事务的一致性 Consistency 事务的一致性是指 在事务开始之前数据库处于一致性状态 当事务结束之后 数据库仍然处于一致性状态 也就是说 事务不能破坏数据库一致性 很多情况下 事务内部对数据库操作有可能破坏数据库一致性 例如 在货物调仓的过程中 出仓操作是成功执行的 而入仓失败 此时的事务 如果执行了commit动作 势必破坏数据库的一致性 那么 正确的做法应该是以rollback动作结束事务 19 3 3事务的隔离性 Isolation 隔离性是事务必须要具备的特性 一个事务在处理过程中 如果总是受到其他事务的影响 那么 事务的执行总是毫无轨迹可循 数据库的最终状态也是随机的 各个事务对数据库的影响是独立的 那么 一个事务对于其他事务的数据修改 有可能产生以下几种情况 1 脏读取 DirtyRead 2 不可重读3 影像读取 19 3 4事务的持久性 Durablity 持久性是指 事务一旦提交 对数据库的修改也将记录到永久介质中 例如存储为磁盘文件 即使下一时刻的数据库故障也不会导致数据丢失 当用户提交事务时 Oracle数据库总是首先生成redo文件 redo文件记录了事务对数据库修改的细节 即使系统崩溃 Oracle同样可以利用redo文件保证所有事务成功提交 19 4本章实例 当一个事务的隔离级别被设置为serializable后 数据库状态的变化对其是完全透明的 但是 值得注意的是 这里的透明仅仅对于查询动作而言 如果该事务试图修改数据库 同样会受外界事务的影响 示例19 5 事务的隔离级别仅对查询操作起作用 表students是存储了学生信息的数据表 其数据内容如下所示 SQL select fromstudentsorderbystudent id 19 5本章小结 本章简要介绍了数据一致性以及事务的处理原则 这里 需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年语文四年级试卷及答案
- 生活垃圾收集、运输及无害化处理设施运营合同
- 知识产权许可使用协议:软件开发合作补充条款
- 行政合同在行政合同法律效力中的概念与特性探讨
- 离婚后子女户口迁移及抚养费支付合同范本
- 玉米种植保险合同(农业风险管理)
- 《危险化学品运输车辆安全操作手册编制与培训合同》
- 职业经理人离职经济补偿及竞业限制合同
- 离婚协议书范本:子女特殊教育需求及支持协议
- 跨国公司员工培训与职业发展劳动合同
- 2025山东济南市莱芜高新投资控股有限公司社会招聘10人笔试参考题库附带答案详解
- 第一二单元月考综合测试(试题)人教版数学六年级上册
- 2025年中小学心理健康教育试卷及答案
- 2025年年少先队知识竞赛考试真题题库及答案
- 高中语文-“病句辨析”模块“语序不当”知识点
- 2025年厦大《诚信复试承诺书》
- 外泌体课件教学课件
- 粮食培训考试题及答案
- 老年人护理冷热应用课件
- 政府法律顾问聘用合同
- 2025年共青团入团考试测试题库及答案
评论
0/150
提交评论