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 收集结果并返回给客户端
使用EXPLAIN ANALYZE 查看执行计划
按照不同的问题使用不同的shell命令
使用Greenplum自带的gpcheckperf 命令检测硬件问题
资源管理主要与resource queue中的PRIORITY和MEMORY_LIMIT有关
使用EXPLAIN ANALYZE 查看执行计划时发现Work_mem used(用户开销内存)比Work_mem wanted(用户需要执行的内存)小时,可能数据文件溢出到磁盘上,需要临时添加内存。
首先系统视图pg_stat_activity和pg_locks来查看当前是否有锁的等待
在以下的计划中可以看出全表扫描了并hash了表t1,并返回rows=1行数据,耗时851.390ms
在以下中可以看出执行了analyze后,全表扫描和Hash了t2,返回了rows=33325行数据,耗时553.725ms
使用EXPLAIN ANALYZE出现以下信息说明执行了3个workers,每个workers平均执行了366666.7行的数据,在seg0上最大执行了1033348行数据,说明大部分的数据都在seg0上,有数据倾斜的现象。
使用gp_skew_coefficients和gp_skew_idle_fractions来查看表的倾斜的情况,其中gp_skew_coefficients是标准偏差除以平均值,值越低越好。gp_skew_idle_fractions是表扫描期间空闲的系统百分比,超过10%的表应该评估表的分布策略。
使用改变分布键来改变数据倾斜的问题
当进行关联条件关联时,两个关连建如果分配不均匀的话可能也会出现倾斜
多计算倾斜就是经过了第一步的处理又经过了第二部的处理,如下例:经过了group by之后有进行了avg计算
如果配置了gp_segment_for_planner后,优化器会选择最优的一个来执行
以下是把gp_enable_multiphase_agg参数关闭的情况下,耗时13770.833ms,数据库默认的这个参数是打开的。
以下是gp_enable_multiphase_agg打开的情况下,运行了三次聚集,运行耗时6041.057ms
如果参数gp_enable_multiphase_agg是打开的,GUC优化器会选择一个最优的优化器来执行。
如果在分区上做一个查询的时候,能在查询过滤条件个分区条件在一起则是最优的查询语句。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。