返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

使用示例
X-Tuner 支持三种模式,
分别是获取参数诊断报告的recommend 模式、
训练强化学习模
型的train 模式、以及使用算法进行调优的tune 模式。上述三种模式可以通过命令行参数来
区别,通过配置文件来指定具体的细节。
配置数据库连接信息
三种模式连接数据库的配置项是相同的,
有两种方式:
一种是直接通过命令行输入详细
的连接信息,
另一种是通过JSON 格式的配置文件输入,
下面分别对两种指定数据库连接信
息的方法进行说明。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
376
(1)
通过命令行指定:
分别传递--db-name --db-user --port --host --host-user 参数,可选--host-ssh- port 参数,
例如:
gs_dbmind component xtuner recommend --db-name postgres --db-user gbase --port 5678
--host 192.168.1.100 --host-user gbase
(2)
通过JSON 格式的连接信息配置文件指定:
JSON 配置文件的示例如下,并假设文件名为connection.json:
{
"db_name": "postgres", # 数据库名
"db_user": "dba",
# 登录到数据库上的用户名"host": "127.0.0.1", # 数据库宿主
机的IP 地址"host_user": "dba",
# 登录到数据库宿主机的用户名"port": 5432,
#
数据库的侦听端口号"ssh_port": 22
# 数据库宿主机的SSH 侦听端口号
}
则可通过-f connection.json 传递。
为了防止密码泄露,
配置文件和命令行参数中默认都不包含密码信息,
用户在输入上述
连接信息后,
程序会采用交互式的方式要求用户输数据库密码以及操作系统登录用户的
密码。
recommend 模式使用示例
对recommend 模式生效的配置项为scenario,
若为auto,
则自动检测workload 类型。

行下述命令,获取诊断结果:
gs_dbmind component xtuner recommend -f connection.json
则可以生成诊断报告如下:

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
377
图11- 3 recommend 模式生成的报告示意图
在上述报告中,推荐了该环境上的数据库参数配置,并进行了风险提示。
报告同时生成
了当前workload 的特征信息,其中有几个特征是比较有参考意义的:

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
378

temp_file_size:产生的临时文件数量,如果该结果大于0,则表明系统使用了临
时文
件。
使用过多的临时文件会导致性能不佳,
如果可能的话,
需要提高work_mem 参数的
配置。

cache_hit_rate:shared_buffer 的缓存命中率,表明当前workload 使用缓存的效率。

read_write_ratio:数据库作业的读写比例。

search_modify_ratio:数据库作业的查询与修改数据的比例。

ap_index:表明当前workload 的AP 指数,取值范围是0 到10,该数值越大,表明越偏
向于数据分析与检索。

workload_type:根据数据库统计信息,推测当前负载类型,分为AP、TP 以及HTAP
三种类型。

checkpoint_avg_sync_time:数据库在checkpoint 时,平均每次同步刷新数据到
磁盘的
时长,单位是毫秒。

load_average:平均每个CPU 核心在1 分钟、5 分钟以及15 分钟内的负载。一般地,
该数值在1 左右表明当前硬件比较匹配workload、
在3 左右表明运行当前作业压力比较
大,大于5 则表示当前硬件环境运行该workload 压力过大(此时一般建议减少负载或
升级硬件)。

recommend 模式会读取数据库中的pg_stat_database 以及pg_stat_bgwriter 等系统表
中的信息,需要登录到数据库上的用户具有足够的权限(建议为管理员权限,
可通
过alter user username sysadmin;授予username 相应的权限)。

由于某些系统表会一直记录统计信息,
这可能会对负载特征识别造成干扰,
因此建
议最好先清空某些系统表的统计信息,运行一段时间的workload 后再使用
recommend 模式进行诊断,以便获得更准确的结果。清除统计信息的方法为:
select pg_stat_reset_shared('bgwriter');
select pg_stat_reset();
train 模式使用示例
该模式是用来训练深度强化学习模型的,与该模式有关的配置项为:

rl_algorithm:用于训练强化学习模型的算法,当前支持设置为ddpg.

rl_model_path:训练后生成的强化学习模型保存路径。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
379

rl_steps:训练过程的最大迭代步数。

max_episode_steps:每个回合的最大步数。

scenario:明确指定的workload 类型,如果为auto 则为自动判断。在不同模式下,推荐
的调优参数列表也不一样。

