文件名称:回滚事务-the design and analysis of algorithms
文件大小:4.17MB
文件格式:PDF
更新时间:2024-06-29 04:39:02
达梦,DM7
24.4 回滚事务 回滚事务是撤消该事务所做的任何更改。回滚有两种形式:DM 数据库自动回滚,或者 通过程序/ROLLBACK命令手动回滚。除此之外,与回滚相关的还有回滚到保存点和语句级 回滚,下面分别进行介绍。 24.4.1自动回滚 若事务运行期间出现连接断开,DM 数据库都会自动回滚该连接所产生的事务。回滚会 撤消事务执行的所有数据库更改,并释放此事务使用的所有数据库资源。DM 数据库在恢复 时也会使用自动回滚。例如在运行事务时服务器突然断电,接着系统重新启动,DM 数据库 就会在重启时执行自动恢复。自动恢复要从事务重做日志中读取信息以重新执行没有写入磁 盘的已提交事务,或者回滚断电时还没有来得及提交的事务。 24.4.2手动回滚 一般来说,在实际应用中,当某条 SQL 语句执行失败时,用户会主动使用 ROLLBACK 语句或者编程接口提供的回滚函数来回滚整个事务,避免不合逻辑的事务污染数据库,导致 数据不一致。如果发生错误后确实只用回滚事务中的一部分,则需要用到回滚到保存点的功 能。 24.4.3回滚到保存点 除了回滚整个事务之外,DM 数据库的用户还可以部分回滚未提交事务,即从事务的最 末端回滚到事务中任意一个被称为保存点的标记处。用户在事务内可以声明多个被称为保存 点的标记,将一个大事务划分为几个较小的片断。之后用户在对事务进行回滚操作时,就可 以选择从当前执行位置回滚到事务内的任意一个保存点。例如用户可以在一系列复杂的更新 操作之间插入保存点,如果执行过程中一个语句出现错误,用户可以回滚到错误之前的某个 保存点,而不必重新提交所有的语句。当事务被回滚到某个保存点后,DM 数据库将释放被 回滚语句中使用的锁。其他等待“被锁资源”的事务就可以继续执行,需要更新“被锁数据 行”的事务也可以继续执行。 将事务回滚到某个保存点的过程如下: