Greenplum 数据库调优

2023-03-02 00:00:00 查询 数据 执行 分区 倾斜

1 Greenplum查询处理回顾
1.1 Master 把查询语句分发到segment
1、Master接受查询语句并生成查询计划

2、Master 把查询计划分发到Segment,分发模式有两种分别是Parallel和Targeted

3、Segment并发在各自本地的数据集上执行计划

a、Slice : A portion of the plan that segment can work on independently

b、Gang : Related processes that are working on the same slice of the query plan but on different segments

4、Master 收集结果并返回给客户端




2 Greenplum数据库调优
使用EXPLAIN ANALYZE 查看执行计划


2.1 系统资源
按照不同的问题使用不同的shell命令


2.2 硬件问题
使用Greenplum自带的gpcheckperf 命令检测硬件问题




2.3 资源管理
2.3.1 查看resource queue的参数
资源管理主要与resource queue中的PRIORITY和MEMORY_LIMIT有关


2.3.2 设置临时的内存大小


2.3.3 当发生数据溢出时添加内存的大小
使用EXPLAIN ANALYZE 查看执行计划时发现Work_mem used(用户开销内存)比Work_mem wanted(用户需要执行的内存)小时,可能数据文件溢出到磁盘上,需要临时添加内存。



2.3.4 受影响的系统的参数


2.3.5 查看一些有用的视图
首先系统视图pg_stat_activity和pg_locks来查看当前是否有锁的等待




2.4 统计信息不准确
2.4.1 创建两张表


2.4.2 使用EXPLAIN查看执行计划
在以下的计划中可以看出全表扫描了并hash了表t1,并返回rows=1行数据,耗时851.390ms


2.4.3 使用ANALYZE执行统计信息
在以下中可以看出执行了analyze后,全表扫描和Hash了t2,返回了rows=33325行数据,耗时553.725ms


2.4.4 以下情况都需要执行ANALYZE


2.5 数据倾斜
2.5.1 数据倾斜实例
使用EXPLAIN ANALYZE出现以下信息说明执行了3个workers,每个workers平均执行了366666.7行的数据,在seg0上大执行了1033348行数据,说明大部分的数据都在seg0上,有数据倾斜的现象。



2.5.2 使用视图查看表的倾斜
使用gp_skew_coefficients和gp_skew_idle_fractions来查看表的倾斜的情况,其中gp_skew_coefficients是标准偏差除以平均值,值越低越好。gp_skew_idle_fractions是表扫描期间空闲的系统百分比,超过10%的表应该评估表的分布策略。



2.5.3 改变数据倾斜问题
使用改变分布键来改变数据倾斜的问题


2.6 计算倾斜
2.6.1 关联条件倾斜
当进行关联条件关联时,两个关连建如果分配不均匀的话可能也会出现倾斜



2.6.2 多计算聚集
多计算倾斜就是经过了步的处理又经过了第二部的处理,如下例:经过了group by之后有进行了avg计算



2.6.3 减少计算倾斜问题


2.7 数据广播
2.7.1 查看表是不是出现了Broadcast


2.7.2 改变planner之后运行


2.7.3 修改GUC来设定优化器
如果配置了gp_segment_for_planner后,优化器会选择优的一个来执行


2.8 多阶段聚集
2.8.1 多阶段聚集关闭的情况
以下是把gp_enable_multiphase_agg参数关闭的情况下,耗时13770.833ms,数据库默认的这个参数是打开的。




2.8.2 多阶段聚集打开的情况
以下是gp_enable_multiphase_agg打开的情况下,运行了三次聚集,运行耗时6041.057ms


2.8.3 GUC会影响优化器对多阶段聚集的选择
如果参数gp_enable_multiphase_agg是打开的,GUC优化器会选择一个优的优化器来执行。



2.9 分区裁剪
2.9.1 定义分区


2.9.2 使用查询计划查看分区
2.9.2.1 planner 分区


2.9.2.2 ORCA分区


2.9.2.3 优查询条件

如果在分区上做一个查询的时候,能在查询过滤条件个分区条件在一起则是优的查询语句。




3 一些佳实战
3.1 佳实践注意点





本文来源:https://blog.csdn.net/xfg0218/article/details/104564209

相关文章