第10讲 事务及其应用

第10讲 事务及其应用

ID:45135528

大小:194.00 KB

页数:45页

时间:2019-11-10

第10讲 事务及其应用_第1页
第10讲 事务及其应用_第2页
第10讲 事务及其应用_第3页
第10讲 事务及其应用_第4页
第10讲 事务及其应用_第5页
资源描述:

《第10讲 事务及其应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第10讲事务及其应用软件教研室:钱能主要内容事务的概念多用户使用数据库存在的问题(数据一致性问题和并发控制问题)事务的应用事务的概念事务即一系列作为一个逻辑单元来执行的操作集合。它是数据库维护数据一致性的单位,将数据库从一致状态转变为另一个一致状态。事务的特征(ACID)原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持续性(Durability)或永久性SQL启动事务的三种模式自动提交:在此模式下,每个SQL语句作为一个事务,每个语句结束事务也就结束了。显式:当明确标识事务开始和结束时,所使用的就是显式模式BEGINTRANSAC

2、TIONCOMMIT、ROLLBACKSAVETRANSACTION隐式:当使用某些SQL语句时,SQLserver都会隐含启动一个事务。例:建立一个事务将0301001号学生的成绩加10分后,再将0301010号学生成绩改为99;BegintransactionmyUpdate选修set成绩=成绩+10where学号='0301001'Update选修set成绩=99where学号='0301010'Committransactionmyrollbacktranmy如果将上改为:BegintransactionmyUpdate选修set成绩=成绩+10where学号='

3、0301001'Update选修set成绩='dfs'where学号='0301010'Committransactionmyrollbacktranmy又会有什么情况呢?如果将上改为:BegintransactionmyUpdate选修set成绩=成绩+10where学号='0301001'Update选修set成绩=99where学号='0301010'rollbacktranmyCommittransactionmy又会有什么情况呢?如果将上改为:BegintransactionUpdate选修set成绩=成绩+10where学号='0301001'SAVEtran

4、myUpdate选修set成绩=99where学号='0301010'rollbacktranmyCommittransaction又会有什么情况呢?begintranupdate学生set年龄=年龄+1where姓名='张三'savetranmyupdate学生set年龄=20rollbacktranmycommittranrollbacktran多用户同时使用数据库的问题多个用户同时使用数据库会产生数据库的一致性和并发控制的问题。这些问题主要体现在以下三个方面:丢失修改(lostupdate)不可重复读(non-repeatableread)读脏数据(dirtyrea

5、d)丢失修改丢失修改是指事务1与事务2从数据库中读入同一数据并修改,事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。T1T2①读A=16②③A←A-1写回A=15④读A=16A←A-1写回A=15不可重复读不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。读B=100B←B*2写回B=200①读A=50读B=100求和=150②③读A=50读B=200求和=250(验算不对)T2T1三类不可重复读事务1读取某一数据后:1、事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。2、事务2删除了其中部分记录,当事务

6、1再次读取数据时,发现某些记录神密地消失了。3、事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称为幻影现象(phantomrow)读“脏”数据事务1修改某一数据,并将其写回磁盘,事务2读取同一数据后,事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值,事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。读C=200①读C=100C←C*2写回C②③ROLLBACKC恢复为100T2T1(c)读“脏”数据产生的原因:并发操作破坏了事务的隔离性。?事务的正确调度什么样的并发操作调度是正确的?如何

7、保证并发操作的调度是正确的?什么样的并发操作调度是正确的?计算机系统对并行事务中并行操作的调度是的随机的,而不同的调度可能会产生不同的结果。将所有事务串行起来的调度策略一定是正确的调度策略。如果一个事务运行过程中没有其他事务在同时运行,也就是说它没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的或者预想的。以不同的顺序串行执行事务也有可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都可以认为是正确的。几个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种并行调度策略称为可

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。