GBase 8a
性能调优
文章

数据库调优--数据库系统参数配置之GCluster 参数优化(2)

发表于2024-12-30 18:45:0785次浏览2个评论

本篇主要介绍GCluster并发参数等常见优化。

  • gcluster_serial_exec_query

优化点:因为 gnode 没有自动的资源管理能力,当高并发时,gnode 因为各个并发的SQL进行资源争抢,反而导致执行性能下降,因此可通过gcluster 来控制下发给 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:开启

示例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

用于 join 时连接值重复较多效率低下时,可设置为 1:启用

默认 join 时不启用 hashtree,使用链表结构连接

  • gcluster_ddl_parallel_execute

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

•参数 = 0:串行执行;

•参数 = 1:并行执行

•该参数的默认值是 0

评论

登录后才可以发表评论
用户头像
levvel发表于 8个月前
少年易学老难成,一寸光阴不可轻
用户头像
levvel发表于 7个月前
哎呀,怎么说呢,嗯......