【DB2】效能管理檢視
1.效能管理部分檢視列表
可以使用命令db2 list tables for schema sysibmadm獲取所有的效能管理檢視
檢視名稱 模式名 描述
APPLICATIONS SYSIBMADM 資料庫中執行的應用
APPL_PERFORMANCE SYSIBMADM 每個應用中rows selected與rows read的比率
BP_HITRATIO SYSIBMADM 緩衝池的命中率
BP_READ_IO SYSIBMADM 緩衝池讀的資訊
BP_WRITE_IO SYSIBMADM 緩衝池寫的資訊
CONTAINER_UTLIZATION SYSIBMADM 表空間中容器的利用率資訊
LOCK_HELD SYSIBMADM 當前獲得的鎖的資訊
LOCKWAITS SYSIBMADM 鎖等待的資訊
LOG_UTILIZATION SYSIBMADM 日誌利用率資訊
LONG_RUNNING_SQL SYSIBMADM 執行時間最長的SQL
SNAPAGENT_MEMORY_POOL SYSIBMADM 代理級別的記憶體使用情況
SNAP_GET_AGENT_MEMORY_POOL(與上一句檢視效果一樣)
SNAPBP SYSIBMADM 緩衝池的基本資訊
MON_BP_UTLLIZATION(與上一句檢視效果一致)
SNAPDNY_SQL SYSIBMADM 資料庫中動態SQL的執行情況
SNAPLOCKWAIT SYSIBMADM 鎖等待資訊
MON_LOCKWAITS(與上一句檢視效果一致)
SNAPTMT SYSIBMADM 應用中SQL語句的執行情況
SNAP_GET_STMT (與上一句檢視效果一致)
SNAPTAB SYSIBMADM 表的資訊
SNAPTAB_REORG SYSIBMADM 重組資訊
SNAP_GET_TAB_REORG (與上一句檢視效果一致)
SNAPTBSP SYSIBMADM 表空間資訊
MON_TBSP_UTILIZATION (與上一句檢視效果一致)
TBSP_UTILIZATITION SYSIBMADM 表空間的利用情況
TOP_DYNAMIC_SQL SYSIBMADM 消耗資源最多的SQL語句資訊
MON_CURRENT_SQL (與上一句檢視效果一致)
MON_PKG_CACHE_SUMMARY SYSIBMADM PACKAGE命中率資訊
MON_CURRENT_UOW SYSIBMADM 當前UOW事務資訊
MON_WORKLOAD_SUMMARY SYSIBMADM WORKLOAD資訊彙總
MON_CONNECTION_SUMMARY SYSIBMADM 資料庫聯絡資訊
MON_DB_SUMMARY SYSIBMADM 資料庫資訊
2.監控緩衝池命中率
緩衝池的命中率很低,那就代表很多資料都要從磁碟直接讀取,那可想而知一個數據庫的效能是多的差
專有名詞說明:邏輯讀與物理讀
- 物理讀:把資料從磁碟讀取到Buffer Cache中
- 邏輯讀:從Buffer Cache中讀取資料塊
2.1 我們使用以下命令來監控緩衝的命中率
SELECT
substr(bp_name,1,30) as bp_name,
data_hit_ratio_percent,
index_hit_ratio_percent,
total_hit_ratio_percent
FROM SYSIBMADM.BP_HITRATIO where bp_name not like 'IBMSYSTEM%'
2.2 檢視當前資料庫的同步和非同步讀寫情況
select
substr(bp_name,1,20) as bp_name,
int((1-(decimal(pool_data_p_reads)/nullif(pool_data_l_reads,0)))*100) as data_hit_ratio,
int((1-(decimal(pool_index_p_reads)/nullif(pool_index_l_reads,0)))*100) as bp_hit_ratio,
int((1-(decimal(pool_async_data_reads+pool_async_index_reads)/nullif((pool_async_data_reads+pool_async_index_reads+direct_reads),0)))*100) as Asnyc_read_pct,
int((1-(decimal(direct_writes)/nullif(direct_reads,0)))*100) as Direct_RW
from table(snapshot_bp('qindb',-1)) as snapshot_bp where bp_name not like 'IBMSYSTEM%'
AS PK_CACHE_HIT,PKG_CACHE_NUM_OVERFLOWS,PKG_CACHE_SIZE_TOP
FROM SYSIBMADM.SNAPDB 4.監控執行成本最高的SQL SELECT agent_id,rows_selected,rows_read FROM SYSIBMADM.SNAPAPPL ORDER BY rows_read desc fetch first 10 rows only 5.監控執行時間最長的SQL語句
SELECT
substr(appl_name,1,15) as Appl_name,
elapsed_time_min as Elapsed_Mim,
appl_status as status,
substr(authid,1,10) as auth_id,
substr(inbound_comm_address,1,15) as IpAddress,
substr(stmt_text,1,30) as SqlStatement
FROM SYSIBMADM.long_running_sql order by 2 desc
select
num_executions,
prep_time_ms,
prep_time_percent,
substr(stmt_text,1,40) as sql_text
from sysibmadm.query_prep_cost where average_execution_time_s > 0
order by prep_time_percent desc;
num_exections:SQL語句平均執行時間
prep_time_ms:最長的SQL編譯時間
prep_time_percent:準備查詢時耗用時間在查詢執行時間所佔的百分比。
sql_text:sql語句
7.監控執行次數最多的SQL語句
select
num_executions as NumExec,
average_execution_time_s as AvgTime,
stmt_sorts as NumSorts,
sorts_per_execution as SortPerStmt,
substr(stmt_text,1,35) as sql_text
from sysibmadm.top_dynamic_sql
where num_executions > 0 order by 1 desc fetch first 5 rows only
8.監控排序次數最多的SQL語句
select
stmt_sorts,
sorts_per_execution,
substr(stmt_text,1,60) as sql_text
from sysibmadm.top_dynamic_sql order by stmt_sorts desc fetch first 5 rows only