tuning_list:用户指定需要调哪些参数,如果不指定,则根据workload 类型自动推荐应
该调的参数列表。如需指定,则tuning_list 表示调优列表文件的路径。一个调优列表配
置文件的文件内容示例如下:
{
"work_mem": { "default": 65536,
"min": 65536,
"max": 655360,
"type": "int", "restart": false
},
"shared_buffers": { "default": 32000,
"min": 16000,
"max": 64000,
"type": "int", "restart": true
},
"random_page_cost": { "default": 4.0,
"min": 1.0,
"max": 4.0,
"type": "float", "restart": false
},
"enable_nestloop": { "default": true, "type": "bool", "restart": false
}
}
待上述配置项配置完成后,可以通过下述命令启动训练:
gs_dbmind component xtuner train -f connection.json
训练完成后,会在配置项rl_model_path 指定的目录中生成模型文件。
tune 模式使用示例
tune 模式支持多种算法,
包括基于强化学习(Reinforcement Learning, RL)
的DDPG 算
法、基于全局搜索算法(Global OPtimization algorithm, GOP)算法的贝叶斯优化算法
(Bayesian Optimization)以及粒子群算法(Particle Swarm Optimization, PSO)。
与tune 模式相关的配置项为:

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
380

tune_strategy:指定选择哪种算法进行调优,支持rl(使用强化学习模型进行调优)、
gop(使用全局搜索算法)以及auto(自动选择)。若该参数设置为rl,则rl 相关的配
置项生效。
除前文提到过的train 模式下生效的配置项外,
test_episode
配置项也生效,
该配置项表明调优过程的最大回合数,
该参数直接影响了调优过程的执行时间
(一般地,
数值越大越耗时)。

gop_algorithm:选择何种全局搜索算法,支持bayes 以及pso。

max_iterations:最大迭代轮次,数值越高搜索时间越长,效果往往越好。

particle_nums:在PSO 算法上生效,表示粒子数。

scenario 与tuning_list 见上文train 模式中的描述。
待上述配置项配置完成后,可以通过下述命令启动调优:
gs_dbmind component xtuner tune -f connection.json
在使用tune 和train 模式前,用户需要先导入benchmark 所需数据并检查benchmark 能
否正常跑通。调优过程结束后,调优程序会自动恢复调优前的数据库参数配置。


GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 240 -

在以下两个目录中提供示例:

安装 GBase 8s JDBC Driver 软件的 demo 目录

demo 目录下的 tools 目录
demo 目录中的示例
每个实例都具有自己的子目录。大多数目录包括描述示例以及如何运行这些示例的
README 文件。
目录
示例的类型
basic
显示一般数据库操作的示例
bson
显示 IfxBSONObject 扩展类用法的示例,此类用于访问 GBase
8s BSON 数据类型
clob-blob
使用智能大对象的示例
udt-distinct
使用不透明类型和 DISTINCT 数据类型的示例(使用不透明类型的附加
示例在udtudrmgr 目录中的示例)
complex-types
使用行和集合类型的示例
rmi
使用远程方法调用的示例
stores7
stores7 演示数据库
pickaseat
使用 DataSource 对象的示例
connection-pool 说明使用连接池的示例
proxy
说明使用 HTTP 代理服务器的示例
xml
说明存储和检索 XML 文件的示例
hdr
说明使用高可用数据复制的示例
basic 目录中的示例
下表列出了 basic 目录中的文件。
示例程序名
描述
autofree.java
显示如何使用 IFX_AUTOFREE 环境变量
BatchUpdate.java
显示如何发送批量更新到服务器
ByteType.java
显示如何插入或选择包含 BYTE 列的表
CallOut1.java
使用 CallableStatement 方法执行具有 OUT 参数的 C 函

CallOut2.java
使用 CallableStatement 方法执行具有 OUT 参数的 SPL

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 241 -

