首页 > 其他分享 >GaussDB WDR报告分析

GaussDB WDR报告分析

时间:2024-10-29 09:47:42浏览次数:3  
标签:期间 快照 报告 GaussDB Time us WDR SQL CPU

问题描述

CPU使用率高。

问题现象

出现CPU使用率超过阈值,CPU使用率快速上涨或短时间持续较高水平等现象。

告警

CPU使用率告警。

业务影响

CPU使用率高集群响应变慢。

原因分析

  1. 期间业务压力增大导致。
  2. 出现CPU耗时较多的SQL。

处理方法

步骤 1

查看监控是某个节点的CPU高还是集群整体CPU高,如果是整体CPU高生成集群级别wdr报告,如果是某个节点则生成节点级wdr报告。

步骤 2

首先查看当前已有的wdr报告快照。

select * from snapshot.snapshot order by start_ts desc;

步骤 3

生成wdr报告需要两个snapshot_id,根据需要对比的两个时间段选取对应的snapshot_id,调整输出格式,gsql界面输入:
\a \t \o + 生成文件名(html文件)

步骤 4

如果是要生成节点级的报告则执行:

select generate_wdr_report(snapshot_id1, snapshot_id2, ‘all’, ‘node’, 节点名称)

如果要生成集群级别报告则执行

select generate_wdr_report(snapshot_id1, snapshot_id2, ‘all’, ‘cluster’)

其中snapshot_id1和snapshot_id2按照时间从小到大的顺序写入上面分析出来的要生成报告的两个id,节点名称可以通过登录到问题节点执行show pgxc_node_name获取。
对应节点级别报告主要关注Top 10 Events by Total Wait Time和SQL ordered by CPU Time部分,集群级别主要关注SQL ordered by CPU Time部分,在wdr报告中搜索即可。
在这里插入图片描述
在这里插入图片描述

步骤 6

CPU使用率较低期间的wdr报告和较高期间的wdr报告个一份,这里已节点级别为例,集群级别只需要按照SQL ordered by CPU Time部分分析,分析方式一样。

步骤 7

Top 10 Events by Total Wait Time部分包含两个快照期间的主要等待事件,可以进行大致分析是否存在大量CPU耗时较高的等待事件例如文件数据读取,快照期间主要等待事件,如果通过对比发现CPU高期间的文件读事件明显变多,则说明此期间SQL执行读取数据上上涨导致的CPU耗时上涨。如果是各项等待事件都有一定幅度上涨则可能是集群压力上涨导致,具体是那一部分SQL则需要分析SQL ordered by CPU Time部分。

步骤 8

对比两份报告SQL ordered by CPU Time部分的CPU Time(us)差异,一般对比前10个即可,这里介绍一下此部分的主要构成。

  • Unique SQL Id:对应unique_sql_id,可以通过此id去数据库查询使用此模板的SQL的其他数据,例如通过summary_statement查询总体语句的调用情况。
  • Node Name:节点名称。
  • User Name:用户名。
  • CPU Time(us):两个快照期间的CPU耗时Calls:两个快照期间的语句调用次数。
  • Min Elapse Time(us):SQL在内核内的最小运行时间,注意这是整体的最小解析时间不是此快照期间的最小。
  • Max Elapse Time(us):SQL在内核内的最大运行时间,注意这是整体的最大解析时间不是此快照期间的最小。
  • Total Elapse Time(us):两个快照期间此语句的SQL在内核内的总运行时间时间。
  • Avg Elapse Time(us):两个快照期间此语句的SQL在内核内的平均运行时间时间。
  • Returned Rows:两个快照期间此语句的SELECT返回的结果集行数。
  • Tuples Read:两个快照期间访问的元组数量。
  • Tuples Affected:两个快照期间Insert/Update/Delete行数。
  • Logical Read:两个快照期间的逻辑读数。
  • Physical Read:两个快照期间的物理读数。
  • Data IO Time(us):两个快照期间IO上的时间花费。
  • Sort Count:两个快照期间的排序执行的次数。
  • Sort Time(us):两个快照期间的排序执行的时间。
  • Sort Mem Used(KB):两个快照期间的排序过程中使用的work memory大小(单位:KB)。
  • Sort Spill Count:两个快照期间的排序过程中,若发生落盘,写文件的次数。
  • Sort Spill Size(KB):两个快照期间的排序过程中,若发生落盘,使用的文件大小(单位:KB)。
  • Hash Count:两个快照期间的hash执行的次数。
  • Hash Time(us):两个快照期间的hash执行的时间(单位:微秒)。
  • Hash Mem Used(KB):两个快照期间的hash过程中使用的work memory大小(单位:KB)。
  • Hash Spill Count:两个快照期间的hash过程中,若发生落盘,写文件的次数。
  • Hash Spill Size(KB):两个快照期间的hash过程中,若发生落盘,使用的文件大小(单位:KB)。
  • SQL Text:这里显示的SQL语句只有一部分,完整的SQL需要点击Unique SQL Id跳转到完整SQL处。

步骤9

如果发现CPU高期间报告的CPU Time(us)前面几个的SQL明显不同且CPU耗时较大,则原因可能为CPU高耗时SQL调用量上涨导致,如果需要分析为什么此SQL的CPU耗时高则可以参考步骤11。
在这里插入图片描述

