[转帖]3.3.8. KWR运行期对比报告 KWR DIFF
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的更多相关文章
- C++学习笔记28:运行期型式信息
RTTI 运行期标识对象的型式信息 优势:允许使用指向基类的指针或引用自如地操作派生类的对象 typeid:获取表达式的型式:type_info:型式信息类 头文件:typeinfo 对象转型模板 d ...
- C++编译期多态与运行期多态
前言 今日的C++不再是个单纯的"带类的C"语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分.在面向对象C++编程中, ...
- Effective Objective-C 2.0 — 第二章 对象、消息、运行期 - 第六条:理解“属性”这一概念
开发者通过对象来 存储并传递数据. 在对象之间传递数据并执行任务的过程就叫做“消息传递”. 这两条特性的工作原理? Objective-C运行期环境(Objective-C runtime) ,提供了 ...
- effective OC2.0 52阅读笔记(二 对象、消息、运行期)
第二章:对象.消息.运行期 6 理解属性这一概念 总结:OC解决硬编码偏移量问题的做法,一种方案是把实例变量当做一种存储偏移量所用的特殊变量,交由类对象保管,偏移量会在运行期查找,叫做稳固的“应用程序 ...
- Spring事务管理只对出现运行期异常进行回滚
原文:http://blog.csdn.net/abc19900828/article/details/39497631 使用spring难免要用到spring的事务管理,要用事务管理又会很自然的选择 ...
- JVM-程序编译与代码晚期(运行期)优化
晚期(运行期)优化 1.为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time,JI ...
- atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect
atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect #-----原理 Hibernate 运行期获得Dialect 2010-07-28 12:59 ...
- JIT晚期(运行期)
在部分的商用虚拟机(Sun HotSpot.IBM J9)中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为& ...
- Apache Spark源码走读之3 -- Task运行期之函数调用关系分析
欢迎转载,转载请注明出处,徽沪一郎. 概要 本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚运行着的task其输入的数据从哪获取,处理的结果返回到哪里,如何 ...
- java运行期类型鉴定
运行期类型识别?RTTI? 假如我们有一个基类的引用,这个引用也可以作为子类的引用嘛,现在我们想知道这个引用的类型到底是啥? 当从子类到基类之后有很多的信息都会丢失掉,比如有一个人类的对象可以看成普遍 ...
随机推荐
- Azure Data Factory(十一)Data Flow 的使用解析
一,引言 上一篇文字,我们初步对 Data Flow 有个简单的了解,也就是说可以使用 Data Flow 完成一些复杂的逻辑,如,数据计算,数据筛选,数据清洗,数据整合等操作,那我们今天就结合 Da ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 11.认识GAS & 创建自己的能力系统
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章对应Lecture 16 - Writing our own Gameplay Ability Syst ...
- 18、Scaffold 布局组件
Scaffold 是一个非常重要的布局组件,它提供了一个常见的应用程序结构布局,包含了许多基础的 UI 元素和交互方式. Scaffold 组件主要由以下几个部分组成: AppBar:用于显示在页面顶 ...
- 一文掌握Ascend C孪生调试
本文分享自华为云社区<一文掌握Ascend C孪生调试>,作者:昇腾CANN. 1 What,什么是孪生调试 Ascend C提供孪生调试方法,即CPU域模拟NPU域的行为,相同的算子代码 ...
- 【Vue day01】前端发展介绍 Vue的快速使用 插值语法 指令系统之文本指令、事件指令、属性指令
目录 前端发展介绍 Vue框架入门 M-V-VM思想(重要) 组件化开发 单页面应用 Vue的快速使用 前期准备 快速使用 对象与标签绑定 查看Vue对象 插值语法 三目运算符 指令系统之文本指令 v ...
- shell 脚本之一键部署安装 Nginx
今天咸鱼给大家分享个源码编译安装 Nginx 的 shell 脚本 这个 shell 脚本可重复执行 完整源码放在最后 定义一个变量来存放 nginx 版本号 version=1.15.4 nginx ...
- java获取部门树的方法实例
开发中如何获取一个树结构是非常常见的需求,本示例演示一下该功能如何实现. 1.数据准备(mysql) CREATE TABLE `dept` ( `dept_id` int NOT NULL AUTO ...
- vue3组件el-dialog提取
父组件: 1 <template> 2 <div class="auto-wrap"> 3 <div class="content-left ...
- svg组件封装
svg图标优点 文件体积小,能够被大量的压缩 图片可无限放大而不失真(矢量图的基本特征) 在视网膜显示屏上效果极佳 能够实现互动和滤镜效果 svg图标使用 1.安装相应的npm包: yarn add ...
- vue-draggable 学习和使用
vue-draggable 学习和使用 https://www.jianshu.com/p/e8ff1e1cafb1