GaussDB WDR分析之节点篇与点评分析

2024-03-25 14:04
文章标签 分析 节点 wdr 点评 gaussdb

本文主要是介绍GaussDB WDR分析之节点篇与点评分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天继续介绍GaussDB的WDR报告,我们今天分析一下CN/DN节点的报告。昨天分析集群报告的时候发现集群报告里缺乏一些DBA分析问题所需要的数据,今天我们来看看是否在节点的报告里能够找到它们。GaussDB的节点报告格式都差不多,只不过CN/DN节点的功能有所不同,CN节点主要负责会话接入、SQL解析、数据汇总等工作,而DN节点负责执行计划子任务的执行和表数据的管理,因此报告中的数据会差别较大。 

Summary中的实例命中率依然只有buffer hit这个对于GaussDB·来说并不是特别需要关注的命中率指标。随后是Top 10 Events,等待事件。等待事件是Oracle DBA习惯用来分析问题的常用工具。虽然GaussDB的等待事件种类没有Oracle上千种那么多,不过400多种等待事件在国产数据库中也算是比较丰富了。特别值得注意的是GaussDB的等待事件统计信息比较完备,不需要像一些开源或者国产数据库一样,只能通过会话信息的瞬间值来采集等待事件。因此WDR中的等待事件的参考价值就比较大。    

对于GaussDB的等待事件,目前DBA比较困惑的是如何进行解读,不像Oracle已经在MOS上对各种等待事件提供了十分丰富的知识库,GaussDB的等待事件相关的知识十分欠缺。

为此,我们在D-SMART中针对GaussDB的等待事件构建了一个知识图谱,利用知识图谱对等待事件情况进行分析。

是不是看着这个分析内容就舒服多了。对于Oracle的等待事件,因为MOS丰富的知识库的存在,DBA可以很方便地从中找到相关的资料,从而继续自己的问题分析,找到答案。哪怕找不到答案,也可以通过开SR的方法获得Oracle的线上售后服务支持,从而完成分析。目前GaussDB还没有构建起完善的知识库体系和线上服务体系,因此仅仅列出等待事件对DBA的帮助不大,因为大部分DBA看不懂这些东西,甚至可能GaussDB的原厂工程师都很难解读这些数据。在报告里如果能够增加一些等待事件说明甚至自动生成一些分析结论,会对DBA更有价值。    

紧跟在后面的是Wait Classes,GaussDB的Wait Classes是PG Wait Classes的延续,分类太少导致这些指标的指向性不足,很少有DBA能从GaussDB的Wait Classes中发现问题。其实Oracle的Wait Classes的分类也不算特别出色,不过比起GaussDB还是要好不少,起码能够对IO,负载,并发,CPU等有个起码的分类。

后面的几项,Host CPU中规中矩,IO PROFILE参考价值有限,内存情况也很粗略,不过这属于summary信息,可能有价值的信息在后面。

 

详情中的Time Model是个亮点,在国产数据库的AWR报告中,我也经常会看到Time Model的内容,这是从Oracle学习来的一个反映数据库负载与性能特征的特征数据集。可能很多DBA不太关注这些数据,不过在Oracle开始提供Time Model后,我就开始关注它了。虽然对于不同的数据库,Time Model差别很大,甚至同一个数据库在不同的负载下Time Model也截然不同,但是Time Model是可以反映出数据库系统的负载与性能情况的十分好的指标集。利用智能化分析的算法处理Time Model会有很好的效果。不过Time Model的数据只有十分准确才有使用价值,很多数据库虽然有Time Model,但是数据不准确,那就只是一个样子货。    

CN节点的TOP SQL和Cache IO Stats、Object Stats等章节和集群类似,这里就不多说了。等待事件详情也算是中规中矩吧,缺点是没有计算百分比,看上去不够直观。优点是有最大等待时长的字段。只不过不大了解这个最大等待时长是在报告期间的还是数据库启动以来的。从我对基础指标数据的理解,这个值应该是数据库启动以来的。

 

最后是参数设置,这个参数设置的显示章节可读性一般,因为GaussDB参数数量太多了,如果把重要参数、非默认参数,以及在报告期间有过变化的参数分别列一个列表,那么易读性就好多了。

