DB2監控之SNAPSHOT MONITOR(快照監視器)


1 快照監視器

DB2 SNAPSHOT MONITOR收集的數據存放在內存中,通過DBM級參數MON_HEAP_SZ設置存儲的空間大小。

 

DB2監視器可監控的內容:

  • Buffer pool:讀和寫的次數,所用時間。
  • Lock:保持鎖定數目、死鎖數目。
  • Sort:所有堆的數目、溢出、排序性能。
  • Statement:SQL語句的開始時間、停止時間、完成時間。
  • Table:測量活動(讀行、寫行)
  • Timestamp:記錄時間戳。
  • Unit of work:工作單元的開始時間、結束時間、完成時間。

 

監視器要素:

  • 計數器:用來保存活動或者事件發生次數的累計(例如,對於一個數據庫的已經執行的SQL語句的總次數)。計數器數值的增長貫穿監視器的生命周期:而在許多情況下,它有可能會被重置。
  • 計量值:表明一個項目的當前值(例如,當前連接到數據庫的應用程序的數量)。與計數器值不同的是,Gauges(計量)的值可以變高或者變低;它們在任一被測量點的實時值通常取決於數據庫活動的級別。
  • 高水位值:表明一個指標在監視開始以后所能達到的最大值或最小值(例如,util_heap_sz使用的最大值)。
  • 信息要素:提供所有監視活動執行的細節信息(例如緩沖池名稱、數據庫名稱和別名、詳細路徑等等)。
  • 時間戳:表明一個活動或者事件發生的日期和時間(例如第一次連接數據庫建立的日期和時間)。時間戳被看成是從1970年1月1日開始消逝的秒和微妙的數量的值。
  • 時間要素:記錄時間被花費於執行一個活動或事件的成本(例如:進行排序操作的時間花費)。時間要素的值會以從活動或事件開始所流逝的秒和微妙的數量形式來表現。一些時間要素可以被重置 。

 

查看全局監視器開關是否開啟

[db2inst1]# db2 get dbm cfg | grep DFT_MON
   Buffer pool                         (DFT_MON_BUFPOOL) = ON
   Lock                                   (DFT_MON_LOCK) = ON
   Sort                                   (DFT_MON_SORT) = ON
   Statement                              (DFT_MON_STMT) = ON
   Table                                 (DFT_MON_TABLE) = ON
   Timestamp                         (DFT_MON_TIMESTAMP) = ON
   Unit of work                            (DFT_MON_UOW) = ON

 

查看應用級監視器開關是否開啟

[db2inst1]# db2 get monitor switches 

            Monitor Recording Switches

Switch list for member 0
Buffer Pool Activity Information  (BUFFERPOOL) = ON  01/20/2022 20:55:09.399500
Lock Information                        (LOCK) = ON  01/20/2022 20:55:09.399500
Sorting Information                     (SORT) = ON  01/20/2022 20:55:09.399500
SQL Statement Information          (STATEMENT) = ON  01/20/2022 20:55:09.399500
Table Activity Information             (TABLE) = ON  01/20/2022 20:55:09.399500
Take Timestamp Information         (TIMESTAMP) = ON  01/20/2022 20:55:09.399500
Unit of Work Information                 (UOW) = ON  01/20/2022 20:55:09.399500

 

開啟LOCK監視器

[db2inst1]# db2 update dbm cfg using DFT_MON_LOCK on    #需要重啟實例生效
或者
[db2inst1]# db2 update dbm cfg using LOCK on

 

重置實例下所有計數器

[db2inst1]# db2 reset monitor all

 

重置某個數據庫的所有計數器

[db2inst1]# db2 reset monitor for [database | db][database alias]

2 使用get snapshot監控 

 查看幫助命令

db2 => ? get snapshot
GET SNAPSHOT FOR {DATABASE MANAGER | ALL [DCS] DATABASES |
ALL [DCS] APPLICATIONS | ALL BUFFERPOOLS | [DCS] APPLICATION
{APPLID appl-id | AGENTID appl-handle} | FCM FOR ALL DBPARTITIONNUMS |
LOCKS FOR APPLICATION {APPLID appl-id | AGENTID appl-handle} |
{ALL | [DCS] DATABASE | [DCS] APPLICATIONS | TABLES |
TABLESPACES | LOCKS | BUFFERPOOLS | DYNAMIC SQL [write to file]}
ON database-alias} [AT MEMBER member-number | GLOBAL]

 

監視器級別 命令 說明

連接列表

list applications [show detail]

當前連接至數據庫的所有應用程序的標識信息,該數據庫由在其上獲取快照的分區上的 DB2? 實例管理。

