db2 性能查看top sql

这篇文章是对之前有篇db2 v9的简化更新,总体还是觉得DB2TOP比较好用直观,不过需要导出SQL时,或自动化脚本时,还是建议执行SQL。
SYSIBMADM的SCHEMA下有很多帮助下的工具视图,大家有兴趣可以多了解一下。这里只是列举了几个而已。
(注意:以下查询需要采用数据库管理员的权限用户执行)
 
和oracle的top sql对应的是sysibmadm.top_dynamic_sql,以下的视图所在的模式都是sysibmadm

1、APPL_PERFORMANCE (DB2 V9 name APPLICATION_PERFORMANCE) :    标识可能正在执行大型表扫描操作的应用程序: 
select AGENT_ID, PERCENT_ROWS_SELECTED from SYSIBMADM.APPL_PERFORMANCE;
PERCENT_ROWS_SELECTED 值显示返回给应用程序的行数。

2、LONG_RUNNING_SQL : 标识当前正在执行的运行时间最长的查询: 
select * from SYSIBMADM.LONG_RUNNING_SQL;
order by ELAPSED_TIME_MIN desc fetch first 5 rows only;
通过使用此视图,她可以确定这些查询已运行的时间长度以及这些查询的状态。如果某个查询已执行了很长时间并且正在等待锁,她就可以使用对特定代理程序标识执行查询的 LOCKWAITS 或 LOCK_HELD 管理视图来进行进一步调查。LONG_RUNNING_SQL 视图还会指出正在执行的语句并允许她标识可能有问题的 SQL。

3、QUERY_PREP_COST : 对已确定有问题的查询进行故障诊断。此视图可以指出查询的运行频率以及这些查询中每个查询的平均执行时间:
select NUM_EXECUTIONS, AVERAGE_EXECUTION_TIME_S, PREP_TIME_PERCENT from SYSIBMADM.QUERY_PREP_COST order by NUM_EXECUTIONS desc;
查询时耗用的时间在查询执行时间中所占的百分比。如果编译和优化查询时耗用的时间几乎与查询的执行时间一样长,建议该查询的所有者更改用于该查询的优化类。降低优化类可以使该查询更快地完成优化,从而更快地返回结果。但是,如果某个查询需要相当长的时间来进行准备,但要执行数千次(而不必再次进行准备),则更改优化类并不能提高查询性能。

4、TOP_DYNAMIC_SQL : 标识执行频率最高、运行时间最长和排序次数最多的动态 SQL 语句。有了此信息,Jessie 在进行 SQL 调整工作时就可以把注意力放在代表某些最大资源使用者的查询上。
select * from SYSIBMADM.TOP_DYNAMIC_SQL order by NUM_EXECUTIONS desc fetch first 5 rows only;
select * from TOP_DYNAMIC_SQL order by AVERAGE_EXECUTION_TIME_S  desc fetch first 5 rows only;
select STMT_SORTS, SORTS_PER_EXECUTION, substr(STMT_TEXT,1,60) as STMT_TEXT from TOP_DYNAMIC_SQL order by STMT_SORTS desc fetch first 5 rows only;
 
 
原文地址:https://www.cnblogs.com/guanghuiqq/p/9026062.html