看完了三份WDR报告,可以看出与O记的AWR报告相比,WDR报告还缺失很多内容。1)ADDM和ASH分析,实际上GaussDB有类似Oracle ASH的ASP数据,因此ASH分析实现起来并不困难。GaussDB也有Time Model,因此做ADDM报告难度也并不大,这两个内容完全可以提供出来;2)CHECKPOINT详情;3)共享内存详细分析;4)锁/分布式事务分析;5)LWLOCK性能分析。

前面大家可能跟着我大致了解了GaussDB WDR报告的大致情况。作为一个看过数千份甚至更多AWR报告的老DBA,对WDR报告的评价是有用,但是不好用,或者说用途有限。对于了解GaussDB的DBA来说,等待事件、指标数据、TOP SQL等可以为他们提供一些有价值的数据,用于问题分析。但是GaussDB的WDR报告和其他几乎所有的国产数据库的“AWR报告”一样,仅仅是对Oracle AWR的模仿,而并非真正能够帮助DBA诊断疑难杂症的好工具。我想WDR报告的产品经理恐怕也无法使用这份报告远程帮用户定位复杂的性能问题或者定位BUG吧。    

其实现在大家能够很好地利用Oracle AWR报告分析问题一方面是Oracle的AWR报告做得越来越好,在每个版本出来的时候,易读性都有大幅提升。另外一方面是MOS网站的存在让分析AWR报告变得更加方便。而国产数据库的“AWR报告”在内容上大多数仅仅达到了Oracle 8I的水平,甚至数据的详细程度还大不到Oracle 8i STATSPACK报告水平,又缺乏MOS这样的知识库可供搜索,那么这些报告的作用就十分有限了。

另外一个方面,国产数据库,特别是分布式数据库,在架构上和技术路线上都有巨大的不同,因此O记“AWR报告”并不一定是好的模仿对象。国产数据库的AWR报告照抄O记并不一定是个好的路数。分布式数据库在集群健康状态、集群稳定性、网络稳定性、选主决策健康度、集群节点负载均衡性等方面都需要认真关注,这些内容都是Oracle AWR报告中看不到的。

以今天分析的GaussDB为例,要想让WDR报告能够给DBA帮助,那么还是要从GaussDB的运维角度出发来设计WDR报告的内容。GaussDB在各种运行负载中会有哪些需要关注的指标和统计数据?GaussDB的一些典型故障场景中会有哪些典型的表现?GaussDB DBA关注哪些指标数据?GaussDB DBA能够利用GaussDB的可观测性能力分析哪方面的数据库问题?那么我们就应该提供这些数据给他们。如果WDR报告这么去设计,才真正会对DBA有价值。    

最后一点,因为国产数据库还没有建立起Oracle MOS这样的知识库,因此在自己的AWR报告中能够对一些等待事件、指标做一一些标注,让阅读报告的人哪怕没有看过数据库的官方文档也能够很快理解某些异常的指标和等待事件,这种报告就更易读了。在你没有MOS这样的知识库之前,别和我说Oracle的AWR报告里也不提供这些内容。

 

本文内容来自于徐戟(白鳝)老师,南京基石数据技术有限责任公司技术总监。曾供职于DEC深圳研发中心、赛格计算机有限公司、长天集团、联想金融事业部等。在软件开发、系统运维、信息系统优化、信息系统国产化替代等领域从事技术研究近30年,曾主持开发了国内首套电信级联机实时计费系统、国内首套三检合一的检验检疫管理系统、银行综合大前置平台(IPP)等大型系统。著有《Oracle RAC日记》、《Oracle DBA优化日记》和《DBA的思想天空》等技术专著。深圳市鲲鹏产业联盟高级顾问,Oracle ACE,POSTGRESQL ACE DIRECTOR。 

这篇关于GaussDB WDR分析之节点篇与点评分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/845238

相关文章

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Spring、Spring Boot、Spring Cloud 的区别与联系分析

《Spring、SpringBoot、SpringCloud的区别与联系分析》Spring、SpringBoot和SpringCloud是Java开发中常用的框架,分别针对企业级应用开发、快速开... 目录1. Spring 框架2. Spring Boot3. Spring Cloud总结1. Sprin

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock