[转帖]3.3.6. 活跃会话历史报告SYS_KSH

活跃,历史,报告,sys,ksh · 浏览次数 : 0

小编点评

# KSH报告说明 **KSH仅支持管理员在主服务器运行(备机无法运行)KSH功能仅能在kingbase库上使用历史数据的采样周期为10秒,实时数据的采样周期为1秒报告的采集要求开启:**track_activities 和 sys_stat_statements 并设置 sys_kwr.collect_ksh = on3.3.6.5. KWR和KSH比较**¶ sys_kwrsys_ksh定位周期时间累积差异,查询特定时间段的累积变化识别系统短暂(transient)变化, 秒级时刻的实时值原理以累积式计数反馈系统在一定周期内的整体负载和瓶颈基于定时的采样方式进行会话和数据收集场景本次系统升级后有哪些整体改进, 当前或历史某个时点,发生了什么样的异 常,系统在执行/运行什么任务数据 留存默认1小时采集,快照保留8天,超过8天后自动删除默认1秒,实时数据保留1小时, 过后以1/10的比例存入历史数据。归纳总结以上内容,生成内容时需要带简单的排版,以确保内容清晰易懂。

正文

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

 

sys_stat_activity 里记录的等待事件是瞬时信息,没有对等待事件的时间进行累计,所以 KingbaseES 在 V8R6 中引入了明细会话历史(Kingbase Session History)和相应的报告工具。用户可以使用该工具进行会话历史的分析,并针对报告呈现的性能瓶颈进行优化。

sys_ksh 以每秒采样的方式进行会话和数据收集,并将采集数据放入内存的 Ringbuf 队列中,采集的数据主要包括:会话、应用、等待事件、命令类型、QueryId 等。其主要使用场景是:当前或历史某个时点,发生了什么样的异常,系统在执行/运行什么任务。

KSH 功能已经在 KWR 插件中实现,当KWR插件创建后就可以使用该功能。

3.3.6.1. SYS_KSH 的配置 

sys_ksh 的参数在 kingbase.conf 中设置,典型用法可能是:

#kingbase.conf
shared_preload_libraries = 'liboracle_parser, sys_stat_statements, sys_kwr'
sys_stat_statements.track = 'top' # default = 'none'
sys_kwr.collect_ksh = on          # default = off

KSH 相关参数:

  • track_activities:跟踪活动会话的等待事件、执行SQL、状态等,默认:on

  • sys_stat_statements.max:设置 sys_stat_statement 跟踪的最大语句数,默认:5000

  • sys_kwr.collect_ksh:启用或禁用 sys_ksh 数据收集,默认:关闭

  • sys_kwr.ringbuf_size:设置 sys_ksh ringbuf 大小,在内存中可以存多少条数据,默认:100000

  • sys_kwr.history_days:设置最大的 sys_ksh 历史数据存储,在磁盘上存储的时间,默认:8天

  • sys_kwr.language:KSH 报告展示中文/英语信息,默认:中文

注:采集报告需要在开启:track_activities(默认已开启),并设定 sys_kwr.collect_ksh = on 才可以查看报告。开启该参数会有一定的性能损耗。

为了确保 KSH 能够采集到活动会话的信息,需要给数据库系统施加一些负载,比如用 TPCC、sysbench、loadrunner 等工具对其进行压测。

也可以通过以下语句给当前会话产生一个 TimeOut 等待事件,以便能够查看无负载情况下的 KSH 报告:

SELECT sys_sleep(2);
SELECT * FROM perf.ksh_report();

当 KSH 没有采集到数据会提示:

SELECT * FROM perf.ksh_report();
../../_images/image771.png

KSH 报告中的 queryid 依赖于 sys_stat_statements 表,当 sys_stat_statements 没有采集到数据会提示:

SELECT * FROM perf.ksh_report();
../../_images/image1182.png

3.3.6.2. SYS_KSH 采集数据说明 

KSH 采集的数据主要包括以下信息:

字段

类型

描述

ts

ti mestamptz

采样时间

db_id

oid

数据库OID

db_name

va rchar(64)

数据库名称

pid

int

进程ID

user_id

oid

用户OID

user_name

va rchar(64)

用户名

app_name

va rchar(64)

应用名称

