返回首页

gbase数据、南大通用产品文档:GBase8a集群相关命令

更新日期:2024年09月11日

1.
用户优先级设定

语法:
grant usage on *.* to user_name with task_priority priority_value
priority_value 的取值范围为0,1,2,3 对应最小优先级,低优先级、中优先
级和高优先级,缺省为中优先级2。

权限要求:
有grant 权限的用户,推荐用户:root

示例:
gbase> create user uer1 ;
Query OK, 0 rows affected
gbase> grant usage on *.* to
uer1
with task_priority
1;
Query OK, 0 rows affected
gbase> select task_priority from user where user='user1';
+---------------+
| task_priority |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1294
+---------------+
|
1 |
+---------------+
1 row in set
2.
用户资源组设定

语法:
grant usage on *.* to user_name with resource_group group_value
group_value 的取值范围为0-15,0 组为缺省组。

权限要求:
有grant 权限的用户,推荐用户:root。

示例:
gbase> create user user0 identified by 'user0';
Query OK, 0 rows affected
gbase> grant usage on *.* to user0 with resource_group 0;
Query OK, 0 rows affected
gbase> select resource_group from user where user='user0';
+----------------+
| resource_group |
+----------------+
|
0 |
+----------------+
1 row in set
3.
查询并行度设定

语法:
grant usage on *.* to user_name with max_cpus_used max_cpus_used_value
max_cpus_used_value 的取值范围为大于0 的整数,
该参数决定查询的并行度,
推荐值为用户所在资源组的可用CPU 数目。

权限要求:
有grant 权限的用户,推荐用户:root。

示例:
gbase> use gbase;
Query OK, 0 rows affected

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1295
gbase> create user user1;
Query OK, 0 rows affected
gbase> grant usage on *.* to
user1
with max_cpus_used
4;
Query OK, 0 rows affected
gbase> select max_cpus from user where user='user1';
+----------+
| max_cpus |
+----------+
|
4 |
+----------+
1 row in set
4.
用户优先级与任务调度配重设定

语法
Set
gcluster
global
gbase_high_priority_weight = weight_value(80-100)
Set
gcluster
global
gbase_mid_priority_weight = weight_value (60-80)
Set
gcluster
global
gbase_low_priority_weight = weight_value (40-60)
Set
gcluster
global
gbase_min_priority_weight = weight_value (20-40)

weight_value 取值按高、中、低、最小划分,具体范围如下:
高:80 – 100
中:60 - 80
低:40 - 60
最小:20 - 40

权限要求
有set 权限用户

示例
gbase> Set
gcluster
global
gbase_min_priority_weight = 20;
Query OK, 0 rows affected, 32 warnings (Elapsed: 00:00:00.01)
gbase> show variables like '%gbase_min_priority_weight%';
+---------------------------+-------+
| Variable_name
| Value |
+---------------------------+-------+
| gbase_min_priority_weight | 20
|

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1296
+---------------------------+-------+
1 row in set (Elapsed: 00:00:00.00)
说明
使用上述语句配重值不会持久化,即gnode 重新启动后会丢失。
要是需要持久化,则需要在执行该语句之前先执行:
set
gbase_global_variable_persistent = 1
执行该语句后执行:
set
gbase_global_variable_persistent = 0
配重参数可控制cpu.shares 与blkio.weight 参数。
表5- 165 具体可参考
参数
CGroup 最
小值
CGroup 最
大值
CGroup 缺
省值
集群
最小值
集群
最大值
集群比重
计算
cpu.shares
1

1024
1
2560
(2560 *
weight) /
100
Blkio.weig
ht
1
1000
300
1
1000
(1000 *
weight) /
100
5.
显示优先级状态
1)
语法
Show priorities [where conditions]
2)
显示
node_name:集群节点名称。
Group:资源组编号。
Priority:优先级编号。
priority_weight:优先级配重。
Status:优先级开启状态ON/OFF。
Description:优先级控制参数描述。
3)
权限要求
有show 权限用户。
4)
示例

