金仓数据库KingbaseES运维工具参考手册(4. 问题诊断辅助工具)

目录

4.1. 工具概述 ¶

4.2. 脚本工具所在路径 ¶

4.3. 配置数据库连接信息 ¶

4.4. 工具代码及功能 ¶

4.4.1. chk_current_waitevent.sh ¶

4.4.2. chk_top_waitevent.sh ¶

4.4.3. chk_event_sql.sh ¶

4.4.4. chk_lock.sh ¶

4.4.5. chk_top_sql.sh ¶

4.4.6. chk_top_tableIO.sh ¶

4.4.7. chk_top_tablephysicalIO.sh ¶

4.4.8. chk_top_tableseqscanIO.sh ¶

4.4.9. chk_top_indexIO.sh ¶

4.4.10. chk_top_table_dml.sh ¶

4.4.11. chk_top_wal.sh ¶


4.1. 工具概述 ¶

问题诊断辅助工具是针对KingbaseES V8.6数据库开发的一套问题诊断工具。方便用户在系统故障情况下,及时了解系统特定信息。

为了保证脚本的通用性,本工具使用bash语法编写脚本,实际运行环境必须支持bash。

本工具的使用需要获取查询语句及等待事件,要求开启track_activities参数。部分shell脚本还需要依赖于extension的开启,如:sys_stat_statement, sys_kwr,sys_ksh。以上插件的开启方法可以参照《 KingbaseES数据库性能调优指南 》文档。

以下表格列出脚本及扩展组件的依赖关系。

脚本名称

扩展组件依赖

chk_event_sql.sh

sys_kwr及相关参数

sys_stat_statements 及相关参数

chk_top_sql.sh

sys_stat_statements 及相关参数

chk_top_waitevent.sh

sys_stat_statements 及相关参数

chk_top_wal.sh

sys_stat_statements 及相关参数

如果当前数据库系统是高可用集群系统,需要将数据库集群的密码文件,复制到root用户的根目录下。如果数据库集群的系统用户是kingbase用户,则通常的复制命令如下:

kingbase$ su - root -c "cp $HOME/.encpwd ~ "

4.2. 脚本工具所在路径 ¶

本工具所涉及的脚本统一放在软件安装目录SupTools/kb_diagtool。

4.3. 配置数据库连接信息 ¶

在使用辅助工具前,先配置连接信息。用户读取通用参数文件(../suptools.ini),设置环境变量。根据用户的实际需求,修改通用参数文件。(详见 通用环境变量参数文件 )

4.4. 工具代码及功能 ¶

4.4.1. chk_current_waitevent.sh ¶

4.4.1.1. 功能 ¶

查看数据库当前会话的等待事件信息。通过统计各类事件数量、当前等待会话正在运行的SQL,可以大致确定系统状态。

注意

该工具信息取自sys_stat_activity,具体字段的含义可以参考sys_stat_activity 定义。

4.4.2. chk_top_waitevent.sh ¶

4.4.2.1. 功能 ¶

查看过去60秒内的数据库等待事件,按等待事件数量排序,数据取自 perf.session_history 。

4.4.2.2. 显示结果样例 ¶

注意

该工具的信息取自perf.session_history,如果报该表不存在,表示sys_ksh 没有正确启用。

4.4.3. chk_event_sql.sh ¶

4.4.3.1. 功能 ¶

查看过去60秒内与特定等待事件相关的SQL。脚本运行时,需要特定的等待事件作为参数传入。等待事件可以根据chk_top_waitevent.sh结果,针对性进行分析。该脚本显示的数据取自 perf.session_history 。

注意

该脚本传入参数是一个等待事件,通常是3.4.2节返回的top waitevent,用于进一步查询具体哪些SQL导致了该等待事件。

4.4.4. chk_lock.sh ¶

4.4.4.1. 功能 ¶

检查当前数据库锁等待的会话信息,及当前会话执行的SQL。通过层级显示,可以方便定位源头操作。

输出信息解释如下:

  • 425715: 表示进程PID。

  • transactioid: 表示锁的类型,这里是事务锁。

  • Exclusive: 表示锁的模式,这里是独占锁。

  • Null: 表对象的名称。由于是事务锁,因此,这里为null。

  • Delete from t1 :表示引起锁的具体SQL。

4.4.5. chk_top_sql.sh ¶

4.4.5.1. 功能 ¶

查询过去10秒,最耗时、逻辑IO最多、物理IO最多(扣除buffer hit)、临时块写入最多的SQL,每类选取5条(默认5条),分别列出,数据取自sys_stat_statement 。可以通过 chk_top_sql.sh $n ,返回 n 条记录。

4.4.5.2. 显示结果样例 ¶

金仓数据库KingbaseES运维工具参考手册(4. 问题诊断辅助工具)_第1张图片

4.4.6. chk_top_tableIO.sh ¶

4.4.6.1. 功能 ¶

查询过去10秒,IO 值最大的表。分别统计表的IO,表的索引IO,toast 对象的 IO ,数据取自pg_statio_all_tables 。这里的IO包括缓冲区读取和磁盘物理读取。

4.4.7. chk_top_tablephysicalIO.sh ¶

4.4.7.1. 功能 ¶

查询过去10秒,物理IO 值最大的表(数量可传参数)。分别统计表的IO,表的索引IO,toast 对象的 IO,数据取自pg_statio_all_tables,与chk_top_table IO不同,这里的IO只包括磁盘物理读取。

4.4.8. chk_top_tableseqscanIO.sh ¶

4.4.8.1. 功能 ¶

查询过去10秒,全表扫描的IO数量最大的表。全表扫描的IO数量是seq_scan次数与表大小的乘积,数据取自pg_stat_sys_tables。

4.4.8.2. 显示结果样例 ¶

金仓数据库KingbaseES运维工具参考手册(4. 问题诊断辅助工具)_第2张图片

4.4.9. chk_top_indexIO.sh ¶

4.4.9.1. 功能 ¶

与 chk_top_tableIO不同,这里只关注哪些索引引发的IO最大,分别统计逻辑IO与物理IO。

4.4.10. chk_top_table_dml.sh ¶

4.4.10.1. 功能 ¶

查询过去10秒(时间参数,可填),增删改次数最多的表。数据取自sys_stat_user_tables。

4.4.11. chk_top_wal.sh ¶

4.4.11.1. 功能 ¶

检查当前哪些 SQL引发最多的 WALWrite 或 WALSync 等待事件,通过观察当前的等待事件,可以间接确认哪些SQL引发频繁redo日志写或redo日志刷盘。

你可能感兴趣的:(KingbaseES产品手册,数据库,运维,金仓数据库,kingbase)