
【实录】首次利用GPCC历史数据调优Greenplum 第二部分
数据库性能分析和优化是一个难题,作者Pivotal Greenplum工程技术经理王昊所在的Greenplum研发部门近期正好在解决一个实际用户的全局性能问题,本文记录了分析过程和解决思路。
在12月18日推送的【实录】首次利用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分钟以进行分类统计。
剖析
- 通过GP5上的历史数据来看,一周内发生的小于1秒的短查询3000万次以上,同时混合5-10分钟的分析型查询,属于较典型的HTAP混合负载的使用场景,而且系统资源一直处于高负荷运行水平。
- 用户自述由于性能考虑关闭了ORCA,也符合短查询较多的用户场景。
- 由于只能对比20秒以上的查询,通过上图我们看到这部分查询数量在升级前后基本持平,GP4共计201507查询对比GP5的202816个,差距在1%以内。
- 2分钟-5分钟档位下,GP5的查询增加了一倍,但20秒-40秒档位和5分钟到10分钟档位,GP5都降低了,总体差距不明显。
- 整体而言,升级前后用户的工作负载没有质的变化,基本排除了工作负载增加导致系统响应降低的问题。
因为用户反映的问题是“整体性能降低”,因此除了查询数量,有必要进一步分析查询的平均时间,期待平均的查询时间能够佐证用户的反馈。单个查询的tfinish - tsubmit就得到执行时间,代入到前一个查询中就可以计算出查询的平均耗时。用下面查询对不同时长区间的查询分别统计平均耗时。
剖析
以上分析反映出在所有超过20秒的查询中,升级前后各个区间的查询平均时间变化细微,合计的平均查询耗时从2分29秒降低到2分26秒。这个结果不足以佐证用户反馈的现象。
以上针对查询个数和平均时长的统计似乎没有直接结论,抱着怀疑的态度,又对每个数据库角色的查询进行了分析,统计每个用户提交的查询个数、平均时长。
剖析
通过对比得出,只有550b111、f8da676、4287401三个用户的查询在升级后平均耗时增加了。
遗憾的是GP4的GPPerfmon数据并没有短查询的记录,而且记录的性能指标也不足,例如没有磁盘IO的指标,所以无法与GP5的历史记录进行深入的对比分析。根据当前的分析结果,我们进一步跟客户进行了沟通确认,澄清认定了查询数量基本一致,20秒以上慢查询的平均时长没有增加,只有少部分用户的查询的确略微变慢等事实。
对于GP5上实用GPCC4.8收集的查询数据,不包含20秒的限制,所以可以针对GP5的历史数据专门分析一下各用户的整体的查询特征。这里我们以1秒为界,分别统计一秒以内的查询和超过1秒的查询:
剖析
- 从紫红色总查询时长看出,第一位的用户a4fde70贡献了该系统绝大多数工作负载,其占用的数据库运行时间占绝对地位,并且平均单个查询的耗时也比较长,其工作负载以分析型为主。
- 从蓝色数字看到,查询数量上前三位的用户贡献了大量的短查询,第二位的f8da676,其平均时长最短且数量大,可以推断出是主要的短查询为主数据库用户。
- 总体水平看,该系统短查询偏多,这类系统对响应时间敏感,有必要进一步挖掘用户的反馈。
(未完待续)
关于作者
王昊,Pivotal Greenplum工程技术经理
曾任职于Teradata SQL实验室。长期从事分布式数据仓库的研究,深谙高并发MPP数据库之美,作为Greenplum内核研发团队的核心成员,主持全新一代自治数据库平台GPCC的规划、设计和开发,奠定了Greenplum在自动化运维领域的领先地位。同时凭借丰富的工程经验和行业洞悉,为中国研发团队在分布式引擎、ETL工具、扩展组件、质量保证等多项领域提供创新输入和人才培养。
文章转自公众号:Greenplum中文社区
