数据库一致性与事务管理.ppt

上传人:小飞机 文档编号:5985452 上传时间:2023-09-11 格式:PPT 页数:16 大小:270.61KB
返回 下载 相关 举报
数据库一致性与事务管理.ppt_第1页
第1页 / 共16页
数据库一致性与事务管理.ppt_第2页
第2页 / 共16页
数据库一致性与事务管理.ppt_第3页
第3页 / 共16页
数据库一致性与事务管理.ppt_第4页
第4页 / 共16页
数据库一致性与事务管理.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《数据库一致性与事务管理.ppt》由会员分享,可在线阅读,更多相关《数据库一致性与事务管理.ppt(16页珍藏版)》请在三一办公上搜索。

1、第19章 数据库一致性与事务管理,数据库中的数据是每时每刻都有可能发生变化的。但是这种变化必须是可以接受的和合理的。即数据必须保持一致性。事务是保证数据一致性的重要手段。本章将从以下几个方面讲述数据一致性。什么是数据库一致性和事务Oracle中的事务事务的属性和隔离级别事务的处理原则通过本章的学习,读者可以对数据一致性有清晰的认识,并了解Oracle中的事务处理原则。,19.1 数据一致性和事务,用户对数据库的操作是复杂多变的。这些复杂的动作可能是一个逻辑整体,如果处理不当极易造成数据不一致。同属一个逻辑整体的操作应该作为一个事务进行处理,从而避免出现数据不一致性。,19.1.1 Oracle

2、中的数据一致性,数据库是现实世界的反映。例如,一个存储了多家连锁店铺库存信息的数据库,如果需要进行货物调配,则需要进行数据更新。从A店调出的货物送至B店,那么A店对应的库存量应该进行削减,B店库存进行相应增加。在数据库中的实际操作应该是两条SQL语句,一条语句减少A店库存,另外一条增加B店库存。但是,数据库有可能抛出这样那样的异常,例如,第一条语句执行完毕,突然断电,或者第二条语句由于其他原因(如表本身的约束)而没有执行成功,就造成了数据不符合实际情况,即实际库存与数据库记录不符。类似的场景还有很多,但作为存储基础数据的数据库,必须避免任何犯错的可能,即必须保持数据一致性。,19.1.2 Or

3、acle中的事务,事务是保证数据一致性的重要手段。试图改变数据库状态的多个动作应该视作一个密不可分的整体。无论其中经过了多么复杂的操作,该整体执行之前和执行之后,数据库均可保证一致性。整个逻辑整体即使一个事务。,19.2 Oracle中的事务处理,一个事务的生命周期包括,事务开始、事务执行和事务结束。在Oracle中,并不会显式声明事务的开始,而是由Oracle自行处理。事务的结束可以利用commit或者rollback命令。本节将从以下角度讲述Oracle中的事务处理。利用Commit命令结束事务利用Rollback命令结束事务事务属性和隔离级别,19.2.1 利用commit命令界定事务,

4、事务的开始无需显式声明,在一个会话中,一次事务的结束便意味着新事务的开始。事务的结束可以利用commit命令,如示例19-1所示。【示例19-1】利用commit命令界定事务。在表warehouse中存储了仓库及库存信息,如下所示。SQL select*from warehouse;,19.2.2 利用rollback命令界定事务,rollback命令用于回滚事务内的所有数据修改,并结束事务。在示例19-1中,无论进行了多少次调仓,使用rollback命令将忽略所有操作。【示例19-2】利用rollback命令界定事务。SQL update warehouse set stock=stock-

5、100 where warehouse_name=A仓 and goods=衬衫;1 row updatedSQL update warehouse set stock=stock+100 where warehouse_name=B仓 and goods=衬衫;,19.2.3 Oracle事务的属性和隔离级别,Oracle中,可以设定事务的属性和隔离级别,以保证事务运行在某种特定环境。因为数据库状态总是在不断进行变化的,特定的环境有利于事务在一个稳定的状态下工作。这些属性和隔离级别包括:read only属性;read write属性;serializable隔离级别;read commit

6、ed隔离级别。1read only属性2read write属性3serializable隔离级别4read commited隔离级别,19.3 事务处理原则,事务并非Oracle数据库的专利,而是被广泛应用,并具有统一的处理原则。事务的处理原则包括以下几点:原子性(Atomicity):一致性(Consistency):隔离性(Isolation):持久性(Durablity):,19.3.1 事务的原子性Atomicity,原子性是事务的最基本属性。当事务被提交时,所有数据修改都将被确认;当事务回滚时,所有数据修改都将被忽略。不能出现部分提交部分忽略的情形。当然,具体的实现细节均由数据库实

7、现。对于用户来说,只需使用commit/rollback命令来提交/回滚事务即可。,事务的一致性Consistency,事务的一致性是指,在事务开始之前数据库处于一致性状态,当事务结束之后,数据库仍然处于一致性状态。也就是说,事务不能破坏数据库一致性。很多情况下,事务内部对数据库操作有可能破坏数据库一致性。例如,在货物调仓的过程中,出仓操作是成功执行的,而入仓失败。此时的事务,如果执行了commit动作,势必破坏数据库的一致性。那么,正确的做法应该是以rollback动作结束事务。,19.3.3 事务的隔离性Isolation,隔离性是事务必须要具备的特性。一个事务在处理过程中,如果总是受到其

8、他事务的影响,那么,事务的执行总是毫无轨迹可循,数据库的最终状态也是随机的。各个事务对数据库的影响是独立的,那么,一个事务对于其他事务的数据修改,有可能产生以下几种情况。1脏读取(Dirty Read)2不可重读3影像读取,19.3.4 事务的持久性Durablity,持久性是指,事务一旦提交,对数据库的修改也将记录到永久介质中,例如存储为磁盘文件。即使下一时刻的数据库故障也不会导致数据丢失。当用户提交事务时,Oracle数据库总是首先生成redo文件。redo文件记录了事务对数据库修改的细节,即使系统崩溃,Oracle同样可以利用redo文件保证所有事务成功提交。,19.4 本章实例,当一个

9、事务的隔离级别被设置为serializable后,数据库状态的变化对其是完全透明的。但是,值得注意的是,这里的透明仅仅对于查询动作而言。如果该事务试图修改数据库,同样会受外界事务的影响。【示例19-5】事务的隔离级别仅对查询操作起作用。表students是存储了学生信息的数据表,其数据内容如下所示。SQL select*from students order by student_id;,19.5 本章小结,本章简要介绍了数据一致性以及事务的处理原则。这里,需要区分事务与正确事务的不同。在Oracle中,事务以会话建立,或者以上一次的commit/rollback为开始,以下一个commit或rollback结束。而这个事务是否是一个正确的事务,则要看是否符合事务的处理原则。尤其需要注意的是,不能保持一致性的事务是被严格禁止的。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号