人大金仓KWR按库展示交互KSH兼容oracle

145 阅读5分钟

关键字:人大金仓、KingbaseES

1、功能描述

1.1功能描述及使用示例

对比Oracle ASH报告,该特性需求指在KSH中对以下几个子报告做兼容:

  • 数据库和版本信息
  • 主机和实例环境
  • 采样信息
  • Top Service/Module
  • Top DB Objects

提供以上子报告的显示功能,可以更直观的获取操作的实例环境配置,版本信息,操作对象执行业务的总任务占比,以及进程类型,操作库等更详细的信息供分析性能问题和测试数据。

KSH 相关GUC参数:

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 报告展示中文/英语信息,默认:中文

新增参数:

sys_kwr.database:配置按库展示,只能在该参数设置的库上进行ksh报告收集,默认:kingbase

3.1.1 GUC参数配置

1、普遍收集场景

①在kingbase.conf中配置guc参数

shared_preload_libraries = 'liboracle_parser, sys_stat_statements, sys_kwr'

sys_stat_statements.track = 'top' # default = 'none'

sys_kwr.collect_ksh = on # default = off

上述参数含义:

sys_stat_statements.track:设置 sys_stat_statements.track 控制哪个语句可以被该模块跟踪,声明 'top' 来跟踪顶级(直接通过客户端发出)的语句,'all' 跟踪嵌套的语句,'none' 禁用语句状态收集。建议使用 'top'。

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

②ksql连接数据库

./ksql –p 54321 –U system kingbase

③创建sys_kwr扩展和快照1

Create extension sys_kwr;

Select *from perf.kwr_snapshot();

④执行以下业务之一:

业务1:tpcc 10仓10并发 2min(可观察较完整信息)

业务2:./kbbench –p 54321 –Usystem –i –s【num】 【database】

【注】数据量为num*100000,database指定灌数库

进行压力测试:./kbbench –p 54321 –U system –r –c2 –j2 –P1 –M prepared –d 【database】

⑤创建快照2

Select * from perf.create_snapshot();

⑥收集ksh报告

1)根据时间段进行收集

Select * from perf.ksh_report((CURRENT_TIMESTAMP - '00:15:00'::interval,10,0,'text', 'database'));

函数定义:Select * from perf.ksh_report({start_ts}, {duration}, {slot_width}, {format},{database});

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

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

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

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

database:指定收集某个库的信息

2)根据快照进行收集

Select * from perf.ksh_report_by_snapshots(1,2,0, 'text', 'database');

Select * from perf.ksh_report_by_snapshots({start_snapid},{end_snapid},{slot_width}, {format},{database});

start_snapid: 起始快照号

end_snapid: 结束快照号

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

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

database:指定收集某个库的信息

收集离线报告

SELECT * FROM perf.ksh_report_to_file_by_snapshots({start_snapid}, {end_snapid}, {file_path}, {format}, {slot_width},{database});含义同上

3.1.2 实例信息部分

报告头信息:

根据以下方法进行系统信息查询

连接ksql执行命令

./ksql -p 54322 -U system kingbase

1)采集信息库

select current_database();

2)查询发行版本

select version();

3)获取kingbase构建版本号

select * from build_version();

4)收集报告,与报告内容进行对比

3.1.3 采样信息报告

执行3.1.1中业务后:

1)查询报告时间范围内采样次数Sample Count

显式创建事务

begin;

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

select count(*) from ksh_result ;

commit;

2)通过计算会话时间,查询快照采样频率

Elapsed Time = end_time - begin_time

Avg Active Sessions = Sample Count / Elapsed Time

对比报告中内容

3)对照报告中内容

3.1.4 CPU内存信息

1、查询系统信息

1)查询处理器型号

cat /proc/cpuinfo |grep 'model name' |uniq

  1. 查询处理器数

cat /proc/cpuinfo |grep 'processor' |wc –l

  1. 查询核心数

cat /proc/cpuinfo | grep "cpu core" | uniq | wc –l

  1. 连接ksql执行命令:

./ksql -p 54322 -U system kingbase

  1. 查询SGA系统全局区:

select pg_size_pretty(sum(size+pg_stat_get_dsm_size)) from pg_stat_shmem, pg_stat_get_dsm_size();

  1. 查询ksh缓冲区大小

select * from pg_stat_shmem where name = 'sys_ksh';

7)对比报告中内容

3.1.5 Top 服务/模块

收集报告后,在top服务/模块部分会显示指定时间内,产生的服务类型,服务触发的事件名称,活动占比等

下表中显示了ksql和kbbench两个client访问创建的client backend服务,随数据库自启动的清理服务autovacuum和后台进程服务background worker

3.1.6 Top数据库对象

收集报告后,在top数据库对象部分可以获取到业务执行所操作的表信息,表空间信息,事件类型名称,时间占比和平均会话数等,需要注意的是,当采集库和被采集库不是同一库时,对象名部分会显示为unknown

1.2 测试经验及注意事项

1、进行跨库收集需要开启sys_kwr.database新增参数,对应报告内容中的实例信息显示验证,需要注意的是,该GUC参数并不是对收集报告的权限进行扩展,而是把权限转移到某个库上,设置后只允许该库进行ksh报告的收集操作

2、KSH信息的收集要求业务的执行时间不能过短,因此在收集操作过程中,尽量为操作环境添加一定的测试压力,这样可以使大部分的执行语句被捕获。