需要配置cgconfig.conf 文件。在配置文件中为资源组0、1 进行设置。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1297

启动cgconfig 服务。

重启gcware:
$gcluster_services gcware restart
完成以上配置操作后,再执行下面示例的命令,0、1 两个控制组的优先
级将为开启状态。

示例1:查看集群全部节点优先级状态。
gbase> show priorities;
+-----------+-------+----------+----------------+--------+-------------+
| node_name | group | priority | priority-weight | status | description|
+-----------+-------+----------+-----------------+-------+-------------+
| node1
|
0|
0 |
20 | ON
|......
|
| node1
|
0|
1 |
40 | ON
|......
|
| node1
|
0|
2 |
60 | ON
|......
|
| node1
|
0|
3 |
80 | ON
|......
|
| node1
|
1|
0 |
20 | ON
|......
|
| node1
|
1|
1 |
40 | ON
|......
|
| node1
|
1|
2 |
60 | ON
|......
|
| node1
|
1|
3 |
80 | ON
|......
|
| node1
|
2|
0 |
20 | OFF
|......
|
| node1
|
2|
1 |
40 | OFF
|......
|
| node1
|
2|
2 |
60 | OFF
|......
|
| node1
|
2|
3 |
80 | OFF
|......
|
......
| node2
|
15|
0 |
20 | OFF
|......
|
| node2
|
15|
1 |
40 | OFF
|......
|
| node2
|
15|
2 |
60 | OFF
|......
|
| node2
|
15|
3 |
80 | OFF
|......
|
+-----------+-------+----------+-----------------+-------+-------------+
128 rows in set

示例2:查看node1 节点的优先级状态信息。
gbase> show
priorities
where node_name = 'node1';
+-----------+-------+----------+----------------+--------+-------------+
| node_name | group | priority | priority-weight | status | description|
+-----------+-------+----------+-----------------+-------+-------------+
| node1
|
0|
0 |
20 | ON
|......
|

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1298
| node1
|
0|
1 |
40 | ON
|......
|
| node1
|
0|
2 |
60 | ON
|......
|
| node1
|
0|
3 |
80 | ON
|......
|
| node1
|
1|
0 |
20 | ON
|......
|
| node1
|
1|
1 |
40 | ON
|......
|
| node1
|
1|
2 |
60 | ON
|......
|
| node1
|
1|
3 |
80 | ON
|......
|
| node1
|
2|
0 |
20 | OFF
|......
|
| node1
|
2|
1 |
40 | OFF
|......
|
| node1
|
2|
2 |
60 | OFF
|......
|
| node1
|
2|
3 |
80 | OFF
|......
|
......
| node1
|
15|
0 |
20 | OFF
|......
|
| node1
|
15|
1 |
40 | OFF
|......
|
| node1
|
15|
2 |
60 | OFF
|......
|
| node1
|
15|
3 |
80 | OFF
|......
|
+-----------+-------+----------+-----------------+-------+-------------+
64 rows in set

示例3:查看状态为ON 的优先级信息。
gbase> show priorities where status ='ON';
+-----------+-------+----------+----------------+--------+-------------+
| node_name | group | priority | priority-weight | status | description|
+-----------+-------+----------+-----------------+-------+-------------+
| node1
|
0|
0 |
20 | ON
|......
|
| node1
|
0|
1 |
40 | ON
|......
|
| node1
|
0|
2 |
60 | ON
|......
|
| node1
|
0|
3 |
80 | ON
|......
|
| node1
|
1|
0 |
20 | ON
|......
|
| node1
|
1|
1 |
40 | ON
|......
|
| node1
|
1|
2 |
60 | ON
|......
|
| node1
|
1|
3 |
80 | ON
|......
|
+-----------+-------+----------+-----------------+-------+-------------+
8 rows in set

