云数据库 GAUSSDB-事务回滚
事务回滚
回滚是在事务运行的过程中发生了故障等异常情形下,事务不能继续执行,系统需要将事务中已完成的修改操作进行撤销。Astore、Ubtree没有回滚段,自然没有这个专门的回滚动作。Ustore为了性能考虑,它的回滚流程结合了同步、异步和页面级回滚等3种形式。
- 同步回滚
有三种情况会触发事务的同步回滚:
- 事务块中的ROLLBACK关键字会触发同步回滚。
- 事务运行过程中如果发生ERROR级别报错,此时的COMMIT关键字与ROLLBACK功能相同,也会触发同步回滚。
- 事务运行过程中如果发生FATAL/PANIC级别报错,在线程退出前会尝试将该线程绑定的事务进行一次同步回滚。
- 异步回滚
同步回滚失败或者在系统宕机后再次重启时,会由Undo回收线程为未回滚完成的事务发起异步回滚任务,立即对外提供服务。由异步回滚任务发起线程undo launch负责拉起异步回滚工作线程undo worker,再由异步回滚工作线程实际执行回滚任务。undo launch线程最多可以同时拉起5个undo worker线程。
- 页面级回滚
当事务需要回滚但还未回滚到本页面时,如果其他事务需要复用该事务所占用的TD,就会在复用前对该事务在本页面的所有修改执行页面级回滚。页面级回滚只负责回滚事务在本页面的修改,不涉及其他页面。
Ustore子事务的回滚由ROLLBACK TO SAVEPOINT语句控制,子事务回滚后父事务可以继续运行,子事务的回滚不影响父事务的事务状态。如果一个事务在回滚时还存在未释放的子事务,该事务回滚前会先执行子事务的回滚,所有子事务回滚完毕后才会进行父事务的回滚。
- 云数据库 GaussDB(for MySQL)与RDS for MySQL的区别
- 华为云数据库 RDS for PostgreSQL 实例规格介绍
- GaussDB数据库云备份_华为GaussDB_高斯数据库云备份
- GaussDB学习_gaussdb教程_高斯数据库学习_华为云
- GaussDB工具_gaussdb怎么读_高斯数据库工具_华为云
- 关系数据库管理系统_云数据库_数据库应用
- GaussDB数据库扩容与缩容_Gaussdb扩容_华为gaussdb_gaussdb在线扩容
- GaussDB数据库安全_GaussDB收费吗_高斯数据库安全
- GaussDB变更_云数据库GaussDB变更_高斯数据库变更-华为云
- GaussDB咋样_openGauss和GaussDB的区别_高斯数据库咋样_华为云