示例程序名
描述
函数
CallOut3.java
使用 IfmxCallableStatement.IfxRegisterOut
Parameter() 方法执行具有 Boolean OUT 的 C 函数
CallOut4.java
使用 IfmxCallableStatement.hasOutParameter() 方法执
行具有 CLOB 类型 OUT 参数的 C 函数
CreateDB.java
创建名为 testDB 的数据库
DBCENTURYSelect.java
使用 getString() 方法检索日期字符串表示形式,其中四
位数年份扩展是基于 DBCENTURY 属性值
DBCENTURYSelect2.java
检索一个日期字符串表示形式,其中四位数年份扩展是基
于 DBCENTURY 属性值,使用字符串到二进制的转换
使用 getDate() 方法创建日期字符串表示形式所基于
的 java.sql.Date 对象
DBCENTURYSelect3.java
检索一个日期字符串表示形式,其中四位数展开式基
于 DBCENTURY 属性值,使用字符串到二进制的转换
使用 getTimestamp() 方法来构建日期字符串表示形式所
基于的 java.sql.Timestamp 对象
DBCENTURYSelect4.java
检索一个日期字符串表示形式,其中四位数展开式基
于 DBCENTURY 属性值,使用二进制到字符串的转换
使用 getDate() 方法来构建日期字符串表示形式所基于
的 java.sql.Date 对象
DBCENTURYSelect5.java
检索一个日期字符串表示形式,其中四位数展开式基
于 DBCENTURY 属性值,使用二进制到字符串的转换
使用 getTimestamp() 方法来构建日期字符串表示形式所
基于的 java.sql.Timestamp 对象
DBConnection.java
创建到数据库和数据库服务器的连接
DBDATESelect.java
显示如何根据 URL 字符串中的 DBDATE 属性值从数据库检
索日期对象和日期字符串表示形式
DBMetaData.java
显示如何检索具有 DatabaseMetaData 接口的数据库消息
DropDB.java
删除名为 testDB 的数据库
ErrorHandling.java
显示如何检索 RSAM 错误消息

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 242 -

示例程序名
描述
GLDATESelect.java
显示如何根据 URL 字符串中的 GL_DATE 属性值从数据库
检索日期对象和日期字符串表示形式
Intervaldemo.java
显示如何插入和选择 GBase 8s 间隔数据
LOCALESelect.java
显示如何根据 URL 字符串中的 CLIENT_LOCALE 属性值从
数据库检索日期对象和日期字符串表示形式
locmsg.java
显示如何使用支持本地化错误消息的 GBase 8s 扩展方法
MultiRowCall.java
显示如何在存储过程调用中返回多个行
OptimizedSelect.java
显示如何使用 FET_BUF_SIZE 环境变量调整 GBase 8s
JDBC Driver 元组缓冲区大小
optofc.java
显示如何使用 OPTOFC 环境变量
PropertyConnection.java 显示如果通过属性列表指定连接环境变量
RSMetaData.java
显示如何使用 ResultSetMetaData 接口检索结果集的信息
ScrollCursor.java
显示如何使用滚动游标检索结果集
Serial.java
显示如何插入和检索 GBase 8s SERIal 及 SERIal8 数据
SimpleCall.java
显示如何调用存储过程
SimpleConnection.java
显示如何连接到数据库或数据库服务器
SimpleSelect.java
显示如何将简单的 SELECT 查询发送到数据库服务器
TextConv.java
显示如何将文件从客户端代码集转换为 Unicode ,然后从
Unicode 转换为数据库代码集
TextType.java
显示如何插入和选择包含 TEXT 数据类型的列的表
UpdateCursor1.java
显示如何在查询中使用 ROWID 列创建一个可更新的滚动游标
UpdateCursor2.java
显示如何在查询中使用 SERIAL 列创建一个可更新的滚动游

UpdateCursor3.java
显示如何在查询中使用主键列创建一个可更新的滚动游标
bson 目录中的示例
下表列出了 bson 目录中的文件。
示例程序名称
描述
IfxBSONObjectDemo.java 显示 JSON 数据类型和 BSON 的用法
clob-blob 目录中的示例

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 243 -

下表列出了 clob-blob 目录中的文件。
示例程序名称
描述
demo1.java
显示如何创建两个具有 BLOB 和 CLOB 列的表,并比较数据
demo2.java
显示如何创建具有 BYTE 和 TEXT 列的表和另一个具有 BLOB 和 CLOB
列的表,然后比较这两个表的数据
demo3.java
显示如何创建一个具有 BLOB 和 CLOB 列的表,和一个具有 BYTE 和
TEXT 列的表,然后比较这两个表的数据
demo4.java
显示如何创建两个分别具有 BYTE 和 TEXT 列的表,并比较数据
demo5.java
显示如何将文件的数据存储到 BLOB 表列
demo6.java
显示如何读取智能大对象中的部分数据
demo_11.java
显示如何将文件的数据读取到缓冲区并将缓冲区的数据写入智能大对象
demo_13.java
显示如何将数据写入智能大对象,然后将智能大对象插入到表
demo_14.java
显示如何从表访存智能大对象
udt-distinct 目录中的示例
下表列出了 udt-distinct 目录中的文件(使用不透明类型的附加示例在 udtudrmgr 目录中的
示例中有所描述)。
示例程序名称
描述
charattrUDT.java 显示如何使用 SQLData 实现不透明固定长度类型
createDB.java
创建一个其它 udt-distinct 演示文件使用的数据库
createTypes.java 显示如何在数据库中创建不透明和 distinct 类型
distinct_d1.java 显示如何不使用 SQLData 而创建 distinct 类型
distinct_d2.java 显示如何不使用 SQLData 创建第二个 distinct 类型
dropDB.java
删除其它 udt-distinct 演示文件使用的数据库
largebinUDT.java 显式如何使用 SQLData 实现不透明类型
(启用智能大对象)