c lient_addr

inet

客户端IP地址

wait_class

text

等待事件类型

wait_event

text

等待事件

query_id

uint8

QueryId

ba ckend_type

text

后端类型,如:autovacuum, autovacuum worker等

type

text

语句类型,如:INSERT, SELECT, UPDATE, DELETE, UTILITY

phase

text

执行阶段,如:PARSE, PLAN, EXECUTION, UNKNOWN

state

text

状态,如:IDLE, IDLE IN TRANSACTION, RUNNING等

3.3.6.3. 使用 SYS_KSH 

创建 KWR 插件:

CREATE EXTENSION sys_kwr;

保存于内存 Ringbuf 的数据可以通过视图 perf.session_history 查看:

SELECT * FROM perf.session_history;

其中保存于数据库的历史数据可以通过视图 perf.ksh_history 查看:

SELECT * FROM perf.ksh_history;

可以通过 perf.ksh_report() 函数生成在线报告查看:

SELECT * FROM perf.ksh_report({start_ts}, {duration}, {slot_width}, {format});

参数说明:

  • start_ts: 报告开始时间,默认:当前时间-15分钟

  • duration: 报告时长,默认:15分钟,最大不超过60

  • slot_width: 报告最小区间,输入0时系统自动计算合适的宽度,默认:0

  • format: 报告生成格式,可选择 ’html’和’text’两种格式,默认 TEXT 格式

例:生成 TEXT 的 KSH 在线报告

select * from perf.ksh_report('2022-12-13 14:12:46',15,0,'text');

可以通过 perf.ksh_report_to_file() 函数生成报告文件:

SELECT * FROM perf.ksh_report_to_file({start_ts},{duration},{slot_width},{file_path},{format});

参数说明:

  • start_ts: 报告开始时间,默认:当前时间-15分钟

  • duration: 报告时长,默认:15分钟,最大不超过60

  • slot_width: 报告最小区间,输入0时系统自动计算合适的宽度,默认:0

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

  • format: 报告生成格式,可选择 ’html’和’text’两种格式,默认 TEXT 格式

例:生成 HTML 的 KSH 报告文件

select * from perf.ksh_report_to_file('2022-12-13 14:12:46',15,0,'/home/kingbase/ksh_report.html','html');

若想查看两个快照期间的 KSH 报告,可以通过 perf.ksh_report_by_snapshots() 函数生成在线报告:

SELECT * FROM perf.ksh_report_by_snapshots({start_snapid}, {end_snapid}, {slot_width}, {format});

参数说明:

  • start_snapid: 起始快照号

  • end_snapid: 结束快照号

  • slot_width: 报告最小区间,输入0时系统自动计算合适的宽度,默认:0

  • format: 报告生成格式,可选择 ’html’和’text’两种格式,默认 TEXT 格式

例:根据快照号生成 TEXT 的 KSH 在线报告

select * from perf.ksh_report_by_snapshots(1,2);

若想查看两个快照之间的 KSH 报告并保存到文件中,可以通过 perf.ksh_report_to_file_by_snapshots() 函数生成报告文件。

SELECT * FROM perf.ksh_report_to_file_by_snapshots({start_snapid}, {end_snapid}, {file_path}, {format}, {slot_width});

参数说明:

  • start_snapid: 起始快照号

  • end_snapid: 结束快照号

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

  • format: 报告生成格式,可选择 ’html’和’text’两种格式,默认 TEXT 格式

  • slot_width: 报告最小区间,输入0时系统自动计算合适的宽度,默认:0

例:根据快照号生成 HTML 的 KSH 报告文件

select * from perf.ksh_report_to_file_by_snapshots(1,2,'/home/kingbase/ksh_report.html','html');

3.3.6.4. 查看SYS_KSH报告 

KSH输出报告的内容章节包括:

  • 报告和实例信息

  • Top 用户事件

  • Top 后台事件

  • Top 数据库

  • Top PL/SQL 过程

  • Top 简单查询

  • 等待事件高的 Top SQL

  • Top 会话

  • Top 客户端

  • Top 并行 SQL 等待事件

  • Top 阻塞会话事件

  • Top 重量级锁等待事件

  • Top 轻量级锁等待事件

  • Top SQL 命令类型

  • Top 执行阶段

  • 分段时间等待事件统计

  • 完整 SQL 列表

