https://help.kingbase.com.cn/v8/perfor/performance-optimization/performance-optimization-6.html#sys-ksh

KWR报告是Diff报告的基础,在数据库运行过程中,通常在业务的高峰期和低谷期,或者在参数调整之后,数据库的性能指标都会发生变化,那么分析这种变化的根因对于我们分析数据库性能,进行优化调整是非常必要的。Diff报告的作用就是分析两个KWR报告之间的差异,找出性能变化的原因或分析性能优化的效果。

Diff 报告仅支持 HTML 格式输出。

3.3.8.1. 快速生成 Diff 报告 

通过 KWR 自动快照或者手动快照创建一系列 KWR 快照,然后就可以通过 perf.kwr_diff_report_to_file({snap_1}, {snap_2}, {snap_3}, {snap_4}, {file_path}) 来创建 Diff 报告:

参数说明:

  • snap_1: 生成第一份KWR报告的起始快照ID

  • snap_2: 生成第一份KWR报告的结束快照ID

  • snap_3: 生成第二份KWR报告的起始快照ID

  • snap_4: 生成第二份KWR报告的结束快照ID

  • file_path: 报告生成地址,示例:’/home/username/kwr_diff_report.html’

CREATE EXTENSION sys_kwr;
SELECT * FROM perf.create_snapshot();
CREATE TABLE t1(a int);
INSERT INTO t1 SELECT generate_series(1, 1000000);
SELECT * FROM perf.create_snapshot();
INSERT INTO t1 SELECT generate_series(1, 1000000);
SELECT * FROM perf.create_snapshot();
INSERT INTO t1 SELECT generate_series(1, 1000000);
SELECT * FROM perf.create_snapshot();
SELECT * FROM perf.kwr_diff_report_to_file(1, 2, 3, 4, '/home/test/kwr_diff_rpt_00.html');

3.3.8.2. GUC 参数说明 

KWR Diff 报告属于KWR的一个子模块,继承KWR的现有GUC参数。具体内容请参考SYS_KWR小节中关于配置GUC参数的说明。

3.3.8.3. 用户接口说明 

生成Diff报告的接口有两个:

perf.kwr_diff_report_to_file({snap_1}, {snap_2}, {snap_3}, {snap_4}, {file_path}) 该接口在用户指定的目录下生成Diff报告。

perf.kwr_diff_report({snap_1}, {snap_2}, {snap_3}, {snap_4}) 该接口在默认的数据目录下的sys_log目录中生成Diff报告,同时在ksql中生成在线报告。如果sys_log目录不存在,那么仅生成一份在线报告。 默认报告的命名格式为:kwr_diff_1_2_3_4_20220531_140633.html,即前缀kwr_diff_4个快照ID_年月日_时分秒.html。

3.3.8.4. 查看Diff报告 

3.3.8.4.1. 报告结构 

Diff报告主要由三部分组成:

1、报告头:

这部分主要是列出数据库实例的版本、两份KWR报告的快照信息。

2、报告摘要:

这部分的主要报告是:主机配置、负载分析、实例效率百分比(目标 100%)、Top 10前台等待事件、Top 10前台等待事件分类、主机IO、IO分析、内存统计以及SQL语句数统计。

3、报告主体:

报告主体提供了更加全面的性能指标对比信息,主要包括:时间模型和等待事件统计、内存统计、实例IO统计、锁活动统计、关键活动统计、TOP SQL统计、后台写统计、数据库统计、数据库对象统计和配置参数。

3.3.8.4.2. 报告内容 

Diff报告内容在统计数据方面与原始KWR报告一致,同时提供了对比信息。下面举几个例子简要说明报告数据的查看方法,其它报告相同。

在Diff报告中,1st 表示第一份KWR报告的统计数据,2nd 表示第二份KWR报告的统计数据,Diff 表示两份报告统计量的差值, % Diff 表示第二份报告相比第一份报告统计量的变化百分比。

在报告头中,显示了数据库实例信息,启动时间,版本信息以及两份KWR报告的快照信息,并显示了快照时长和数据库时间的%Diff。

在Top 10 前台等待事件和Top 10 前台等待事件分类这两个diff报告中,为了方便对比,查看两份KWR报告中等待事件的变化情况,分成左右两部分进行了展示。如果某个事件仅在一份KWR报告中出现,那么在另一份KWR报告中用 '-' 表示。

在时间模型统计报告中,按“% 数据库时间”的Diff排序对两份KWR报告进行了对比。

在按数据库时间排序的 SQL 语句报告中,从平均时间(ms)、总占比(%)、CPU占比(%)、等待占比(%)这四个方面对比了两份KWR报告中的SQL语句。点击Query Hash列可以跳转到完整SQL列表的对应的SQL语句上。

