返回首页

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

更新日期:2024年09月11日

是否区分大小写
主要针对英文字母。
对应配置项参数如下(0:不区分;1:区分):0

参数说明:该参数可以用来指定是否默认开启duplicatecheck。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:0,1。- 0 表示默认关闭。- 1 表示默认开启。
默认值:0

1.
查询优化参数

gcluster_hash_redistribute_groupby_optimize
Cluster use hash redistribute groupby mode, default is 1(0 - OFF, 1 - ON)
如果开启此选项,进行分组(group by)运算之前,将会把临时结果利用哈
希算法重分布到各个运算节点,再由各个节点进行分组运算。由于数据在分
到各个节点之前已经做了哈希,
因此产生的结果直接汇总即可得到最终结果,
不再需要由汇总节点再做一次分组。

gcluster_hash_redistribute_join_optimize
这个参数用于控制是否启用Hash 重分布的JOIN 模式,
默认2(0 – 拉复制表,
1 – 动态hash,2-自动评估)
如果开启此选项,
在两个分布表进行等值join 运算时,将对其中一个表的数
据根据连接条件列的值进行动态哈希。然后利用各个运算节点上动态哈希后
的临时表和另一个表进行join 运算。
这样,各节点的运算结果直接汇总即可

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1281
得到最终结果。这种策略不会将其中一个分布表在所有运算节点上拉成复制
表,每个运算节点只需接收这个表的一部分数据。如果参数设置为2 则当两
表的数据量相差不超过20% 时,使用哈希重分布JOIN;否则不使用。

gcluster_special_correlated_optimize
该参数用于控制是否开启相关子查询hash 重分布优化。
父子查询是相关子查
询关系,并且存在等值JOIN 关系,则将父子查询按JOIN 列进行hash 重分
布后执行。

参数= 0 关闭;

参数= 1 启用;

该参数的默认值是1。
使用等值hash 重分布相关子查询功能需要配合参数
gcluster_crossjoin_use_hash_distribution 来一起使用,使用原则如下:

当gcluster_special_correlated_optimize = 0 时,无论如何设置参数
gcluster_crossjoin_use_hash_distribution 的值,都不会开启本优化。

当gcluster_special_correlated_optimize = 1,而
gcluster_crossjoin_use_hash_distribution = 0 时,也不会开启本优化。

当gcluster_special_correlated_optimize = 1,并且
gcluster_crossjoin_use_hash_distribution = 1 时,才会开启本优化。
示例如下:
SELECT COUNT(*) FROM x1 WHERE EXISTS (SELECT 1 FROM x2 WHERE
x1.id2 = x2.id2);
等值hash 相关子查询优化,分别对x1,x2 进行动态重分布。

gcluster_crossjoin_use_hash_distribution
这个参数用于设置当JOIN 两边都不是hash 列时,
是否仍强制走hash 重分布
JOIN。

参数= 0:表示关闭,即当JOIN 两边都不是hash 列时,不使用hash 重
分布JOIN 功能;

参数= 1:表示开启,即当JOIN 两边都不是hash 列时,使用hash 重分
布JOIN 功能;

该参数的默认值是1。

gcluster_empty_result_set_optimize
这个参数用于设置是否启用空结果集优化功能。
默认为0(0 – OFF,1 - ON)。
空结果集优化,如果优化阶段可判断结果集为空,则直接返回,而不需要让
执行器进行执行。

gcluster_single_hash_node_optimize
单表hash 条件的优化,当单表包含hash 列的等值条件时,
进行hash 优化,
sql

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1282
语句仅仅发送给单个节点。默认为1(0 - OFF, 1 - ON)。

gcluster_hash_join_complex_optimize
子查询和父查询满足hash 关系的优化,
可当作一个整体部分来执行。
这个参
数用于控制是否在子查询和父查询满足hash 关系的优化时,
当作一个整体部
分来执行。

参数= 0 禁用,满足hash 关系的优化时,不当作一个整体部分执行;

参数= 1 启用,满足hash 关系的优化时,当作一个整体部分执行。

该参数的默认值是1。

gcluster_union_optimize
这个参数用于设置是否使用union 优化。
使用union 优化时,
union 优化尽量
把union 语句发送到节点执行,避免把所有需要union 的表都拉成复制表。
即利用union 的结果集去重的特性,直接将union 发送到下层去执行。这样
在某些情况下,可以大大减小汇总节点的中间结果集的大小。