KSH 网页版示例报告说明如下:

  1. 报告和实例信息

该报告显示KSH环境和总体信息:

../../_images/image781.png

统计字段说明:

  • HostName:主机名

  • Cpus:服务器cpu数

  • SGA Size:共享内存大小

  • Server Version:服务器版本

  • Listen Address:数据库服务器的监听地址

  • Report Begin Time:KSH报告开始时间

  • Report End Time:KSH报告结束时间

  • Sample Count:报告时间范围内采样次数

  • Second Count:总共采样到的秒数(各客户端会话进程累加起来)

  • Avg Act Ses:平均每秒的活跃会话数

  • Data Source:KSH报告数据的来源(包括:内存、KSH表、混合三种)

  1. TOP用户事件

该报告展示排名靠前的客户端会话等待事件,通过该报告可以知道数据库系统里哪些等待事件发生的比较多:

../../_images/image791.png

字段说明:

  • 事件类型:等待事件所属的分类,其中OnCpu是指非等待事件

  • 事件名称:等待事件的名称

  • 采样数:报告期间采样到的等待事件数量

  • 事件占比:报告期间采样到的等待事件数量占全部等待事件的百分比

  • 平均会话数:平均每秒等待事件出现的会话数量

  1. TOP后台事件

该报告展示排名靠前的后台进程的等待事件,通过该报告可以知道数据库系统里哪些等待事件发生的比较多:

../../_images/image801.png

字段说明:

  • 事件类型:等待事件所属的分类,其中OnCpu是指非等待事件

  • 事件名称:等待事件的名称

  • 采样数:报告期间采样到的等待事件数量

  • 活动占比:报告期间采样到的等待事件数量占全部等待事件的百分比

  • 平均会话数:平均每秒等待事件出现的会话数量

  1. TOP数据库

该报告展示访问次数排名靠前的数据库:

../../_images/image1172.png

字段说明:

  • 数据库名:数据库名称

  • 访问次数:报告期间访问数据库的次数

  • 活动占比:报告期间采样到的访问次数占全部访问次数的百分比

  • 平均会话数:平均每秒访问出现的会话数量

  1. Top PL/SQL 过程

该报告展示采样到的PL/SQL函数执行情况:

../../_images/image813.png

字段说明:

  • 名称:PL/SQL函数名称

  • 数据库名:执行该PL/SQL函数的数据库名称

  • 活动占比:该函PL/SQL数执行占全部PL/SQL函数执行的百分比

  • 平均会话数:平均每秒PL/SQL出现的会话数量

  1. Top 简单查询

该报告主要展示使用简单报文(Simple Query)的SQL语句,即没有使用绑定变量的SQL语句统计:

../../_images/image822.png

字段说明:

  • Query ID:执行简单报文的SQL语句的ID,可以通过点击链接看详细SQL语句

  • 活动占比:SQL语句占简单报文SQL语句的百分比

  • 平均会话数:该SQL语句每秒平均会话数

  • 采样数:KSH报告期间采样到的该SQL语句次数

  • SQL语句:SQL语句字符串,超长则截断

  1. 等待事件高的 TOP SQL

该报告统计等待时间最多的SQL语句:

../../_images/image832.png

字段说明:

  • Query ID:执行简单报文的SQL语句的ID,可以通过点击链接看详细SQL语句

  • 采样数:KSH报告期间采样到的该SQL语句次数

  • 活动占比:SQL语句占简单报文SQL语句的百分比

  • 事件名称:等待事件的名称

  • 事件次数:等待时间发生的次数

  • 事件占比:该SQL语句当前等待事件占其全部等待事件的比例

  • SQL语句:SQL语句字符串,超长则截断

  1. 完整的 SQL 文本列表

该报告展示KSH报告中出现的Query ID对应完整SQL语句:

../../_images/image842.png

字段说明:

  • Query Id:SQL语句的query

  • 采样数:该SQL语句的采样数

  • SQL语句:SQL语句的完整字符串

  1. TOP会话

该报告展示TOP活跃会话的基本信息:

../../_images/image851.png

