1. 程式人生 > >【DB2】效能管理檢視

【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%'

3.監控Package Cache大小 我們可以使用SQL語句來監視應用程式包的大小,其中PKG_CACHE_LOOKUPS表示執行在程式包中直接從Package Cache中查詢的次數,PKG_CACHE_INSERTS表示由於應用程式包快取中沒有存在SQL語句的執行計劃而需要重新插入的次數。 SELECT DECIMAL(1-(PKG_CACHE_INSERTS*1.0/PKG_CACHE_LOOKUPS),3,2)
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   image     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

  6.監控SQL準備和預編譯時間最長的SQL

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