示例4:关闭node1 节点cgroup 配置服务(service cgconfig stop)。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1299
# service cgconfig stop
Stopping cgconfig service: [
OK
]
# su - gbase
$ gcluster_services all restart
Stopping GCMonit success!
Signaling GCRECOVER (gcrecover) to terminate: [
OK
]
Waiting for gcrecover services to unload:...[
OK
]
Signaling GCSYNC (gc_sync_server) to terminate: [
OK
]
[
OK
]for gc_sync_server services to unload:[
OK
]
Signaling GCLUSTERD
to terminate: [
OK
]
.[
OK
]or gclusterd services to unload:...[
OK
]
Signaling GBASED
to terminate: [
OK
]
.[
OK
]or gbased services to unload:[
OK
]
Signaling GCWARE (gcware) to terminate: [
OK
]
Waiting for gcware services to unload:.[
OK
]
Starting GCWARE (gcwexec): [
OK
]
Starting GCMonit success!
Starting GBASED
: [
OK
]
Starting GCLUSTERD :
[
OK
]
Starting GCSYNC : [
OK
]
Starting GCRECOVER : [
OK
]
$ gccli -uroot
GBase client 9.5.3.17.117651. Copyright (c) 2004-2019, GBase.
All Rights Reserved.
gbase> show
priorities
where node_name = 'node1';
+-----------+-------+----------+----------------+--------+-------------+
| node_name | group | priority | priority-weight | status | description|
+-----------+-------+----------+-----------------+-------+-------------+
| node1
|
0|
0 |
20 | OFF
|......
|
| node1
|
0|
1 |
40 | OFF
|......
|
| node1
|
0|
2 |
60 | OFF
|......
|
| node1
|
0|
3 |
80 | OFF
|......
|
| node1
|
1|
0 |
20 | OFF
|......
|
| node1
|
1|
1 |
40 | OFF
|......
|
| node1
|
1|
2 |
60 | OFF
|......
|
| node1
|
1|
3 |
80 | OFF
|......
|

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1300
| node1
|
2|
0 |
20 | OFF
|......
|
| node1
|
2|
1 |
40 | OFF
|......
|
| node1
|
2|
2 |
60 | OFF
|......
|
| node1
|
2|
3 |
80 | OFF
|......
|
......
| node1
|
15|
0 |
20 | OFF
|......
|
| node1
|
15|
1 |
40 | OFF
|......
|
| node1
|
15|
2 |
60 | OFF
|......
|
| node1
|
15|
3 |
80 | OFF
|......
|
+-----------+-------+----------+-----------------+-------+-------------+
64 rows in set

