南大通用GBase 8a集群事务功能

GBase 8a MPP 集群,即使是新的V95版本,也请当成不支持事务来使用,除了insert values这种批量插入数据的初始化场景。GBase 8a单机事务功能可以用,但不推荐,如果是事务要求,还是用GBase 8s这个事务库。

目录导航

8a集群

1、整体上讲,8a集群可以理解成【不】支持事务。

2、从细节看,部分功能可以实现事务的功能,包括

2.1 单步的dml操作,可以打开事务,操作,然后rollback或commit事务。

2.2 但不允许对同一个表在不同的session进行并发dml操作,这个与常规的事务功能是不一样的。并发事务DML会导致查询直接can't lock file错误。 而不开事务,并发DML时,后续的会等待锁,而不会报错。

3、从V95版本开始,增加了对一张表的多次更新DML操作。redolog日志放在表的metadata目录下。

但,我个人也不建议使用。

t_key_int_n1#P#p01.GED:
total 12
-rw-------. 1 gbase gbase        0 Jan 13 23:09 lock
-rw-------. 1 gbase gbase 52428801 Mar  8 14:04 redolog0
-rw-------. 1 gbase gbase      560 Jan 13 23:09 table.info.B

t_key_int_n1#P#p02.GED:

8a单机

GBase 8a 事务和锁语句
START TRANSACTION,COMMIT 和 ROLLBACK
语法
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT = {0 | 1}
START TRANSACTION 或 BEGIN 语句可以开始一项新的事务。
COMMIT 可以提交当前事务,是变更成为永久变更。
ROLLBACK 可以回滚当前事务,取消其变更。
SET AUTOCOMMIT 语句可禁用或启用默认的 AUTOCOMMIT模式,用于当前连接。
缺省情况下 GBase 8a 运行在 AUTOCOMMIT=1 的模式下。这就意味着,当用户执行完一个更新时,GBase 8a 将立刻将更新存储到磁盘上。
通过下面的命令,用户可以设置 GBase 8a 为非 AUTOCOMMIT 模式:
SET AUTOCOMMIT=0;
通过把 AUTOCOMMIT 变量设置为零,禁用 AUTOCOMMIT 模式之后,您必须使用 COMMIT 把变更存储到磁盘中,或着如果您想要放弃从事务开始进行以来做出的变更,使用 ROLLBACK。