manualUDT.java
显示如何实现允许更改输入流中的位置的不透明类型
myMoney.java
显式如何使用 SQLData 实现 distinct 类型
udt_d1.java
显示如何创建固定长度不透明类型
udt_d2.java
显示如何使用嵌入式智能大对象创建不透明类型
udt_d3.java
显示如何创建一个允许更改输入流中位置的不透明类型
complex-types 目录中的示例

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 244 -

下表列出了 complex-types 目录中的文件。
示例程序名称
描述
createDB.java
创建具有命名行的数据库
list1.java
使用 java.sql.Array 和 java.util.Collection 类插入和选
择简单集合
list2.java
插入和选择具有嵌套行元素的集合
对集合使用 java.sql.Array 和 java.util.Collection 类,
对嵌套行使用 SQLData 和 Struct 接口
r1_t.java
为命名行 r1_t 定义 SQLData 类
r2_t.java
为命名行 r2_t 定义 SQLData 类
GenericStruct.java 实例化 java.sql.Struct 对象以插入数据到命名或未命名行
row1.java
使用 SQLData 和 Struct 接口插入和选择一个简单的命名行
row2.java
使用 SQLData 和 Struct 接口插入和选择具有嵌套集合的命
名行
SQLData 接口使用 GBase 8s IfmxComplexSQLOutput.
writeObject() 和 IfmxComplexSQLOutput.readObject() 扩展
方法写入和读取嵌套集合
row3.java
插入并选择具有嵌套集合的未命名行
fullname.java
使命名行 fullname_t 包含 SQLData 类
供 demo1.java 和 demo2.java 文件使用
person.java
使命名行 person_t 包含 SQLData 类
供 demo1.java 和 demo2.java 文件使用
demo1.java
将一个命名行访存到 SQLData 对象
demo2.java
将 SQLData 对象插入到一个命名行列
demo3.java
将一个未命名行列插入到 Struct 对象
demo4.java
将 Struct 对象插入到命名行列
demo5.java
将 GBase 8s SET 列访存到 java.util.HashSet 对象
demo6.java
将 GBase 8s SET 列访存到 java.util.TreeSet 对象

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 245 -

示例程序名称
描述
提供自定义类型映射以重写缺省值
demo7.java
将 java.util.HashSet 对象插入到 GBase 8s SET 列
demo8.java
将 GBase 8s SET 列访存到 java.sql.Array 对象
dropDB.java
删除数据库
proxy 目录中的示例
下表列出了 proxy 目录中的文件。目录中的 README 文件包含设置信息。
示例程序名称
描述
ProxySelect.java (应用程序)创建样本数据库并使用四种场景连接到数据库:

使用代理服务器而不使用 LDAP 服务器连接

使用 LDAP 服务器而不使用代理服务器连接

使用 sqlhosts 文件连接

直接连接(无代理 servlet、sqlhosts 文件或 LDAP 服务器)
proxy.sh
(shell 脚本)启动 ProxySelect.java。要运行此脚本(和样本),
请输入:
proxy.sh -d ProxySelect -s 2
proxy.java
(小程序)从应用小程序执行与 ProxySelect.java 相同的操作。
要运行此应用小程序,请输入:
appletviewer proxy.html
proxy.html
proxy.java 的 HTML 文件
ifmx.conf
LDAP 配置文件示例
ifmx.ldif
LDAP ldif 文件示例
connection-pool 目录中的示例
下表列出了 connection-pool 目录中的文件。目录中的 README 文件包含设置信息。
示例程序名称
描述
AppSimulator.java 模拟多客户端线程进行 DataSource 连接
SetupDB.java
创建并填充一个样本数据库。请参阅示例运行命令的代码开头的注
释。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 246 -

