了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站
数据库性能分析和优化是一个难题,作者Pivotal Greenplum工程技术经理王昊所在的Greenplum研发部门近期正好在解决一个实际用户的全局性能问题,本文记录了分析过程和解决思路。
【实录】首次利用GPCC历史数据调优Greenplum 第一部分帮助大家了解了GPDB集群的整体性能特征,现在为大家带来第二部分——分析查询负载整体情况的干货内容。
第二部分,分析查询负载整体情况
先介绍和对比GPCC的查询历史表
对比GPPerfmon,查询历史记录提供的信息如下:
首先需要做的是对升级前后的查询数量进行定量分析。由于GP4上的GPPerfmon只能采集到20秒以上的查询,这给对比分析带来了一定的困难。
下面SQL分别对GPPerfmon和GPCC 4.8的历史各选取一周的数据进行统计,将执行时间按照0-20秒、20-40秒、40-60秒、60秒-2分钟、2分钟-5分钟、5分钟-10分钟、10分钟以进行分类统计。
-- GPPERFMON
SELECT sum(CASE WHEN tfinish - tsubmit < INTERVAL '20s' THEN 1 ELSE 0 END) AS dur0_20
, sum(CASE WHEN tfinish - tsubmit >= INTERVAL '20s'
AND tfinish - tsubmit < INTERVAL '40s' THEN 1 ELSE 0 END) AS dur20_40
, sum(CASE WHEN tfinish - tsubmit >= INTERVAL '40s'
AND tfinish - tsubmit < INTERVAL '60s' THEN 1 ELSE 0 END) AS dur40_60
, sum(CASE WHEN tfinish - tsubmit >= INTERVAL '60s'
AND tfinish - tsubmit < INTERVAL '120s' THEN 1 ELSE 0 END) AS dur60_120
, sum(CASE WHEN tfinish - tsubmit >= INTERVAL '120s'
AND tfinish - tsubmit < INTERVAL '300s' THEN 1 ELSE 0 END) AS dur120_300
, sum(CASE WHEN tfinish - tsubmit >= INTERVAL '300s'
AND tfinish - tsubmit < INTERVAL '600s' THEN 1 ELSE 0 END) AS dur300_600
, sum(CASE WHEN tfinish - tsubmit >= INTERVAL '600s' THEN 1 ELSE 0 END) AS dur600plus
FROM public.queries_history
WHERE ctime >= '2019-09-01' AND ctime < '2019-09-08';
-- 统计结果
dur0_20 | 0 -- GPPerfmon没有统计20秒以下的查询
dur20_40 | 79649
dur40_60 | 22204
dur60_120 | 20452