步骤 10

如果两个报告前10个Unique SQL Id对比几乎相同,此时看SQL对应的CPU耗时和ncalls,如果calls上涨则说明是业务压力增大导致的CPU上涨,如果calls没有上涨,则需要分析为什么同一条SQL在此阶段的CPU耗时上涨,跳转步骤11。

步骤 11

在语句和调用次数没有变化的情况下,如果是查询语句看此SQL模板的Returned Rows和Physical Read,如果数量有明显增长则说明此SQL读写的数据量增大导致的CPU压力上涨,一般有两种情况,部分特殊值的情况下扫描数据量大或者计划发生改变导致扫描数据量变大。如果是写语句则可以看Tuples Affected是否有明显增加,一般读取数据比较耗CPU,如果是语句本身影响的主要围绕数据读取方面进行对比。

步骤 12

如果两个快照的数据几乎相同,可以通过火焰图或者长事务做进一步分析。

标签:期间,快照,报告,GaussDB,Time,us,WDR,SQL,CPU
From: https://www.cnblogs.com/xiaoxu0211/p/18512145

相关文章

  • GaussDB的行存表与列存表的选择
    一、前言行存表和列存表是数据库中两种常见的数据存储方式。随着信息技术的飞速发展,数据存储和管理以及如何高效地存储和处理大量的数据已经成为了我们的一大挑战。为了解决这个问题,行存表与列存表应运而生,它们以其独特的优势在各个场景得到了高效的应用。GaussDB支持行、列存储......
  • 利用GaussDB的可观测性能力构建故障模型
    ​D-SMART高斯专版已经开发了几个月了,目前主要技术问题都已经解决,也能够初步看到大概的面貌了。有朋友问我,GaussDB不已经有了TPOPS了,为什么你们还要开发D-SMART高斯专版呢?实际上TPOPS和D-SMART虽然都可以用于Gaussdb的运维监控,不过其分工还是十分明显的。TPOPS是华为GaussDB自带......
  • LLVM技术在GaussDB等数据库中的应用
    万物互联的态势下,数据量的激增使得“如何提升数据处理性能”成为各家数据库共同面临的挑战。作为编译优化技术的代表,基于LLVM的CodeGen技术,能为每个查询生成定制的机器码替代原本的通用函数,减少实际查询时冗余的条件逻辑判断、虚函数调用并提高数据局域性,从而达到提升查询整体性能......
  • GaussDB数据库事务管理
    ​一、引言事务管理是数据库系统中至关重要的一部分,它确保了数据库的一致性和可靠性。在GaussDB数据库中,事务管理不仅遵循传统的ACID特性,还提供了一些高级功能。本文将深入探讨GaussDB数据库事务管理的各个方面。二、事务的基本概念2.1事务的定义事务是数据库操作的基本单元......
  • GaussDB数据库的备份与恢复
    ​1.逻辑备份-gs_dumpgs_dump是一款用于导出数据库相关信息的工具,支持导出完整一致的数据库对象(数据库、模式、表、视图等)数据,同时不影响用户对数据库的正常访问。备份sql语句gs_dump是openGauss用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式......
  • GaussDB数据库中逻辑对象关系简析
    初次接触openGauss或GaussDB数据库的逻辑对象,被其中的表空间、数据库、schema和用户之间的关系,以及授权管理困惑住了,与熟悉的MySQL数据库的逻辑对象又有明显的不同。本文旨在简要梳理下GaussDB数据库逻辑对象之间的关系,以加深理解。1、GaussDB数据库逻辑对象1.1表空间、Databas......
  • GaussDB轻量化运维管理工具介绍
    ​前言本期课程将从管理平台的架构出发,结合平台的实例管理、实例升级、容灾管理和监控告警的功能和操作介绍,全面覆盖日常运维操作,带您理解并熟练运用GaussDB运维平台完成运维工作。一、GaussDB运维管理平台简介开放生态层友好Web界面,多云皮肤个性化定制丰富的原子API公有......
  • GaussDB数据库SQL系列-复合查询
    一、前言GaussDB是华为自主创新研发的分布式关系型数据库,具有高性能、高安全、高可用、高弹性、高智能特点。在这篇文章中,我们将探讨在GaussDB数据库中使用复合查询的技术。复合查询是SQL查询的一个高级特性,它允许用户通过结合多个简单查询来执行更复杂的数据检索操作。这种查询......
  • GaussDB安全关键技术一:密态等值查询
    密态等值查询属于密态数据库第一阶段方案,但是遵从密态数据库总体架构。密态数据库的总体架构示意图如下图所示。密态数据库的完整形态包括密码学方案和软硬结合方案。图8密态数据库总体架构由于密态等值查询仅涉及到软件部分,仅需集成密态数据库总体架构的软件部分,其总体实现......
  • GaussDB基于智能化(AI)技术,打造AI4DB和DB4AI两大技术高地,重构数据库内核核心组件,提升数
    云原生为迎接智能化提供了基础条件,智能化是GaussDB的新的牵引方向,两者相辅相成,互相促进。在智能化出现之前,数据库的运维管理主要依赖分层解耦、化繁为简方式来治理,通过人工服务对单点的业务进行管理。但在云化环境中,一个Region纳管上万实例,仅靠人工很难满足业务诉求,这就促成智能与......