連接列表

list applications for database dbname [show detail]

當前連接至指定數據庫的每個應用程序的標識信息。

連接列表

list dcs applications

當前連接至數據庫的所有 DCS 應用程序的標識信息,該數據庫由在其上獲取快照的分區上的 DB2 實例管理。

數據庫管理器

get snapshot for dbm

數據庫管理器級別信息,包括實例級別監視開關設置。

數據庫管理器

get dbm monitor switches

實例級別監視開關設置。

數據庫

get snapshot for database on dbname

數據庫的數據庫級別信息和計數器。僅當至少有一個應用程序已連接到數據庫時,才會返回此信息。

數據庫

get snapshot for all databases

在分區上處於活動狀態的每個數據庫的數據庫級別信息和計數器。僅當至少有一個應用程序已連接到數據庫時,才會返回此信息。

數據庫

list active databases

與每個活動數據庫的連接的數目。包括使用 ACTIVATE DATABASE 命令啟動但沒有連接的數據庫。

數據庫

get snapshot for dcs database on dbname

特定 DCS 數據庫的數據庫級別信息和計數器。僅當至少有一個應用程序已連接到數據庫時,才會返回此信息。

數據庫

get snapshot for remote database on dbname

特定聯合系統數據庫的數據庫級別信息和計數器。僅當至少有一個應用程序已連接到數據庫時,才會返回此信息。

數據庫

get snapshot for all remote databases

分區上的每個活動聯合系統數據庫的數據庫級別信息和計數器。僅當至少有一個應用程序已連接到數據庫時,才會返回此信息。

應用程序

get snapshot for application applid appl-id

應用程序級別信息,包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

應用程序

get snapshot for application agentid appl-handle

應用程序級別信息,包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

應用程序

get snapshot for applications on dbname

與分區中數據庫相連接的每個應用程序的應用程序級別信息。此信息包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

應用程序

get snapshot for all applications

在分區中處於活動狀態的每個應用程序的應用程序級別信息。此信息包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

應用程序

get snapshot for dcs application applid appl-id

應用程序級別信息,包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

應用程序

get snapshot for all dcs applications

在分區中處於活動狀態的每個 DCS 應用程序的應用程序級別信息。此信息包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

應用程序

get snapshot for dcs application agentid appl-handle

應用程序級別信息,包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

應用程序

get snapshot for dcs applications on dbname

與分區中數據庫相連接的每個 DCS 應用程序的應用程序級別信息。此信息包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

應用程序

get snapshot for remote applications on dbname

應用程序級別信息,包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

應用程序

get snapshot for all remote applications

在分區中處於活動狀態的每個聯合系統應用程序的應用程序級別信息。此信息包括累積計數器、狀態信息和最近執行的 SQL 語句(如果設置了語句開關)。

get snapshot for tables on dbname

每個與數據庫相連接的應用程序的數據庫級別和應用程序級別表活動信息。與數據庫相連接的應用程序已訪問的每個表在表級別的活動信息。需要表開關。

get snapshot for locks for application applid appl-id

應用程序掛起的鎖定列表。鎖定等待信息需要鎖定開關。

get snapshot for locks for application agentid appl-handle

應用程序掛起的鎖定列表。鎖定等待信息需要鎖定開關。

get snapshot for locks on dbname

每個與數據庫相連接的應用程序的數據庫級別和應用程序級別鎖定信息。需要鎖定開關。

表空間

get snapshot for tablespaces on dbname

有關數據庫的表空間活動的信息。需要緩沖池開關。還包括有關容器、停頓者和范圍的信息。此信息不受開關控制。

緩沖池

get snapshot for all bufferpools

緩沖池活動計數器。需要緩沖池開關。

緩沖池

get snapshot for bufferpools on dbname

指定數據庫的緩沖池活動計數器。需要緩沖池開關。

動態 SQL

get snapshot for dynamic sql on dbname

數據庫的 SQL 語句高速緩存中的時間點語句信息。該信息也可能來自遠程數據源。

3 使用表函數監控

表函數名稱 說明
SNAPSHOT_DBM 數據庫管理器信息
SNAPSHOT_DATABASE 數據庫信息,只有當至少有一個應用程序連接至數據庫時,才會返回信息
SNAPSHOT_APPL 連接至分區上數據庫的應用程序上有關鎖等待的應用程序信息,包括累積計數器、狀態信息和最近執行的SQL語句(如果設置了語句監視器開關)
SNAPSHOT_APPL_INFO 每個連接至分區上數據庫的應用程序的常規應用程序標識信息
SNAPSHOT_LOCKWAIT 有鎖等待連接至分區上數據庫的應用程序的應用程序信息
SNAPSHOT_STATEMENT 有關連接至分區上數據庫的應用程序的語句的應用程序信息,包括最近執行的SQL語句(如果設置了語句監視器開關)
SNAPSHOT_TABLE 連接至數據庫的應用程序所訪問的每個表的表活動信息,需開啟表監視器開關
SNAPSHOT_LOCK 數據庫級別上的鎖信息,以及每個連接至數據庫的應用程序在應用程序級別上的鎖信息,需開啟鎖監視器開關
SNAPSHOT_TBS 數據庫級別上的表空間活動信息,每個連接至數據庫的應用程序在應用程序級別上的表空間活動信息,以及連接至數據庫的應用程序已訪問過的每個表空間Gina在表空間級別上的表空間活動信息。需開啟緩沖池監視器開關
SNAPSHOT_BP 指定數據庫的緩沖池活動計數器,需開啟緩沖池監視器開關
SNAPSHOT_DYN_SQL 監控數據庫的SQL語句高速緩存的某個時間點語句信息

 

使用方法:查看DBNAME數據庫的表監視器信息

db2 "select * from table(SNAPSHOT_TABLE('DBNAME', -1)) as T"

 

快照表函數有兩個輸入參數:

  • VARCHAR(255),用於數據庫名稱。如果輸入NULL,就使用當前已連接的數據庫名稱。這個參數不能應用於只返回數據庫管理器信息的快照表函數(例如SNAPSHOT_DBM)。這樣的快照表函數只有一個分區號參數。對於以下的快照表函數列表,如果輸入NULL來表示使用當前已連接的數據庫,那么將得到實例中所有數據庫的快照信息:SNAPSHOT_DATABASE、SNAPSHOT_APPL、SNAPSHOT_APPL_INFO、SNAPSHOT_LOCKWAIT、SNAPSHOT_STATEMENT和SNAPSHOT_BP。
  • SMALLINT,用於分區號。對於分區號參數,輸入整數(0和999之間的值)以對應需要監控的分區號。要捕獲當前已連接分區的快照,請輸入值-1或NULL。要捕獲全局快照,請輸入值-2。

4 性能管理視圖

監控視圖在SYSIBMADM模式下,以下展示最常用的視圖:

視圖名稱 說明
SYSIBMADM.APPLICATIONS 數據庫中運行的應用
SYSIBMADM.APPL_PERFORMANCE 每個應用中rows selected與rows read的比率
SYSIBMADM.BP_HITRATIO 緩沖池的命中率
SYSIBMADM.BP_READ_IO 緩沖池讀的信息
SYSIBMADM.BP_WRITE_IO 緩沖池寫的信息
SYSIBMADM.CONTAINER_UTILIZATION 表空間中容器的利用率信息
SYSIBMADM.LOCKS_HELD 當前獲得的鎖的信息
SYSIBMADM.LOCKWAITS 鎖等待的信息
SYSIBMADM.LOG_UTILIZATION 日志利用率的信息
SYSIBMADM.LONG_RUNNING_SQL 執行時間最長的SQL語句信息

SYSIBMADM.SNAPAGENT_MEMORY_POOL

SYSIBMADM.SNAP_GET_AGENT_MEMORY_POOL

代理級別的內存使用情況
SYSIBMADM.SNAPBP
SYSIBMADM.SNAP_GET_BP_V95
緩沖池的基本信息
SYSIBMADM.SNAPDYN_SQL
SYSIBMADM.SNAP_GET_DYN_SQL_V95
數據庫中動態SQL的執行
SYSIBMADM.SNAPLOCKWAIT
SYSIBMADM.SNAP_GET_LOCKWAIT
鎖等待的信息
SYSIBMADM.SNAPSTMT
SYSIBMADM.SNAP_GET_STMT
應用中SQL語句的執行情況
SYSIBMADM.SNAPTAB
SYSIBMADM.SNAP_GET_TAB_V91
表的信息
SYSIBMADM.SNAPTAB_REORG
SYSIBMADM.SNAP_GET_TAB_REORG
重組信息
SYSIBMADM.SNAPTBSP
SYSIBMADM.SNAP_GET_TBSP_V91
表空間信息
SYSIBMADM.TBSP_UTILIZATION 表空間使用情況
SYSIBMADM.TOP_DYNAMIC_SQL 消耗資源最多的SQL語句信息

 

使用方法:查看REORG的表信息

db2 "select * from SYSIBMADM.SNAPTAB_REORG"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM