DB2 V9新特性:可以檢視top sql了,類似oracle

rheet1978發表於2007-07-04
以下是DB2資訊中心的介紹,希望對大家有所幫助,和oracle的top sql對應的是sysibmadm.top_dynamic_sql,以下的檢視所在的模式都是sysibmadm

示例:使用快照管理檢視來標識高成本應用程式
ShopMart 資料庫上最近的工作負載增長已開始影響到整體資料庫效能。Jessie 是 ShopMart 的 DBA,她嘗試使用下列管理檢視來標識日常工作負載中較大的資源使用者:

APPLICATION_PERFORMANCE
此檢視幫助 Jessie 標識可能正在執行大型表掃描操作的應用程式:

connect to shopmart;
select AGENT_ID, ROWS_SELECTED, ROWS_READ from APPLICATION_PERFORMANCE;
ROWS_SELECTED 值顯示返回給應用程式的行數,ROWS_READ 值顯示在基本表中訪問的行數。如果選擇率很低,則表示該應用程式可能正在執行表掃描操作,通過建立索引可以避免應用程式執行該操作。Jessie 使用此檢視來標識可能有問題的查詢,然後,她可以進行進一步調查,即檢視 SQL 以確定是否能夠減少查詢在執行時讀取的行數。

LONG_RUNNING_SQL
Jessie 使用 LONG_RUNNING_SQL 管理檢視來標識當前正在執行的執行時間最長的查詢:

connect to shopmart;
select ELAPSED_TIME_MIN, APPL_STATUS, AGENT_ID from long_running_sql
order by ELAPSED_TIME_MIN desc fetch first 5 rows only;
通過使用此檢視,她可以確定這些查詢已執行的時間長度以及這些查詢的狀態。如果某個查詢已執行了很長時間並且正在等待鎖,她就可以使用對特定代理程式標識執行查詢的 LOCKWAITS 或 LOCK_HELD 管理檢視來進行進一步調查。LONG_RUNNING_SQL 檢視還會指出正在執行的語句並允許她標識可能有問題的 SQL。

QUERY_PREP_COST
Jessie 使用 QUERY_PREP_COST 來對已確定有問題的查詢進行故障診斷。此檢視可以指出查詢的執行頻率以及這些查詢中每個查詢的平均執行時間:

connect to shopmart;
select NUM_EXECUTIONS, AVERAGE_EXECUTION_TIME_S, PREP_TIME_PERCENT from
QUERY_PREP_COST order by NUM_EXECUTIONS desc;
PREP_TIME_PERCENT 值向 Jessie 指出準備查詢時耗用的時間在查詢執行時間中所佔的百分比。如果編譯和優化查詢時耗用的時間幾乎與查詢的執行時間一樣長,那麼,Jessie 可以建議該查詢的所有者更改用於該查詢的優化類。降低優化類可以使該查詢更快地完成優化,從而更快地返回結果。但是,如果某個查詢需要相當長的時間來進行準備,但要執行數千次(而不必再次進行準備),則更改優化類並不能提高查詢效能。

TOP_DYNAMIC_SQL
Jessie 使用 TOP_DYNAMIC_SQL 檢視來標識執行頻率最高、執行時間最長和排序次數最多的動態 SQL 語句。有了此資訊,Jessie 在進行 SQL 調整工作時就可以把注意力放在代表某些最大資源使用者的查詢上。

為了標識執行頻率最高的動態 SQL 語句,Jessie 發出以下語句:

connect to shopmart;
select * from TOP_DYNAMIC_SQL order by NUM_EXECUTIONS
desc fetch first 5 rows only;
此語句返回執行頻率最高的 5 個動態 SQL 語句的所有執行時間、排序執行次數和語句文字詳細資訊。

為了標識執行時間最長的動態 SQL 語句,Jessie 檢查 AVERAGE_EXECUTION_TIME_S 值最大的 5 個查詢:

connect to shopmart;
select * from TOP_DYNAMIC_SQL order by AVERAGE_EXECUTION_TIME_S
desc fetch first 5 rows only;
為了檢視排序次數最多的動態 SQL 語句的詳細資訊,Jessie 發出以下語句:

connect to shopmart;
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;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9524210/viewspace-376283/,如需轉載,請註明出處,否則將追究法律責任。

相關文章