字段说明:

  • 会话ID:活跃会话对应的进程ID

  • 会话占比:该活跃会话出现的占比

  • 事件名称:采样到的等待事件或者CPU的名称

  • 事件占比:该事件占该会话全部事件的占比

  • 客户程序:该会话的客户端名称

  • 用户名:该会话的用户名

  1. TOP客户端

该报告按客户端连接来统计活跃会话情况:

../../_images/image861.png

字段说明:

  • 用户名:该客户端类型的用户名称

  • 客户程序:该客户端应用名称

  • 活动占比:统计到该客户端的活动占全部活动的比例

  • 平均会话数:统计到该客户端的平均会话数

  1. TOP 并行 SQL 等待事件

该报告主要展示客户端会话中的并行查询进程的SQL统计信息:

../../_images/image871.png

字段说明:

  • 会话ID:统计到的并行进程的PID

  • 活动占比:统计到该客户端的活动占全部活动的比例

  • 事件名称:并行进程的等待事件或者CPU活动

  • 事件占比:并行进程的等待事件或者CPU活动的占比

  • 平均会话数:并行进程的平均活跃会话数

  • 用户:并行进程的用户

  • 客户程序:并行进程的客户端程序名称

  • Query Id:并行进程执行的SQL语句

  1. Top 阻塞会话事件

该报告按进程展示阻塞类的会话事件,即Lock类等待事件的统计:

../../_images/image881.png

字段说明:

  • 会话ID:发生阻塞等待事件的进程的PID

  • 活动占比:该会话阻塞事件占全部事件的占比

  • 平均会话数:进程的平均活跃会话数

  • 事件名称:并行进程的等待事件或者CPU活动

  • 事件占比:并行进程的等待事件或者CPU活动的占比

  • 用户:并行进程的用户

  • 客户程序:并行进程的客户端程序名称

  1. Top 重量级锁等待事件

该报告展示客户端会话进程的重量级锁等待事件统计:

../../_images/image891.png

字段说明:

  • 锁名称:统计的锁的名称

  • 锁次数:统计的锁的次数

  • 锁占比:统计的锁占全部锁的占比

  • 活动占比:统计到该等待事件重量级锁的次数占全部活动的比例

  • 平均会话数:该锁出现的平均会话数

  1. Top 轻量级锁等待事件

该报告展示客户端会话进程的轻量级锁等待事件统计:

../../_images/image1162.png

字段说明:

  • 锁名称:统计的锁的名称

  • 锁次数:统计的锁的次数

  • 锁占比:统计的锁占全部锁的占比

  • 活动占比:统计到该等待事件轻量级锁的次数占全部活动的比例

  • 平均会话数:该锁出现的平均会话数

  1. Top SQL 命令类型

该报告展示客户端会话进程的SQL语句类型:

../../_images/image901.png

字段说明:

  • 命令类型:SQL语句类型

  • 差异Query ID:该类型下SQL语句数量

  • 命令占比:该SQL语句类型的占比

  • 平均会话数:该SQL语句的平均会话数

  1. Top 执行阶段

该报告展示客户端会话进程的SQL语句执行阶段:

../../_images/image914.png

字段说明:

  • 执行阶段:SQL语句的执行阶段,主要包括解析(Parse)、计划(Plan)、绑定(Bind)、执行(Execute)、同步(Sync)等

  • 阶段占比:该执行阶段占全部执行阶段采样数的比例

  • 活动占比:该执行阶段采样数占全部采样数量的比例

  • 平均会话数:该执行阶段的平均会话数

  1. 分段时间等待事件统计

该报告展示按时段(比如5分钟)统计的等待事件:

../../_images/image922.png

字段说明:

  • 启动:统计时段开始时间

  • 结束:统计时段结束时间

  • 区间采样数:统计时段内等待事件采样数

  • 事件类型:统计到的等待事件类型

  • 事件次数:该等待事件类型下等待事件的数量

  • 事件占比:该等待事件占全部等待事件的比例

通过该输出,可以发现报告区间发生的最多的等待事件、查询和客户端的信息,基于这些信息可以帮助使用者快速定位当前系统的瓶颈点。

