1. 功能描述
GBase 8a MPP Cluster 标准事务目前主要实现如下功能:
- 实现统一的标准事务机制,保证事务的 ACID 特性;
- 原子性(atomicity),事务对数据的修改必须是原子的,要么全部执行,要么全部不执行。
- 一致性(consistency),事务在完成时,必须使所有的数据都保持一致性状态。
- 隔离性(isolation),由并发事务所做的修改必须与任何其他并发事务隔离。ANSI/ISOSQL92 标准定义了一些数据库操作的隔离级别:未提交读(Read uncommitted),提交读 Read committed),重复读(Repeatable read),序列化(Serializable)。GBase 8a MPP Cluster 支持的事务隔离级别为快照(snapshot)级别。
- 持久性(durability),事务完成之后对数据库系统的影响是持久的,即使数据库宕机也能对数据进行恢复。
- 支持事务标准语法:
START TRANSACTION | BEGIN
COMMIT
ROLLBACK
- 支 持 如 下 DML 操 作,
INSERT VALUES
,UPDATE
,DELETE
,INSERT…SELECT
,MERGE
。 - 支持事务内连续写;
- 支持查询与 DML 同表并发,不支持同表写操作并发(
INSERT VALUES
与INSERT VALUES
可以并发); - 支持表中含有 hash 索引,全文索引;
- 支持表存储配额机制;
- 支持表行存列属性;
- 支持 LOAD 数据加载操作。
2. 参数配置
GBase 8a MPP Cluster 打开事务功能,需要在全部集群节点的如下文件中添加配置参数
- 在GNode节点
$GBASE_BASE/config/gbase_8a_gbase.cnf
配置文件中增加如下参数
gbase_tx_log_mode=USE,STANDARD_TRANS
- 在 GCluster 节点
$GCLUSTER_BASE/config/gbase_8a_gcluster.cnf
配置文件中增加如下参数
gcluster_transaction_disable=0
注意:修改配置文件后,一定要重启集群,事务功能才会生效。
3. 事务标准语法
语法格式
[START TRANSACTION | BEGIN] [COMMIT] [ROLLBACK]
参数名称 | 说明 |
---|---|
START TRANSACTION | BEGIN | 开始一项新的事务。 |
COMMIT | 提交当前事务,使变更成为永久变更。 |
ROLLBACK | 回滚当前事务,取消其变更。 |
示例
gbase> create table t1(a int);
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> start transaction;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> insert into t1 values(10);
Query OK, 1 row affected (Elapsed: 00:00:00.00)
gbase> commit;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> SELECT * from t1;
+------+
| a |
+------+
| 10 |
+------+
1 row in set (Elapsed: 00:00:00.00)
gbase> begin;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> insert into t1 values(200);
Query OK, 1 row affected (Elapsed: 00:00:00.01)
gbase> rollback;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> SELECT * from t1;
+------+
| a |
+------+
| 10 |
+------+
1 row in set (Elapsed: 00:00:00.01)