示例5:重新开启node1 的cgroup 配置服务(service cgconfig start)。
# service cgconfig start
Starting cgconfig service: [
OK
]
# su - gbase
# gcluster_services all restart
Stopping GCMonit success!
Signaling GCRECOVER (gcrecover) to terminate: [
OK
]
Waiting for gcrecover services to unload:...[
OK
]
Signaling GCSYNC (gc_sync_server) to terminate: [
OK
]
[
OK
]for gc_sync_server services to unload:[
OK
]
Signaling GCLUSTERD
to terminate: [
OK
]
.[
OK
]or gclusterd services to unload:...[
OK
]
Signaling GBASED
to terminate: [
OK
]
.[
OK
]or gbased services to unload:[
OK
]
Signaling GCWARE (gcware) to terminate: [
OK
]
Waiting for gcware services to unload:.[
OK
]
Starting GCWARE (gcwexec): [
OK
]
Starting GCMonit success!
Starting GBASED
: [
OK
]
Starting GCLUSTERD :
[
OK
]
Starting GCSYNC : [
OK
]
Starting GCRECOVER : [
OK
]

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1301
$ gccli -uroot
GBase client 9.5.3.17.117651. Copyright (c) 2004-2019, GBase.
All Rights Reserved.
gbase> show
priorities
where node_name = 'node1';
+-----------+-------+----------+----------------+--------+-------------+
| node_name | group | priority | priority-weight | status | description|
+-----------+-------+----------+-----------------+-------+-------------+
| node1
|
0|
0 |
20 | ON
|......
|
| node1
|
0|
1 |
40 | ON
|......
|
| node1
|
0|
2 |
60 | ON
|......
|
| node1
|
0|
3 |
80 | ON
|......
|
| node1
|
1|
0 |
20 | ON
|......
|
| node1
|
1|
1 |
40 | ON
|......
|
| node1
|
1|
2 |
60 | ON
|......
|
| node1
|
1|
3 |
80 | ON
|......
|
| node1
|
2|
0 |
20 | OFF
|......
|
| node1
|
2|
1 |
40 | OFF
|......
|
| node1
|
2|
2 |
60 | OFF
|......
|
| node1
|
2|
3 |
80 | OFF
|......
|
......
| node1
|
15|
0 |
20 | OFF
|......
|
| node1
|
15|
1 |
40 | OFF
|......
|
| node1
|
15|
2 |
60 | OFF
|......
|
| node1
|
15|
3 |
80 | OFF
|......
|
+-----------+-------+----------+-----------------+-------+-------------+
64 rows in set
6.
配置优先级队列相关参数
通过在gcluster($GCLUSTER_BASE/config/gbase_8a_gcluster.cnf)与
gnode($GBASE_BASE/config/gbase_8a_gbase.cnf)的配置文件中修改下面几
个参数值来完成优先级队列的配置:

gbase_use_priority_queue:
参数设置为0,表示关闭优先级队列;
设置为1,表示开启优先级队列。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1302

_gbase_priority_total_tasks:参数表示最大并行运行查询任务数目,包括
DML 的查询部分,本参数最大值不能超过128,缺省为本地CPU 核数2
倍;

_gbase_priority_tasks:
参数表示每个优先级队列可容纳最大任务数目
(即
可参加调度的数目),未能进入队列任务将阻塞等待,本参数最大值不
能超过64,缺省为本地CPU 核数;

gbase_use_res_ctrl_group:
本参数决定是不是启用资源控制组挂接。
参数
设置为0,表示不开启资源控制组挂接,缺省设置为不开启状态;设置
其他值为开启资源控制组挂接。
7.
指定查询SQL 优先级
资源组用户Session 可根据具体情况,通过使用hint (格式为
/*+PRIORITY(‘priority_value’)*/), 决定该SQL 运行级别
(即对应的优先级)

本命令只限于查询SQL。

语法:
Select /*+PRIORITY(‘priority_value’)*/ …
权限要求
有create,insert,drop,select 权限的用户。

备注:
优先级设定只能小于或等于该用户优先级别,设置错误会恢复到用户优先
级,并报出警告“can not upgrade to priority X”(X 是执行用户的优先级)。

示例:
gbase> create table t1(a int);
Query OK, 0 rows affected
gbase> insert into t1 values (1),(1),(2),(3),(5);
Query OK, 5 rows affected
Records: 5
Duplicates: 0
Warnings: 0
gbase> select
/*+PRIORITY(‘0’)*/ * from t1 group by a;
+------+
| a
|
+------+
|
1 |
|
2 |
|
3 |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1303
|
5 |
+------+
4 rows in set

dececvt() 和 decfcvt() 函数相似,对于“UNIX(TM) 程序员手册”的第三部分中
ECVT(3) 之下的子例程。dececvt() 函数的工作方式与 ecvt(3) 函数相同,decfcvt() 函数的
工作方式与 fcvt(3) 函数相同。它们都将 decimal 类型数值转换为 C char 类型值。

语法
char *dececvt(dec_val, ndigit, decpt, sign)
dec_t *dec_val;
mint ndigit;
mint *decpt;
mint *sign;

char *decfcvt(dec_val, ndigit, decpt, sign)
dec_t *dec_val;
mint ndigit;
mint *decpt;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 643 -

