Oracle基础-事务处理.pptx

上传人:wuy****n92 文档编号:70800125 上传时间:2023-01-28 格式:PPTX 页数:20 大小:220.27KB
返回 下载 相关 举报
Oracle基础-事务处理.pptx_第1页
第1页 / 共20页
Oracle基础-事务处理.pptx_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《Oracle基础-事务处理.pptx》由会员分享,可在线阅读,更多相关《Oracle基础-事务处理.pptx(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、事务处理事务处理郑欣本节知识点事务处理的作用事务处理的命令理解事务处理实验:使用delete删除myemp表中的数据后进行查询看。Delete from myemp;请问:此时是不是在数据库真正的删除了myemp中的所有记录呢?理解事务处理答案:NO,并没有删除记录,我们可以使用下面的语句,将记录回滚。ROLLBACK;会发现是myemp最初的原始数据,我们之前使用的INSERT、UPDATE、DELETE操作,并没有真正的进行操作。理解事务处理事务:是保证数据完整性的一种手段。事务具备ACID原则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、

2、持久性(Durability),保证你一个人更新数据的时候,其他人不能更新。在ORACLE中,sqlplus是一个客户端。对于ORACLE服务而言,每一个sqlplus客户端都是独立的,都使用一个session(会话)描述。理解事务处理ORACLEsqlplussqlplus网络独立事务独立事务Session(会话)Session(会话)说明:当在操作说明:当在操作oracle数据库时,每一个事务会生成一个数据库时,每一个事务会生成一个独立的会话。会话之间没有联系。独立的会话。会话之间没有联系。理解事务处理ORACLEsqlplus缓冲提交更新说明:在操作说明:在操作ORACLE数据库时,有个

3、缓冲区域且不释放数据库时,有个缓冲区域且不释放存在空间,我们在进行操作时都是将操作数据存放于缓冲存在空间,我们在进行操作时都是将操作数据存放于缓冲区内,在缓冲区中的更新都可以通过区内,在缓冲区中的更新都可以通过ROLLBACK命令进行命令进行回滚;如果需要对数据真正意义上的更新,要进行提交更回滚;如果需要对数据真正意义上的更新,要进行提交更新操作。新操作。事务处理命令在事务处理中有两个核心命令(重点重点):提交事务:COMMIT;(隐式提交:正常退出EXIT、DDL语句)回滚事务:ROLLBACK;(隐式回滚 断电,、死机、非正常退出)扩展:开发中为什么有框架,原因在于,框架为我们提供了事务处

4、理的机制,省去了开发者处理事务的处理过程。注意:事务只针对DML(数据操作语言)有效,但如果期间做任何的DDL(数据定义语言)都会进行自动提交操作。事ROLLBACK回滚到指定位置insert into t values(1,imagessmall1.jpg);insert into t values(7,imagessmall2.jpg);insert into t values(4,imagessmall3.jpg);savepoint a;insert into t values(3,imagessmall4.jpg);insert into t values(6,imagessmall

5、5.jpg);insert into t values(8,imagessmall6.jpg);如果需要回滚到savepoint a位置,操作如下:ROLLBACK TO savepoint a;事务处理命令范例:删除myemp表中工资为800的员工;【操作】第一步:执行 DELETE FROM myemp WHERE sal=800;此时将没有真正意义上的删除数据。第二步:执行COMMIT;提交更新操作注意:所有的更新操作都被事务处理保护。事务处理范例:菠萝要给土豆汇款500万。【汇款执行步骤】第一步:从菠萝账户上减少500万;第二步:在土豆账户上增加500万;第三步:扣除转账手续费50元;

6、事务处理假如第2步操作异常,没有实现。此时菠萝账户上应该恢复500万,如果没有事务处理,那么就表示在更新数据时就表示 数据已经提交,不管土豆账户上是否增加500万,菠萝账户上都会减少500万。所以事务的好是在一组更新操作全部完成后,再进行提交处理,这样才可以保证数据的完整性。即:成功一起成功,失败回到原点。成功一起成功,失败回到原点。事务锁如果 每个SESSION都进行自己的事务处理,那么现在两个SESSION同时操作同一条数据该如何操作?引例:如果两个人同时使用同一张银行卡进行取钱,请问两个人可不可能同时取到钱?事务锁下面通过一个具体的演示说明存在的问题范例:第一个session更新7566

7、的雇员工资为5000。UPDATE myemp SET sal=5000 where empno=7566;此时,session并没有提交或回滚范例:第二个session更新7566的雇员佣金为10000。UPDATE myemp SET comm=10000 where empno=7566;事务锁此时发现更新操作并不能完成,因为两个不同的SESSION更新了同一条数据,这种情况就是:锁。即:在第一个SESSION没有提交或回滚前,第二个SESSION要一直等待更新完成。所以在事务的处理过程中,存在行级锁定,即:在提交或回滚更新之前,只能有一个SESSION操作数据,这就是事务的隔离性。事务

8、锁虽然这种事务的处理很方便,但是这种锁定就很麻烦了。引例:某站点平均每秒在线人数有100人。(即:8640000人/天)假设该站点用户有1000万(这1000万个用户如果要登录还需要进行一些数据表的更新操作),突然有天,老板让数据库管理员,把所有用户的某个字段的内容统一更新为一个数据。如何解决这样的问题。事务锁两个解决方案:1、直接发出UPDATE更新全部指令,目的是让1000万条数据一起完成更新;【执行过程】如果每更新10条数据1秒,总更新时间=100万秒=12天,这意味着在12天内,所有用户无法登录。原因:事务锁的存在,需要把所有数据全更新提交完成后,原因:事务锁的存在,需要把所有数据全更

9、新提交完成后,才能进行其它的操作。才能进行其它的操作。事务锁在整个程序中有两个方法可以评价程序:时间复杂度(算法用时)、空间复杂度(空间存储)。所以第一种方法拿时间换了空间,因为服务器有限,但是在现实中太可怕。(因此,现实中解决时间的方法为:云计算。)事务锁2、按照空间换时间的思路,可以利用一个周期来完成,不直接更新所有用户信息,而是让每一个用户信息在使用的时候进行更新。虽然不是立刻所有的用户都发生了改变,但慢 慢 的活跃用户都进行了更新;而那些僵尸用户,可以在集中进行处理。事务处理(总结)1、事务的核心处理命令:COMMIT、ROLLBACK(回滚到指定位置)。以及两个命令的隐式;2、每一个SESSION具备 独立 的事务,并且在未提交前更新的数据行锁定。

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