已阅读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中存储了仓库及库存信息,如下所示。SQLselect*fromwarehouse;,19.2.2利用rollback命令界定事务,rollback命令用于回滚事务内的所有数据修改,并结束事务。在示例19-1中,无论进行了多少次调仓,使用rollback命令将忽略所有操作。【示例19-2】利用rollback命令界定事务。SQLupdatewarehousesetstock=stock-100wherewarehouse_name=A仓andgoods=衬衫;1rowupdatedSQLupdatewarehousesetstock=stock+100wherewarehouse_name=B仓andgoods=衬衫;,19.2.3Oracle事务的属性和隔离级别,Oracle中,可以设定事务的属性和隔离级别,以保证事务运行在某种特定环境。因为数据库状态总是在不断进行变化的,特定的环境有利于事务在一个稳定的状态下工作。这些属性和隔离级别包括:readonly属性;readwrite属性;serializable隔离级别;readcommited隔离级别。1readonly属性2readwrite属性3serializable隔离级别4readcommited隔离级别,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是存储了学生信息的数据表,其数据内容如下所示。SQLselect*fromstudentsorderbystudent_id;,19.5本章小结,本章简要介绍了数据一致性以及事务的处理原则。这里,需要区
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东夏考英语试卷及答案
- 硅片研磨工岗前安全生产基础知识考核试卷含答案
- 装岩机司机冲突管理模拟考核试卷含答案
- 水泥熟料煅烧工7S考核试卷含答案
- 课程咨询销售话术
- 漆器镶嵌装饰工班组考核模拟考核试卷含答案
- 渔网具装配工岗前决策力考核试卷含答案
- 电子玻璃制品加工工岗前设备维护考核试卷含答案
- 光伏砷化镓组件制造工岗位工艺技术规程
- 农机技术员操作规程模拟考核试卷含答案
- 【MOOC】数据仓库与数据挖掘-北京理工大学 中国大学慕课MOOC答案
- 电力交易员国家职业标准(2024版)
- 2024年XX村驻村工作队第一书记报帐会议记录
- 江西省科技厅自然青年科学基金项目申请书
- 部编版二年级上册-课文一-快乐读书吧:读读童话故事-孤独的小螃蟹(课件)(共26张课件)
- 认知作战-影响认知域的工具与技术
- 2024年度年终考核考试题附有答案
- 附件:《房屋市政工程施工安全日志(范本)》
- 高中生物《第3章 细胞的基本结构》单元检测试卷及答案解析
- 电梯维保服务售后服务方案
- 中医技术培训课件:《穴位贴敷临床应用》
评论
0/150
提交评论