参数= 0:不使用union 优化;

参数= 1:使用union 优化。

默认值为1

gcluster_starschema_join_estimate_optimize
设置评估两表join 结果的方式,0:按照两表行数相乘进行评估;1:按照两
表中的大表的行数进行评估,默认值是1。

gcluster_delayed_group_by_optimize
设置group by 是否下发到gnode 执行,
当group by 下发到gnode 执行后结果
集并没有明显减少时,请设置该参数为1,(0 - OFF, 1 - ON)。

gcluster_count_optimize
设置对单表进行count(*)时,不产生中间结果表,gcluster 直接计算结果值。

0:按照产生中间表的方式执行;

1:gcluster 直接计算count 值。
优化点:count(*) 时原来的策略是先在发起节点上的gnode 上创建一个临时
的汇总表,把各个节点的执行结果汇总到该临时的汇总表上,
然后对该临时
的汇总表再做sum 的汇总,
汇总完成后再删除临时的汇总表,
当有高并发时,
频繁的创建和删除临时的汇总表将降低性能,现在修改为不创建临时的汇总
表,把各个节点的执行结果收集到gcluster 上,由gcluster 直接计算,因此不
需要创建和删除临时的汇总表,从而提高性能。
2.
并发参数

gcluster_serial_exec_query
优化点:因为gnode 没有自动的资源管理能力,当高并发时,gnode 因为各
个并发的SQL进行资源争抢,
反而导致执行性能下降,
因此可通过gcluster 来

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1283
控制下发给gnode 的SQL 数来达到对gnode 使用资源的间接控制,让gnode
的各个并发的SQL 不要进行资源的争抢,从而提高性能,可通过在gcluster
配置文件中设置gcluster_serial_exec_query = 批量提交数(单节点cpu 核数)
来控制提交到gnode 的SQL 数。
该参数默认为0(不限制)。

gcluster_max_conn_in_pool
优化点:
没有线程池时,
gcluster 访问gnode 的并发数量将不受控制,
gcluster
访问每一个gnode 都将启动一个新的线程,高并发时大量的线程将消耗系统
资源及增加了gnode 的压力,当采用线程池后,并发请求竞争同一个线程池
中的线程,所以,通过最大线程数能够严格控制gcluster 访问gnode 的并发
数量,从而减少gnode 的压力和降抵线程对系统资源的消耗。
该参数默认为300。

gcluster_use_conn_pool
优化点:
没有连接池时,
gcluster 访问gnode 的连接数量将不受控制,
gcluster
访问每一个gnode 都将启动一个新的连接,这样就增加了到gnode 的连接时
间,并且高并发时将有大量的连接消耗系统资源,当采用连接池后,并发请
求竞争同一个连接池中的连接,
所以,
通过最大连接数能够严格控制gcluster
访问gnode 的并发数量,从而减少gnode 的压力和降抵连接对系统资源的消
耗。
(0-OFF,1-ON)

gcluster_insertselect_use_values_optimize
优化点:多个insert into t1 select * from t 当高并发时,在gnode 上只能够串
行执行,影响执行效率,但如果按照insert into t1 values()的方式是允许并发
执行的。
用例:
INSERT into TB_SVC_SUBS_HIST_TMP1
SELECT *
FROM TB_SVC_SUBS_HIST
WHERE
MSISDN=MSISDN=’xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’
适用场景:insert select 高并发,并且select 的结果集不是很大。
(0-OFF,1-ON)

gcluster_single_hash_node_optimize
用于单表等值hash 查询条件的优化,当单表包含hash 列的等值条件时,进行
hash 优化,sql 语句仅仅发送给单个节点。
默认值为1:开启

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1284
示例:
select * from bas.clcinfdta where 1=1 and clt_nbr=‘7319022720’ limit 30 offset 0
不能查到记录,去掉1=1 即可正确查询
可设置gcluster_single_hash_node_optimize=0,临时关闭

_gbase_enable_hashtree
默认值为1(启用),用于join 时连接值重复较多效率低下;
值为0 时join 不启用hashtree,使用链表结构连接。

gcluster_ddl_parallel_execute
这个参数用于控制DDL 并行或者串行执行。

参数= 0:串行执行;

参数= 1:并行执行

该参数的默认值是0