网站大量收购闲置独家精品文档,联系QQ:2885784924

数据库系统管理与应用 课件 知识点4.5 事务认知.pptx

数据库系统管理与应用 课件 知识点4.5 事务认知.pptx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

事务认知

数据库系统管理与应用

习标学目

事务提交

事务就是提交事务对数据库所做的修改,将从事务开始的所有更新保存到数据库中,更改的记录都被写入日志文件并最终写入到数据文件中,同时提交事务还会释放由事务占用的资源,如锁。

在DM数据库中还存在三种事务模式:自动提交模式、手动提交模式和隐式提交模式。

自动提交模式

DM数据库默认采用自动提交模式。用户通过DM数据库的其他管理工具、编程接口访问DM数据库时,如果不手动/编程设置提交模式,所有的SQL语句都会在执行结束后提交,或者在执行失败时回滚,此时每个事务都只有一条SQL语句。在DISQL中,用户也可以通过执行如下语句来设置当前会话为自动提交模式。

语法:SETAUTOCOMMITWORK

手动提交模式

在手动提交模式下,DM数据库用户或者应用开发人员明确定义事务的开始和结束,这些事务也被称为显式事务。

在DISQL中,没有设置自动提交时,就是处于手动提交模式,此时DISQL连接到服务器后第一条SQL语句或者事务结束后的第一条语句就标记着事务的开始,可以执行COMMT或者ROLLBACK来提交或者回滚事务,使当前事务工作单元中的所有操作“永久化”,并冻结该事务。

手动提交语法格式:COMMIT[WORK]

其中,WORK支持与标准SQL语句的兼容性,COMMIT和COMMITWORK等价。

隐式提交模式

隐式提交模式指的是在手动提交模式下,当遇到DLL语句时,DM数据库会自动提交前面的事务,然后开始一个新的事务执行DDL语句。相应的事务成为隐式事务。

事务回滚

事务回滚是撤销该事务所做的任何更改。

回滚有两种形式,即DM数据库自动回滚或通过程序ROLLBACK命令手动回滚。

除此之外,与回滚相关的还有回滚到保存点和语句级回滚

自动回滚

若事务运行期间出现连接断开,DM数据库都会自动回滚该连接所产生的事务。

回滚会撤销事务执行的所有数据库更改,并释放此事务使用的所有数据库资源。DM数据库在恢复时也会使用自动回滚。

例如,在运行事务时服务器突然断电,接着系统重新启动,DM数据库就会在重启时执行自动恢复。自动恢复要从事务重做日志中读取信息以重新执行没有写入磁盘的已提交事务,或者回滚断电时还没有来得及提交的事务。

手动回滚

一般来说,在实际应用中,当某条SQL语句执行失败时,用户会主动使用ROLLBACK语句或者编程接口提供的回滚函数来回滚整个事务,避免不合逻辑的事务污染数据库,导致数据不一致。

如果发生错误后只用回滚事务中的一部分,则需要用到回滚到保存点的功能。

回滚到保存点

从事务的最末端回滚到事务中任意一个被称为保存点的标记处。

用户在事务内可以声明多个被称为保存点的标记,将大事务划分为几个较小的片断。之后用户在对事务进行回滚操作时,就可以选择从当前执行位置回滚到事务内的任意一个保存点。

DM数据库用户可以使用SAVEPOINT_NAME命令创建保存点,使用ROLLEACKTOSAVEPOINTSAVEPOINT_NAME命令来回滚到保存点SAVEPOINT_NAME。语法格式如下:

设置保存点:SAVEPOINT保存点名

回滚到保存点:ROLLBACK[WORK]TOSAVEPOINT保存点名;

语句级回滚

如果在一个SQL语句执行过程中发生了错误,那么此语句对数据库产生的影响将被回滚。回滚后就如同此语句从未被执行过,这种操作被称为语句级回滚。语句级回滚只会使此语句所做的数据修改无效,不会影响此语句之前所做的数据修改。

回滚段自动清理

由于需要根据回滚记录回溯、还原物理记录的历史版本信息,因此不能在事务提交时立即清除当前事务产生的回滚记录。

如果不及时清理回滚段,可能会造成回滚段空间的不断膨胀,占用大量的磁盘空间。

DM数据库提供自动清理、回收回滚段空间的机制

事务锁定

DM数据库支持多用户并发访问、修改数据,有可能出现多个事务同时访问、修改相同数据的情况。若对并发操作不加控制,就可能会访问到不正确的数据,破坏数据的一致性和正确性。

DM数据库采用封锁机制来解决并发问题。

锁模式

DM数据库使用四种不同的锁模式:共享锁、排他锁、意向共享锁和意向排他锁。

共享锁

共享锁(ShareLock,S锁)用于读操作,防止其他事务修改正在访问的对象。这种封锁模式允许多个事务同时并发读取相同的资源,但是不允许任何事务修改这个资源。

排他锁

排他锁(ExclusiveLock,X锁)用于写操作,以独占的方式访问对象,不允许任何其他事务访问被封锁对象;防止多个事务同时修改相同的数据,避免引发数据错误;防止访问一个正在被修改的对象,避免引发数据不一致。一般在修改对象定义时使用。

锁模式

意向锁(IntentLock)在读取或修改被访问对象数据时使用,多个事务可以同时对

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档