GaussDB WDR分析之集群报告篇
AWR报告目前已经成为Oracle DBA分析问题,定位故障最为重要的报告,阅读与分析AWR报告的技能也是Oracle DBA必备的技能。国产数据库为了提高运维便捷性,都在做类似Oracle AWR报告的模仿,只不过由于指标体系不够完善,因此其“AWR报告”大多数只是一个摆设,除了TOP SQL功能外,并不能给运维带来更大的帮助。
GaussDB的可观测性指标做得相当不错,指标内容很丰富,指标的指向性也相当不错,而要做好“AWR报告”的基础就是这些准确而丰富的指标。基于这一点,我对GaussDB WDR报告的期待还是有点高的。下面我带着大家来浏览一下GaussDB的WDR报告,看看这个报告能否满足DBA日常运维分析数据库性能与故障的需要。
GaussDB的WDR报告全称是工作负载诊断报告,不过在TPOPS里被称为“性能报告”,我觉得“性能报告”不够严谨,不过如果用“工作负载诊断报告”又有点不够高大上。根据GaussDB分布式数据库的特点,这个报告分为三种类别:集群、CN节点和DN节点。这三种类型的工作负载放在一起又比较乱,分为三种格式是比较合适的,这方面GaussDB的设计还是比较符合DBA的习惯的,不过我也在思考分布式数据库的“AWR报告”是不是像PolarDB一样做成单文件多页的更加易读。不过对于GaussDB这样的可能会有很多个节点的分布式数据库,如果整个集群生成一份报告,也有一些副作用,一份报告生成的时间可能会比较长,而且有时候我们并不需要整个集群所有节点的报告。
今天因为时间关系,我先以集群报告为主线给大家介绍一下WDR都包含了哪些内容。因为报告的内容比较多,因此我们将略去一些平时不大关注的内容。
Database Stat我原本想略去的,不过里面还是有一些有价值的信息的,包括各个数据库的Tuple、blk hit等信息对于DBA用来了解数据库级别的总体访问性能还是有价值的。
Gaussd的Load Profile和Oracle有点像,不过缺少了关于SQL解析的相关数据,实际上高斯数据库里是有相关指标的,不知道为什么没有收录进来。WDR报告中的Load Profile在指标选取上有点刻意学习Oracle了,实际上GaussDB的负载指标与Oracle有较大的不同,可以提供比Oracle还丰富的负载信息,包括select /delete/update/insert/ddl/dcl等的负载信息,如果能把这些内容收录进来就更好了。
在负载文件后面提供的P80/P95 sql响应时间的数据,这是十分好的,特别是对于一些交易类系统,这两个指标便于发现系统中的SQL性能是否存在问题。
这个报告中的命中率和IO PROFILE明显有点敷衍了,估计很少有DBA能够在这些指标中看出系统到底有啥问题。以我对GaussDB的了解都知道,在这里可以显示的数据可以翻好几倍。
随后是TOP SQL的报告,说实在的GaussDB的SQL报告内容还是不错的,十分详尽,除了TOP SQL的维度分解十分全面外,每条SQL的执行指标分解也比较全面。特别是后面sort/hash的详情分解对于一些复杂SQL的性能问题分析,是一目了然的。
Cache IO Stats是Oracle没有的内容,针对TOP OBJECT的缓冲命中情况进行分析。这对于发现shared_buffers设置是否过小,以及某些数据是否需要预热还是比较有用的。通过对某些对象Cache IO的状态也可以为解释某条SQL为什么会在执行计划没有变化的情况下,执行时间变长的某种原因。
Object Stats相当于Oracle的Top Segments,用于发现某个对象存在的问题有一定的价值。维度划分也比较详细,应用开发商应该能够从中发现很多有价值的信息。
至此看到的WDR报告的内容虽然说存在一定的遗憾,不过总体还是不错的。可惜的是看到这里报告也到了结尾,似乎有点意犹未尽,作为一个DBA,我还没有看到一些我特别想看到的东西。
这份报告如果用于性能分析,那么一些关键指标的数据依然是十分需要的,可惜这里没有。GaussDB的WDR报告中把更多的细节留在CN节点的报告中,集群报告似乎过于简单了。即使细节可以从CN节点的报告中获得,在集群的报告里,还是缺少了一些十分重要的信息,目前从GaussDB的可观测性指标中,这些数据都是可以十分轻松地获取到的,要想加在报告里并不困难。我从一个DBA的角度列举一下我希望在WDR集群报告里想看到但是没看到的数据:
1)集群的拓扑信息,CMS/CN/DN/GTM/ETCD等的基本信息,基本健康状态等。
2)系统关键指标详细清单(集群汇总信息)。
3)系统关键目录的使用情况(各节点数据目录/日志目录)。
4)全局事务的总体情况。
5)报告时间区间内的数据库锁冲突情况。
6)SEQUENCE的使用情况。
7)复制组与RTO/RPO情况。
8)集群负载均衡性,集群中各个CN节点的负载是否均衡。集群资源使用均衡性(CPU/IO/内存/网络)。
今天只是分析了一下集群的WDR报告,还有一些信息会在CN/DN的报告中看到。在没有分析CN/DN节点的WDR之前,我先不做总体的评价,等CN/DN报告分析结束后再来做最后的点评吧。