KSH报告说明:

  • KSH仅支持管理员在主服务器运行(备机无法运行)

  • KSH功能仅能在kingbase库上使用

  • 历史数据的采样周期为10秒,实时数据的采样周期为1秒

  • 报告的采集要求开启:track_activities 和 sys_stat_statements 并设置 sys_kwr.collect_ksh = on

3.3.6.5. KWR和KSH比较 

 

sys_kwr

sys_ksh

定位

周期时间累积差异,查询特定时间段的累积变化

识别系统短暂(transient)变化, 秒级时刻的实时值

原理

以累积式计数反馈系统在一定周期内的整体负载和瓶颈

基于定时的采样方式进行会话和数据收集

场景

本次系统升级后有哪些整体改进, 当前时段与基线相比指标如何变化。

当前或历史某个时点,发生了什么样的异 常,系统在执行/运行什么任务

数据 留存

默认1小时采集,快照保留8天,超过8天后自动删除

默认1秒,实时数据保留1小时, 过后以1/10的比例存入历史数据

与[转帖]3.3.6. 活跃会话历史报告SYS_KSH相似的内容:

[转帖]3.3.6. 活跃会话历史报告SYS_KSH

https://help.kingbase.com.cn/v8/perfor/performance-optimization/performance-optimization-6.html#sys-ksh sys_stat_activity 里记录的等待事件是瞬时信息,没有对等待事件的时间进行累计

[转帖]3.3.7. 自动诊断和建议报告SYS_KDDM

https://help.kingbase.com.cn/v8/perfor/performance-optimization/performance-optimization-6.html#sys-ksh KDDM 是 KingbaseES 性能自动诊断和建议的报告。它基于 KWR 快照采集的性能

[转帖]3.3.8. KWR运行期对比报告 KWR DIFF

https://help.kingbase.com.cn/v8/perfor/performance-optimization/performance-optimization-6.html#sys-ksh KWR报告是Diff报告的基础,在数据库运行过程中,通常在业务的高峰期和低谷期,或者在参数调

[转帖]KingbaseES 事务总结

目录 1. 什么是事务? 2. 事务的属性-ACID 3. 数据库事务的操作方式 3.1. SET TRANSACTION 3.2. BEGIN 3.3. COMMIT 3.4. ROLLBACK 3.5. SAVEPOINT 3.6. ROLLBACK TO SAVEPOINT 4. 事务的并发控

[转帖]tidb数据库5.4.3和6.5.3版本性能测试对比

https://tidb.net/blog/5454621f 一、测试需求: 基于历史原因,我们的业务数据库一直使用5.4.3,最近由于研发提出需求:需要升级到6.5.3版本,基于版本不同,需要做个压力测试已验证2个版本之间的性能差异。 二、测试目的: 验证tidb数据库5.4.3和6.5.3版本性

[转帖]在 CentOS 7 上安装并配置 Python 3.6环境

https://www.jianshu.com/p/b978e46de442 拖了很久没有更新,抱歉啦~ 今天受邀写篇如何在 CentOS 7 上配置 Python 3 环境的文章。往常我都选择直接把我早年写的一篇文章《源码编译MongoDB》丢过去,让他们看其中的源码编译 Python 那一节,不

[转帖]Django系列3-Django常用命令

文章目录 一. Django常用命令概述二. Django常用命令实例2.1 help命令2.2 version2.3 check2.4 startproject2.5 startapp2.6 runserver2.7 shell2.8 migrations2.8.1 makemigrations2

[转帖]Docker镜像最佳实践

https://www.zhihu.com/people/trumandu-95/posts 5条最佳建议 1.仅安装产线需要依赖与软件 镜像尽可能最小原则 仅复制jar/war 使用自定义JRE(Java Runtime Environment) 2.使用多阶段构建 FROM maven:3.6.

[转帖]TNS-12535 TNS-00505的处理方法

硬件说明: 操作系统版本:ORACLE LINUX 6.3 64位 数据库版本:11.2.0.3 64位 问题说明: 在检查数据库的alert日志的时候,发现大量的12170和TNS-12535的错误; Fatal NI connect error 12170. VERSION INFORMATIO

[转帖]linux服务之tuned

https://www.cnblogs.com/createyuan/p/5701650.html RHEL/CentOS 在 6.3 版本以后引入了一套新的系统调优工具 tuned/tuned-adm,其中 tuned 是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系