检查指标
除了基本功能的开发,我们所碰到的另外一个较大的难题便是确定检查指标。因为指标设计的好坏决定了整个系统的实用性和权威性,所以我们根据我们的具体需求和实际情况,总结出了以下三十多个指标。
1. 重组表检查
检测方法:call REORGCHK_TB_STATS(‘T’,’ALL’)
指标阈值:无
指标意义:检查需要对哪些表做重组
2. 重组索引检查
检测方法:call REORGCHK_IX_STATS(‘T’,’ALL’)
指标阈值:无
指标意义:检查需要对哪些索引做重组
3. 统计信息检查
检测方法:检查syscat.tables的stats_time字段距现在的时间
指标阈值:无
指标意义:对没有启动自动runstats的库进行检查
4. db2diag.log检查
检测方法:SYSPROC.PD_GET_DIAG_HIST
指标阈值:无
指标意义:检查是否有严重的报错日志
5. DB2内存检查
检测方法:SYSPROC.ADMIN_GET_DBP_MEM_USAGE(-1)
指标阈值:<=50%
指标意义:检查DB2的总内存占系统总内存的百分比是否合理
6. DB2参数检查
检测方法:sysibmadm.dbcfg和sysibmadm.dbmcfg
指标阈值:无
指标意义:根据上线文档进行比对
7. 缓冲池命中率
检测方法:sysibmadm.BP_HITRATIO
指标阈值:优秀>95% 良好>80%
指标意义:检查当前的缓冲池命中率
8. 锁等待,锁升级,死锁
检测方法:sysibmadm.snapdb
指标阈值:无
指标意义:检查锁等待、锁升级和死锁的情况
9. 排序溢出
检测方法:sysibmadm.snapdb
指标阈值:<=1
指标意义:检查是否有排序溢出的情况
10. SQL性能分析
检测方法:Total execution time/Num of excutions
指标阈值:<1ms
指标意义:分析整体SQL的读写是否正常
11. SQL语句分析
检测方法:sysibmadm.snapdyn_sql
指标阈值:无
指标意义:分析执行时间最长的SQL
12. 表状态检查
检测方法:
select substr(tabschema,1,10) as tabschema,substr(tabname,1,30) as tabname,status,type from syscat.tables where status != 'N'
指标阈值:Status != 'N'
指标意义:找到状态不正常的表
13. 有效索引读
检测方法:
select Rows_read / (Rows_Selected+1) as IREF from sysibmadm.snapdb
指标阈值:OLTP<=5 SAP系统<=3
指标意义:多少行属于有效的读取
14. 包缓存命中率
检测方法:1-(Package Cache Insert/Package Cache Lookup)
指标阈值:1,或者能够长时间接近1的稳定数值
指标意义:有多少查询语句可以直接在包缓存中找到
15. 平均结果集大小
检测方法:
select ROWS_SELECTED/(SELECT_SQL_STMTS+1) as Avg_Result_Set from sysibmadm.snapdb
指标阈值:OLTP<=10
指标意义:平均每条Select SQL语句返回的结果行数
16. 同步读取比例
检测方法:
select 100-(((pool-async_data_reads+pool_async_index_reads)*100)/(pool_data_p_reads+pool_index_p_reads+1))as SRP from sysibmadm.snapdb where DB_NAME = 'DB1'
指标阈值:OLTP>=90%
指标意义:数据库同步读的比率
17. 数据、索引页清除
检测方法:async writes/total writes
指标阈值:>=95%
指标意义:页面清除进程(线程)是否能够有效地将脏页在后台刷入磁盘
18. 脏页偷取
检测方法:
select POOL_DRTY_PG_STEAL_CLNS from sysibmadm.snapdb
指标阈值:>10
指标意义:系统的脏页偷取过多
19. 缓冲区读写I/O响应时间
检测方法:
select tbsp_name,(POOL_READ_TIME /(POOL_DATA_P_READS + POOL_INDEX_P_READS +POOL_TEMP_DATA_P_READS +POOL_TEMP_INDEX_P_READS +1) as TSORMS from sysibmadm.snaptbsp order by TSORMS desc fetch first 10 rows only
指标阈值:1~10ms
指标意义:找出读时间最慢的表空间
20. Direct I/O时间
检测方法:
select DIRECT_WRITE_TIME/DIRECT_WRITES from sysibmadm.snapdb
指标阈值:1~10ms
指标意义:查看直接读数I/O时间
21. 编目缓冲区命中率
检测方法:catalog cache inserts/catalog cache lookups
指标阈值:0,或者接近0的数值长时间维持稳定
指标意义:调整catalogcache_sz大小
22. 排序溢出比例
检测方法:sort overflow/total sorts
指标阈值:0,或者接近0的数值长时间维持稳定
指标意义:查看是否有排序溢出
23. 平均排序时间
检测方法:total sort time/total sorts
指标阈值:远小于系统预期平均语句的执行时间
指标意义:平均每次排序所消耗的时间
24. 平均每条交易的排序次数
检测方法:total sorts/(Commit statements attempted +Rollback statements attempted)
指标阈值:OLTP<5
指标意义:查看每条交易所需排序数量
25. 总的事务数量
检测方法:commit statements attempted +Rollback statements attempted
指标阈值:无
指标意义:查看交易事务总量
26. 每个事务包含的查询SQL语句数量
检测方法:查询语句总数/交易总数
指标阈值:OLTP<=10
指标意义:查看每个事务的SQL语句数量
27. 每个事务包含的增删改语句数量
检测方法:
select decimal(UID_SQL_STMTS)/decimal(COMMIT_SQL_STMTS +ROLLBACK_SQL_STMTS+1) as uidpertxn from sysibmadm.snapdb
指标阈值:OLTP<=5
指标意义:查看每一个事务使用的更改语句
28. 每个事务返回的结果集行数
检测方法:选择的行数/事务总数
指标阈值:尽量接近得到的数据集
指标意义:查看每个事务返回的结果集行数
29. 每个事务返回的读的行数
检测方法:读取的行数/事务总数
指标阈值:OLTP尽量靠拢前一个指标
指标意义:查看每个事务读取的行数
30. 每个事务需要的缓冲区逻辑读
检测方法:逻辑读总数/事务总数
指标阈值:OLTP尽量低
指标意义:查看每个事务需要的缓冲区逻辑读
31. 每个事务需要的索引逻辑读
检测方法:逻辑索引读总数/事务总数
指标阈值:OLTP尽量低
指标意义:查看每个事务需要的索引逻辑读
32. 日志写入数度
检测方法:日志写时间/日志写次数
指标阈值:<3
指标意义:查看日志写的速度
33. CPU 内核/内存比例
检测方法:
select TOTAL_MEMORY/TOTAL_CPUS from SYSIBMADM.ENV_SYS_INFO
指标阈值:4~8G
指标意义:平均每个CPU可使用的内存数
34. 表空间状态检查
检测方法:
select TBSP_ID,TBSP_NAME,tbsp_state from SYSIBMADM.TBSP_UTILIZATION
指标阈值:tbsp_state = 'NORMAL'
指标意义:检查表空间状态是否正常
35. Package状态检查
检测方法:db2 "select VALID from syscat.packages"
指标阈值:VALID = 'Y'
指标意义:检查Package状态
36. 数据库大小
检测方法: call get_dbsize_info(?,?,?,-1)
指标阈值:<60%
指标意义:检查数据库总大小