数据库调优--数据库系统参数配置之GCluster 参数优化(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 模式,默认 1(0 – 拉复制表,1 – 动态 hash,2-自动评估)
如果开启此选项,在两个分布表进行等值 join 运算时,将对其中一个表的数据根据连接条件列的值进行动态哈希。然后利用各个运算节点上动态哈希后的临时表和另一个表进行join 运算。这样,各节点的运算结果直接汇总即可得到最终结果。这种策略不会将其中一个分布表在所有运算节点上拉成复制表,每个运算节点只需接收这个表的一部分数据。如果参数设置为 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 时,才会开启本优化。
- 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语句仅仅发送给单个节点。默认为 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 值。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526