mint *sign;
dec_val
指向包含您想要这些函数来转换的 decimal 值的 decimal 结构的指针。
ndigit
dececvt() 的 ASCII 字符串的长度。它是 decfcvt() 的小数点右边的数字的数目。
decpt
指向一个整数的指针,该整数是小数点相对于字符串起点的位置。*decpt 的负值或零
意味着在返回的数字的左边。
sign
指向结果的符号的指针。 如果结果的符号为负,则 *sign 非零;否则,*sign 为零。


用法

dececvt() 函数将 np 指向的 decimal 值转换为 ndigit ASCII 数字的以空结尾的字符
串,并返回指向该字符串的指针。对此函数的后续调用重写该字符串。

dececvt() 函数对低位数字四舍五入。

decfcvt() 函数与 dececvt() 相同,除了 ndigit 指定小数点右边的数字的数目,而不是
数字的总数目之外。

让 dec_val 指向 12345.67 的 decimal 值,并阻止除了 ndigit 之外的所有参数。对
于四个不同的 ndigit 值,下表展示 dececvt() 函数返回的值。

ndigit 值
返回字符串
*decpt 值
*sign
4
"1235"
5
0
10
"1234567000"
5
0
1
"1"
5
0
3
"123"
5
0

要获取 dec_val 和 ndigit 值的更多示例,请参阅 dececvt() 的示例上
dececvt.ec 演示程序的样例输出。

重要:
当您编写线程安全 GBase
8s
ESQL/C 应用程序时,
请不要使用 dececvt()

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 644 -

或 decfcvt() 库函数。
反而,
请使用它们的线程安全等价的 ifx_dececvt() 和
ifx_decfcvt() 函数。

dececvt() 的示例

demo 目录中的文件 dececvt.ec 包含下列样例程序。
/*
* dececvt.ec *

The following program converts a series of DECIMAL numbers to fixedm strings of 20
ASCII digits. For each conversion it displays the resulting string, the decimal position from
the beginning of the string and the sign value.
*/

#include

EXEC SQL include decimal;


char *strings[] =
{
"210203.204",
"4894",
"443.334899312",
"-12344455",
"12345.67",
".001234",
0
};

char result[40];