示例程序名称
描述
DS_Pool.prop
列出连接池应用程序的属性
myCPDS.prop
列出连接池应用程序的属性,包括可选的调整属性
DS_no_Pool.prop
列出应用程序的属性,不包括连接池
Register.java
使用 JNDI Name 注册 DataSource 对象
运行命令的示例为:
java Register DS_no_Pool /tmp
runDemo
(Shell 脚本)
创建并填充一个样本数据库;
注册数据源 DS_no_Pool
和 DS_Pool;运行应用程序模拟多个客户端线程连接样本数据库
xml 目录中的示例
下表列出了 xml 目录中的示例。
示例程序名称
描述
CreateDB.java
创建一个样本数据库
makefile
编译示例
myHandler.java
SAX 解析程序回调例程类示例
sample1.xml
简单的 XML slide
sample2.xml
XML slide 的样例集
sample2.dtd
定义 sample1.xml 文档类型
xmldemo1.java
使
用 XMLtoString(), getInputSource() 和 myHandler.java 将
sample1.xml 中的 XML 转换为一个 InputSource 对象,
然后使用
SAX 解析程序解析它。
hdr 目录中的示例
下表包含了 hdr 目录中的文件。目录中的 README 文件包含设置信息。
示例程序名称
描述
SetupDB.java
创建样本数据库和表
Register.java
使用 JNDI Name 注册器注册 DS_no_Pool 和
DS_Pool DataSource 对象。运行命令示例如下:
java Register DS_no_Pool /tmp

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 247 -

AppSimulator.java
模拟使用 DataSource.getConnection() 方法进行池式和非
池式连接的高可用数据复制重定向
HdrSimpleConnect.java 显示如何使用 DriverManager.getConnection() 方法实现
HDR 重定向
tools 目录中的示例
tools 目录包括以下子目录:

udtudrmgr 目录,包括使用 UDT 和 UDR Manager 创建不透明类型和 UDR 的示
例。

classgenerator 目录,包括 ClassGenerator 实用程序的样本输出文件。
udtudrmgr 目录中的示例
下表包含了 udtudrmgr 目录中的文件。目录中的 README 文件包含设置信息。
示例程序名称
描述
createDB.java
创建样本数据库
dropDB.java
删除样本数据库
Circle.java
(示例应用程序 1)使用缺省的 Input 和 Output 函数将
Java™ 类转换为 Java 不透明类型
PlayWithCircle.java (示例应用程序 1)在客户端应用程序中使用 Circle 不透明类

Circle2.java
(示例应用程序 2)使用用户提供的 Input 和 Output 函数
将 Java 类转换为 Java 不透明类型
PlayWithCircle2.java (示例应用程序 2)在客户端应用程序中使用 Circle2 不透明类

MyCircle.java
(示例应用程序 3)在不预先存在 Java 类的情况下,创建固定
长度不透明类型
Group1.java
(示例应用程序 4)将现有 Java 类中的方法映射到 Java UDR
PlayWithGroup1.java (示例应用程序 4)在客户端应用程序中使用 Group1.java 的
UDR

8611 集群增加了一组SQL 命令(rebalance)把表从一个distribution 转换到另一个
distribution。
rebalance 命令是异步执行命令。
在coordinator 上使用gccli 执行rebalance
命令后,
rebalance 任务会被加入到gclusterdb.rebalancing_status 集群表中。
coordinator
集群会从
gclusterdb.rebalancing_status
中选取优先级最高的
gcluster_rebalancing_concurrent_count 个表进行rebalance。
coordinator 集群中只会有
一个coordinator 节点负责后台执行表rebalance。
rebalance
任务执行状态需要从
gclusterdb.rebalancing_status
表中查询。
gclusterdb.rebalancing_status
的表结构如下图所示。不建议对
gclusterdb.rebalancing_status 表做ddl/dml 操作。
表 4-16 gclusterdb.rebalancing_status 的表结构图
字段名
字段类型
字段含义
index_name
varchar(129)
数据库名.表名
db_name
varchar(64)
数据库名
table_name
varchar(64)
表名
tmptable
varchar(129)
rebalance 任务执行时使用的中
间表名称。如果不使用中间表,
那么该字段值为NULL。

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 121
start_time
datetime
在STARTING 状态时,
表示任务加
入的时间。在RUNNING 状态时,
start_time 表示任务更改为
RUNNING 的时间。
end_time
datetime
表示rebalance 任务结束的时间。

status
varchar(32)
表示rebalance 任务的当前状态。

percentage
int(11)
表示rebalance 任务的执行进度。

