返回首页

gbase数据、南大通用产品文档:GBase8s保持游标

更新日期:2024年09月11日

当使用事务日志记录时,当事务结束时,GBase 8s 通常关闭所有游标并释放所有锁。在多
用户环境中,这种行为并不总是可取的。
GBase 8s JDBC Driver 已经以 GBase 8s 扩展实现了可保持的游标支持。 GBase 8s 数据库服
务器支持在游标的声明中添加关键字 WITH HOLD。这样的游标称为保持游标,且在事务
结束时不关闭。
为符合 JDBC 3.0 规范,GBase 8s JDBC Driver 将方法添加至 JDBC 接口,以支持可保持
的游标。
要获取关于保持游标的更多信息,请参阅《GBase 8s SQL 指南:语法》。

rebalance 命令负责表数据在节点间的重新分布,支持以下功能:
1)数据库提供了3 个级别的数据重分布,分别是实例级、数据库级分布和表级。
用户可以根据不同的场景选择合适的分布级别
2)对于需要大批量表的数据搬移,还提供了分布优先级和并发分布数量来进行更
细粒度的控制。
3)rebalance 命令在任务下发到后台后即返回结果,数据库提供执行过程信息的查
询,
可以按数据表查询开始分布和结束分布的时间、
分布进度、
分布优先级等信息,
用户可以通过访问gclusterdb.rebalancing_status 进行查看。
4)提供取消和暂停功能,对后台任务进行控制。
说明

在coordinator 上使用gccli 执行rebalance 命令后,rebalance 任务会被加入
到gclusterdb.rebalancing_status 集群表中。coordinator 集群会从
gclusterdb.rebalancing_status









gcluster_rebalancing_concurrent_count 个表进行rebalance。

coordinator 集群中只会有一个coordinator 节点负责后台执行表rebalance,
不支持多个coordinator 并行执行rebalance 命令。

rebalance 任务执行状态需要从gclusterdb.rebalancing_status 表中查询。

不建议对gclusterdb.rebalancing_status 表做ddl/dml 操作。

只支持express 引擎表的rebalance
一个表在rebalance 时有5 个状态,
分别是:
STARTING、
RUNNING、
COMPLETED、
PAUSED、CANCELED。这5 种状态转换如下图所示:

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
347
图4- 2 5 种状态转换图
说明

表处于STARTING 状态时,Coordinator 后台线程开始执行表的rebalance 操作,表状
态转换成RUNNING。

表处于PAUSED 状态时,对这个表执行continue rebalance 操作,表状态转换成
RUNNING。

表处于RUNNING 状态时,coordinator 后台线程执行表的rebalance 操作失败,表状态
转换成STARTING。

表处于RUNNING 状态时,coordinator 后台线程完成了表的rebalance 操作,表状态转
换成COMPLETED。

NOT,!逻辑非
操作符说明
如果操作数为0,返回1;如果操作数为非零,返回0;如果操作数为NULL,返
回NULL。
示例
示例1:操作数为非零,返回值为0。
gbase> SELECT NOT 10 FROM dual;
+--------+
| NOT 10 |
+--------+
|
0 |
+--------+
1 row in set
示例2:操作数为0,返回值为1。
gbase> SELECT NOT 0 FROM dual;
+-------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
665
| NOT 0 |
+-------+
|
1 |
+-------+
1 row in set
示例3:操作数为NULL,返回值为NULL。
gbase> SELECT NOT NULL FROM dual;
+-----------+
| NOT NULL
|
+-----------+
|
NULL |
+-----------+
1 row in set
示例4:表达式的值为非零,返回值为0。
gbase> SELECT ! (1+1) FROM dual;
+---------+
| ! (1+1) |
+---------+
|
0 |
+---------+
1 row in set
示例5:表达式! 1+1 与(!1)+1 等价,执行结果为1。
gbase> SELECT ! 1+1 FROM dual;
+-------+
| ! 1+1 |
+-------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
666
|
1 |
+-------+
1 row in set
gbase> SELECT (!1)+1 FROM dual;
+--------+
| (!1)+1 |
+--------+
|
1 |
+--------+
1 row in set
示例6:..NOT IN...
gbase> SELECT 1 NOT IN (2,3,null) FROM dual;
+---------------------+
| 1 NOT IN (2,3,null) |
+---------------------+
|
NULL |
+---------------------+
1 row in set