-
事务:用户定义的一系列数据库操作集合(增删改查等)。
ACID特性:原子性(事务作为一个单元,要么全部执行成功,要不全部执行失败。vastbase数据库通过wal、事务提交信息日志clog和更新记录的多版本(oid:行对象标识符;xmin:插入该行版本的事务;IDxmax:删除此行的事务ID;cmin:事务内部插入类操作的命令;IDcmax:事务内部删除类操作的命令ID;ctid: 一个行版本在它所处的表内的物理位置)来保证事务的原子性)、一致性(事务的执行会导致数据从一个状态转移至另一个一致的状态)、隔离性(事务执行的过程中,数据库状态受并发事务的影响程度,隔离级别有未提交、读已提交、可重复读、可串行化)和持久性(一旦事务提交过,即使发生故障重启后,事务执行结果也不对丢失)。
-
分类:
- 按分布式角色分为本地事务和全局事务
本地事务:是普通事务,独立的一个数据库,也叫做单机事务,可以保证数据库上操作的ACID。
单机事务:指一个事务中所有的操作都发生在同一个分片上
全局事务:涉及两个及多个数据库的事务,全局事务旨保证本地事务的所有操作的ACID,使事务可以跨越多台数据库。
- 其他分类
显式事务:是指用户在所执行的一条或多条SQL后,显式添加了开启事务START TRANSACTION语句和提交事务COMMIT语句。
隐式事务:是指用户在所执行的一条或多条SQL语句的前后,没有显式添加开启事务和提交事务的语句。在这种情况下每一条SQL语句在开始执行时,openGauss内部都会为其开启一个事努,并且在该语句执行完成之后,自动提交该事务。两阶段事务2PC:是分布式数据库和分布式系统中常见的事务模型,两阶段事务的架构中包含事务管理器和资源管理器等多个角色。
XA事务:是2PC原子提交协议的一种实现。它通过引入协调者来统一参与者的步伐。
自治事务:将一个主事务分割成几个子事务,在执行完子事务以后再继续执行主事务。子事务是独立于主事务的,子事务中的ROLLBACK和COMMIT操作只会影响子事务中的DML操作;主事务中的ROLLBACK和COMMIT操作只会影响主事务中的DML操作,而不会影响子事务中的操作。在子事务中已经COMMIT的操作,不会被主事务中的ROLLBACK撤销。
-
管理:
-
事务控制
-
启动事务
start transaction;| begin;语句; | 语句; commit; | end;
设置事务set transaction 或set local transaction语法
提交事务 commit或end完成提交功能。
回滚事务 即系统将事务中对数据库的所有已完成的操作全部撤销。
-
-
事务隔离级别
- read commits(读已提交)、repeatable read(事务可重复读)、不支持serializable(等价于repeatable read)
- 查看事务隔离级别 show default_transaction_isolation;
- 指定事务隔离级别 start transaction isolation level read committed read write(隔离级别是read committed,读写方式启动数据库)
-
事务持久性:数据库采用wal来避免持久化过程中的随机IO
预写式日志:指在事务提交的时候,先将事务对数据库的修改写入一个顺序追加的wal文件中,事务完成落盘操作以后,事务就完成提交动作。当数据库崩溃后,数据库会首先从已经写入磁盘的wal文件中恢复出事务对数据库的修改操作,以保证事务一旦提交即具备持久性的特点。
MVCC:最关键的技术点有两个,①元组版本号的实现(采用递增事务号作为元组的版本号)②快照的实现
事务管理和mvcc
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...