priority
int(11)
表示rebalance 任务的优先级。
值最小的优先执行。
host
varchar(32)
表示rebalance 任务被哪个
coordinator 节点执行。
distribution_id
bigint(8)
表示rebalance 任务要把表
rebalance 到哪个distribution
id。
一个表在rebalance 时有5 个状态,
分别是:
STARTING、
RUNNING、
COMPLETED、
PAUSED、CANCELED。这5 种状态转换如下图所示:
图 4-1 5 种状态转换图
RUNNING
STARTING
PAUSED
CANCELED
COMPLETED

说明

安装系统时,需要把划分的逻辑卷mount 到 /opt 目录,因为GBase UP 默认会安装在
这个目录下,需要使用的空间比较大。

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

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


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

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

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 122
注意
当前版本只支持express 引擎表的rebalance,不支持GsSYS 引擎表rebalance。
rebalance table
语法格式
rebalance table[database_name.] table_name [to distribution_id]
命令说明
对database_name.table_name 做rebalance 操作。如果不指定[to distribution_id],那
么rebalance 操作会把database_name.table_name 转换到新的distributon 上。如果
database_name.table_name 已经是分布在新的distribution 上,那么rebalance table 操
作报错,不会向gclusterdb.rebalancing_status 中增加rebalance 任务。如果指定[to
distribution_id],那么rebalance 操作会把database_name.table_name 转换到指定的
distribution_id上。
如果database_name.table_name已经是分布在指定的distribution_id
上,那么rebalance table 操作报错,不会向gclusterdb.rebalancing_status 中增加
rebalance 任务。
gbase> rebalance table testdis;
Query OK, 1 row affected
gbase> rebalance table testdis to 1;
Query OK, 1 row affected
pause rebalance table
语法格式
pause rebalance table [database_name.]table_name
命令说明
如果table_name 处于STARTING 或者RUNNING 状态,可以使用pause rebalance
table 命令暂停table_name 的rebalance 操作。如果pause rebalance table 命令返回影
响行数为1,则table_name 暂停成功;如果返回影响行数为0,则table_name 暂停
不生效。

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 123
gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+--------------+--------+------------+
| index_name | status | percentage |
+--------------+--------+------------+
| test.testdis | RUNNING| 10 |
+--------------+--------+------------+
1 row in set
gbase> pause rebalance table testdis ;
Query OK, 1 row affected
gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+--------------+--------+------------+
| index_name | status | percentage |
+--------------+--------+------------+
| test.testdis | PAUSED | 10 |
+--------------+--------+------------+
1 row in set
continue rebalance table
语法格式
continue rebalance table [database_name.]table_name
命令说明
如果table_name 处于PAUSED 状态,可以使用continue rebalance table 命令使
table_name 继续rebalance。
gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+--------------+--------+------------+
| index_name | status | percentage |
+--------------+--------+------------+
| test.testdis | PAUSED | 10 |
+--------------+--------+------------+
1 row in set

gbase> continue rebalance table test.testdis;
Query OK, 1 row affected

gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+--------------+---------+------------+
| index_name | status | percentage |

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 124
+--------------+---------+------------+
| test.testdis | RUNNING | 10 |
+--------------+---------+------------+
1 row in set
cancel rebalance table
语法格式
cancel rebalance table [database_name.]table_name
命令说明
如果table_name 处于STARTING、RUNNING、PAUSED 状态,可以使用cancel
rebalance table 命令取消table_name 的rebalance 操作。
如果cancel rebalance table 命
令返回影响行数为1,则table_name 的rebalance 操作取消成功;如果返回影响行数
为0,则取消操作不生效。
gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+--------------+--------+------------+
| index_name | status | percentage |
+--------------+--------+------------+
| test.testdis | PAUSED | 10 |
+--------------+--------+------------+
1 row in set

gbase> cancel rebalance table testdis;
Query OK, 1 row affected

gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+--------------+----------+------------+
| index_name | status | percentage |
+--------------+----------+------------+
| test.testdis | CANCELED | 0 |
+--------------+----------+------------+
1 row in set
rebalance database
语法格式

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 125
rebalance database database_name [to distribution_id]
命令说明
rebalance database 是rebalance table 的批量操作形式。如果不指定[to
distribution_id],rebalance database 把database_name 下所有分布在老的distribution
下的表转换成新的distribution 表。
如果指定了[to distribution_id],
rebalance database
把database_name 下所有不属于distribution_id 的表转换成distribution_id 表。
rebalance database 返回加入gclusterdb.rebalancing_status 的rebalance 任务数。
gbase> rebalance database test;
Query OK, 3 rows affected
gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+----------+------------+
| index_name | status | percentage |
+---------------+----------+------------+
| test.testrep | RUNNING | 0 |
| test.testdis | STARTING | 0 |
| test.testrand | STARTING | 0 |
+---------------+----------+------------+
3 row in set
gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+-----------+------------+
| index_name | status | percentage |
+---------------+-----------+------------+
| test.testrep | COMPLETED | 100 |
| test.testdis | RUNNING | 10 |
| test.testrand | RUNNING | 90 |
+---------------+-----------+------------+
3 row in set
pause rebalance database
语法格式
pause rebalance database database_name
命令说明
pause rebalance database 暂停database 库所有处于STARTING 或者RUNNING 状态
表的rebalance操作。
pause rebalance database返回的影响行数是暂停下来的rebalance

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 126
任务数。
gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+-----------+------------+
| index_name | status | percentage |
+---------------+-----------+------------+
| test.testrand | COMPLETED | 100 |
| test.testdis | RUNNING | 10 |
| test.testrep | RUNNING | 90 |
+---------------+-----------+------------+
3 rows in set

gbase> pause rebalance database test;
Query OK, 1 row affected

gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+-----------+------------+
| index_name | status | percentage |
+---------------+-----------+------------+
| test.testrand | COMPLETED | 100 |
| test.testdis | PAUSED | 30 |
| test.testrep | COMPLETED | 100 |
+---------------+-----------+------------+
3 rows in set
continue rebalance database
语法格式
continue rebalance database database_name
命令说明
continue rebalance database 使database_name 下所有处于PAUSED 状态的表继续进
行rebalance。
gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+-----------+------------+
| index_name | status | percentage |
+---------------+-----------+------------+
| test.testrep | PAUSED | 0 |
| test.testrand | PAUSED | 10 |
| test.testdis | PAUSED | 10 |

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 127
+---------------+-----------+------------+
3 rows in set

gbase> continue rebalance database test;
Query OK, 3 row affected

gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+-----------+------------+
| index_name | status | percentage |
+---------------+-----------+------------+
| test.testrep | STARTING | 0 |
| test.testrand | RUNNING | 10 |
| test.testdis | RUNNING | 20 |
+---------------+-----------+------------+
3 rows in set
cancel rebalance database
语法格式
cancel rebalance database database_name
命令说明
cancel rebalance database 取消database_name 下所有处于STARTING、RUNNING、
PAUSED 状态表的rebalance 操作。cancel rebalance database 命令返回的影响行数是
取消掉的rebalance 任务数。
gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+---------+------------+
| index_name | status | percentage |
+---------------+---------+------------+
| test.testdis | RUNNING | 10 |
| test.testrep | RUNNING | 90 |
| test.testrand | STARTING| 0 |
+---------------+---------+------------+
3 rows in set

gbase> cancel rebalance database test ;
Query OK, 3 row affected

gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+-----------+------------+

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 128
| index_name | status | percentage |
+---------------+-----------+------------+
| test.testdis | CANCELED | 0 |
| test.testrep | COMPLETED | 100 |
| test.testrand | CANCELED | 0 |
+---------------+-----------+------------+
3 rows in set
rebalance instance
语法格式
rebalance instance [to distribution_id]
命令说明
rebalance instance 是rebalance table 的批量操作形式。
如果不指定[to distribution_id],
rebalance instance 把当前集群下所有分布在老的distribution 下的表转换成新的
distribution 表。如果指定了[to distribution_id],rebalance instance 把当前集群下所有
不属于distribution_id 的表转换成distribution_id 表。rebalance instance 返回加入
gclusterdb.rebalancing_status 的rebalance 任务数。
gbase> rebalance instance;
Query OK, 6 rows affected

gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+----------+------------+
| index_name | status | percentage |
+---------------+----------+------------+
| test1.t1 | RUNNING | 0 |
| test.testdis | STARTING | 0 |
| test.testrand | STARTING | 0 |
| test1.t3 | STARTING | 0 |
| test1.t2 | STARTING | 0 |
| test.testrep | STARTING | 0 |
+---------------+----------+------------+
6 rows in set

pause rebalance instance
语法格式

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 129
pause rebalance instance
命令说明
pause rebalance instance 暂停当前集群下所有处于STARTING 或者RUNNING 状态
表的rebalance 操作。
pause rebalance instance 返回的影响行数是暂停下来的rebalance
任务数。
gbase> pause rebalance instance;
Query OK, 4 rows affected

gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+-----------+------------+
| index_name | status | percentage |
+---------------+-----------+------------+
| test1.t1 | PAUSED | 10 |
| test.testdis | PAUSED | 10 |
| test.testrand | COMPLETED | 100 |
| test1.t3 | PAUSED | 10 |
| test1.t2 | PAUSED | 10 |
| test.testrep | COMPLETED | 100 |
+---------------+-----------+------------+
6 rows in set

continue rebalance instance
语法格式
continue rebalance instance
命令说明
continue rebalance instance 使当前集群下所有处于PAUSED 状态的表继续进行
rebalance。
gbase> continue rebalance instance ;
Query OK, 4 rows affected

gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+-----------+------------+
| index_name | status | percentage |
+---------------+-----------+------------+

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 130
| test.testrep | COMPLETED | 100 |
| test.testdis | RUNNING | 10 |
| test.testrand | COMPLETED | 100 |
| test1.t1 | RUNNING | 10 |
| test1.t3 | RUNNING | 10 |
| test1.t2 | RUNNING | 10 |
+---------------+-----------+------------+
6 rows in set

cancel rebalance instance
语法格式
cancel rebalance instance
命令说明
cancel rebalance instance 取消当前集群下所有处于STARTING、
RUNNING、
PAUSED
状态表的rebalance 操作。cancel rebalance instance 命令返回的影响行数是取消掉的
rebalance 任务数。
gbase> cancel rebalance instance ;
Query OK, 4 rows affected

gbase> select index_name, status, percentage from gclusterdb.rebalancing_status;
+---------------+-----------+------------+
| index_name | status | percentage |
+---------------+-----------+------------+
| test.testrep | COMPLETED | 100 |
| test.testdis | CANCELED | 0 |
| test.testrand | COMPLETED | 100 |
| test1.t1 | CANCELED | 0 |
| test1.t3 | CANCELED | 0 |
| test1.t2 | CANCELED | 0 |
+---------------+-----------+------------+
6 rows in set

调整rebalance 任务优先级
gclusterdb.rebalancing_status 表中记录了当前集群的rebalance 任务。任务以表为单
位。
从gclusterdb.rebalancing_status 表中除了可以查询rebalance 任务的执行状态外,
还可以调整单个rebalance 任务的优先级。priority 值最小的任务先做。如下示例,

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 131
先设置gcluster_rebalancing_concurrent_count 值为0,
然后执行rebalance database 命
令增加rebalance 任务。此时所有rebalance 任务都不会开始,可以调整rebalance 任
务的优先级。
调整完之后再设置gcluster_rebalancing_concurrent_count 为需要的并发
数,如下所示。
gbase> set global gcluster_rebalancing_concurrent_count = 0;
Query OK, 0 rows affected
gbase> rebalance database test;
Query OK, 3 rows affected
gbase> select index_name, status, priority from
gclusterdb.rebalancing_status;
+------------+----------+----------+
| index_name | status | priority |
+------------+----------+----------+
| test.t3 | STARTING | 5 |
| test.t1 | STARTING | 5 |
| test.t2 | STARTING | 5 |
+------------+----------+----------+
3 rows in set
gbase>
update
gclusterdb.rebalancing_status
set
priority
=
6
where
index_name='test.t3';
Query OK, 1 row affected
Rows matched: 1 Changed: 1 Warnings: 0

gbase>
update
gclusterdb.rebalancing_status
set
priority
=
4
where
index_name='test.t2';
Query OK, 1 row affected
Rows matched: 1 Changed: 1 Warnings: 0
gbase> select index_name, status, priority from
gclusterdb.rebalancing_status;
+------------+----------+----------+
| index_name | status | priority |
+------------+----------+----------+
| test.t3 | STARTING | 6 |
| test.t1 | STARTING | 5 |
| test.t2 | STARTING | 4 |
+------------+----------+----------+
3 rows in set
gbase> set global gcluster_rebalancing_concurrent_count = 1;
Query OK, 0 rows affected
gbase> select index_name, status, priority from gclusterdb.rebalancing_status;
+------------+----------+----------+
| index_name | status | priority |
+------------+----------+----------+

GBase UP 产品手册 4 管理员指南

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 132
| test.t3 | STARTING | 6 |
| test.t1 | STARTING | 5 |
| test.t2 | RUNNING | 4 |
+------------+----------+----------+
3 rows in set