main()
{

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 645 -

mint x;
mint i = 0, f, sign;
dec_t num;
char *dp, *dececvt();

printf("DECECVT Sample ESQL Program running.\n\n");
while(strings[i])
{
if (x = deccvasc(strings[i], strlen(strings[i]), #))
{
printf("Error %d in converting string [%s] to DECIMAL\n",x, strings[i]);
break;
}
printf("\Input string[%d]: %s\n", i, strings[i]);

/* to 20-char ASCII string */

dp = dececvt(#, 20, &f, &sign);
printf(" Output of dececvt(#, 20, ...): %c%s decpt: %d sign: %d\n",
(sign ? '-' : '+'), dp, f, sign);

/* display result */

/* to 10-char ASCII string */

dp = dececvt(#, 10, &f, &sign);
printf(" Output of dececvt(#, 10, ...): %c%s decpt: %d sign: %d\n",(sign ? '-' : '+'),
dp, f, sign);

/* to 4-char ASCII string */

dp = dececvt(#, 4, &f, &sign);


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 646 -

/* display result */
printf(" Output of dececvt(#, 4, ...): %c%s decpt: %d
sign: %d\n",(sign ? '-' : '+'), dp, f, sign);

/* to 3-char ASCII string */
dp = dececvt(#, 3, &f, &sign);

/* display result */
printf(" Output of dececvt(#, 3, ...): %c%s decpt: %d sign: %d\n", (sign ? '-' : '+'),
dp, f, sign);

/* to 1-char ASCII string */
dp = dececvt(#, 1, &f, &sign);

/* display result */
printf(" Output of dececvt(#, 1, ...): %c%s decpt:
%d sign: %d\n",(sign ? '-' : '+'), dp, f, sign);

++i; /* next string */
}
printf("\nDECECVT Sample Program over.\n\n");
}
dececvt() 的输出
DECECVT Sample ESQL Program running.

Input string[0]: 210203.204
Output of dececvt: +2102 decpt: 6 sign: 0
Output of dececvt: +2102032040 decpt: 6 sign: 0
Output of dececvt: +2 decpt: 6 sign: 0
Output of dececvt: +210 decpt: 6 sign: 0

Input string[1]: 4894
Output of dececvt: +4894 decpt: 4 sign: 0

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 647 -

Output of dececvt: +4894000000 decpt: 4 sign: 0
Output of dececvt: +5 decpt: 4 sign: 0
Output of dececvt: +489 decpt: 4 sign: 0

Input string[2]: 443.334899312
Output of dececvt: +4433 decpt: 3 sign: 0
Output of dececvt: +4433348993 decpt: 3 sign: 0
Output of dececvt: +4 decpt: 3 sign: 0
Output of dececvt: +443 decpt: 3 sign: 0

Input string[3]: -12344455
Output of dececvt: -1234 decpt: 8 sign: 1
Output of dececvt: -1234445500 decpt: 8 sign: 1
Output of dececvt: -1 decpt: 8 sign: 1
Output of dececvt: -123 decpt: 8 sign: 1

Input string[4]: 12345.67
Output of dececvt: +1235 decpt: 5 sign: 0
Output of dececvt: +1234567000 decpt: 5 sign: 0
Output of dececvt: +1 decpt: 5 sign: 0
Output of dececvt: +123 decpt: 5 sign: 0

Input string[5]: .001234
Output of dececvt: +1234 decpt: -2 sign: 0
Output of dececvt: +1234000000 decpt: -2 sign: 0
Output of dececvt: +1 decpt: -2 sign: 0
Output of dececvt: +123 decpt: -2 sign: 0

DECECVT Sample Program over.

decfcvt() 的示例

demo 目录中的文件 decfcvt.ec 包含下列示例程序。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 648 -

/*
* decfcvt.ec *
The following program converts a series of DECIMAL numbers to strings of ASCII
digits with 3 digits to the right of the decimal point. For each conversion it displays the
resulting string, the position of the decimal point from the beginning of the string and the sign
value. */

#include

EXEC SQL include decimal;

char *strings[] =
{
"210203.204",
"4894",
"443.334899312",
"-12344455",
0
};

main()
{
mint x;
dec_t num;
mint i = 0, f, sign;
char *dp, *decfcvt();

printf("DECFCVT Sample ESQL Program running.\n\n");

while(strings[i])
{
if (x = deccvasc(strings[i], strlen(strings[i]), #))
{
printf("Error %d in converting string [%s] to DECIMAL\n", x, strings[i]);

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 649 -

break;
}

dp = decfcvt(#, 3, &f, &sign); /* to ASCII string */

/* display result */
printf("Input string[%d]: %s\n", i, strings[i]);
printf(" Output of decfcvt: %c%*.*s.%s decpt: %d sign: %d\n\n", (sign ?
'-' : '+'), f, f, dp, dp+f, f, sign);
++i; /* next string */
}
printf("\nDECFCVT Sample Program over.\n\n");
}
decfcvt() 的输出

DECFCVT Sample ESQL Program running.

Input string[0]: 210203.204
Output of decfcvt: +210203.204 decpt: 6 sign: 0

Input string[1]: 4894
Output of decfcvt: +4894.000 decpt: 4 sign: 0

Input string[2]: 443.334899312
Output of decfcvt: +443.335 decpt: 3 sign: 0

Input string[3]: -12344455
Output of decfcvt: -12344455.000 decpt: 8 sign: 1
DECFCVT Sample Program over.

 摘要:
对于最近的语句,返回结果行的数目。
 语法:
unsigned int gbase_stmt_field_count(GBASE_STMT *stmt);
 参数:
 返回值:
表示结果集中行数的无符号整数。