数据库调优--数据库系统参数配置之GCluster 参数优化(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
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526