[转帖]3.3.8. KWR运行期对比报告 KWR DIFF的更多相关文章

  1. C++学习笔记28:运行期型式信息

    RTTI 运行期标识对象的型式信息 优势:允许使用指向基类的指针或引用自如地操作派生类的对象 typeid:获取表达式的型式:type_info:型式信息类 头文件:typeinfo 对象转型模板 d ...

  2. C++编译期多态与运行期多态

    前言 今日的C++不再是个单纯的"带类的C"语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分.在面向对象C++编程中, ...

  3. Effective Objective-C 2.0 — 第二章 对象、消息、运行期 - 第六条:理解“属性”这一概念

    开发者通过对象来 存储并传递数据. 在对象之间传递数据并执行任务的过程就叫做“消息传递”. 这两条特性的工作原理? Objective-C运行期环境(Objective-C runtime) ,提供了 ...

  4. effective OC2.0 52阅读笔记(二 对象、消息、运行期)

    第二章:对象.消息.运行期 6 理解属性这一概念 总结:OC解决硬编码偏移量问题的做法,一种方案是把实例变量当做一种存储偏移量所用的特殊变量,交由类对象保管,偏移量会在运行期查找,叫做稳固的“应用程序 ...

  5. Spring事务管理只对出现运行期异常进行回滚

    原文:http://blog.csdn.net/abc19900828/article/details/39497631 使用spring难免要用到spring的事务管理,要用事务管理又会很自然的选择 ...

  6. JVM-程序编译与代码晚期(运行期)优化

    晚期(运行期)优化 1.为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time,JI ...

  7. atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect

    atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect   #-----原理 Hibernate 运行期获得Dialect   2010-07-28 12:59 ...

  8. JIT晚期(运行期)

    在部分的商用虚拟机(Sun HotSpot.IBM J9)中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为& ...

  9. Apache Spark源码走读之3 -- Task运行期之函数调用关系分析

    欢迎转载,转载请注明出处,徽沪一郎. 概要 本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚运行着的task其输入的数据从哪获取,处理的结果返回到哪里,如何 ...

  10. java运行期类型鉴定

    运行期类型识别?RTTI? 假如我们有一个基类的引用,这个引用也可以作为子类的引用嘛,现在我们想知道这个引用的类型到底是啥? 当从子类到基类之后有很多的信息都会丢失掉,比如有一个人类的对象可以看成普遍 ...

随机推荐

  1. 使用推测解码 (Speculative Decoding) 使 Whisper 实现 2 倍的推理加速

    Open AI 推出的 Whisper 是一个通用语音转录模型,在各种基准和音频条件下都取得了非常棒的结果.最新的 large-v3 模型登顶了 OpenASR 排行榜,被评为最佳的开源英语语音转录模 ...

  2. Vue源码学习(十九):router基本原理

    好家伙,   0.什么是路由? 路由就是匹配到对应路径显示对应的组件! 那么我们要如何去实现? 我们来回忆一下这router怎么用的 1. 声明式路由配置:在路由配置对象中,定义路径与组件的映射关系. ...

  3. 详解数据库SQL中的三个语句:DROP、TRUNCATE 、DELETE

    本文分享自华为云社区<GaussDB数据库SQL系列-DROP & TRUNCATE & DELETE>,作者:Gauss松鼠会小助手2 . 一.前言 在数据库中,SQL作 ...

  4. 实战案例丨GaussDB for DWS如何识别坏味道的SQL

    摘要:SQL中的坏味道,你知道吗? SQL语言是关系型数据库(RDB)的标准语言,其作用是将使用者的意图翻译成数据库能够理解的语言来执行.人类之间进行交流时,同样的意思用不同的措辞会产生不同的效果. ...

  5. 云数据库 GaussDB(for Influx) 解密第十一期:让智能电网中时序数据处理更高效

    摘要:GaussDB(for Influx)是一款基于计算存储分离架构,完全兼容 InfluxDB 生态的云原生时序数据库. 本文分享自华为云社区<云数据库 GaussDB(for Influx ...

  6. 实践GoF的设计模式:工厂方法模式

    摘要:工厂方法模式(Factory Method Pattern)将对象创建的逻辑封装起来,为使用者提供一个简单易用的对象创建接口,常用于不指定对象具体类型的情况下创建对象的场景. 本文分享自华为云社 ...

  7. 梳理数仓FI manager节点健康检查逻辑

    摘要:一篇记录FI Manager节点健康检查机制的博文. 本文分享自华为云社区<GaussDB(DWS) FI manager节点健康检查逻辑梳理>,作者:配音师 . 一.相关背景 1. ...

  8. 解密GaussDB(for Influx)时序洞察

    摘要:GaussDB(for Influx)是一款基于华为自研的计算存储分离架构,兼容InfluxDB生态的云原生NoSQL时序数据库,提供一站式时序数据存储.分析.展示功能.其中时序洞察提供了针对时 ...

  9. Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)

    ​ Unity3D 导出的apk进行混淆加固.保护与优化原理(防止反编译) 目录 前言: 准备资料: 正文: 1:打包一个带有签名的apk 2:对包进行反编译 3:使用ipaguard来对程序进行加固 ...

  10. Building wheel for opencv-python (pyproject.toml) ,安装命令增加 --verbose 参数

    安装时间较长,通过 --verbose 参数 可以看在不在继续 Mac 安装 paddlehub 出现 Building wheels for collected packages: opencv-p ...