狠狠撸

狠狠撸Share a Scribd company logo
CLUB DB2 #137




CLUB DB2 第137回

DB2モニタリング入門


2012/2/24
日本アイ?ビー?エム
下佐粉 昭 (しもさこ あきら)                                                         rev. 1.1

                この資料は下記URLでダウンロード可能です
                http://ibm.com/developerworks/wikis/display/clubdb2/materials
自己紹介

下佐粉 昭 ( しもさこ あきら )
    和歌山県生まれ
    2001年 IBMに中途入社
    以来、DB2関連の仕事多し
    現在はビジネスパートナー様向け技術支援
■書籍
    「即戦力のDB2管理術」
    「XML-DB開発 実技コース」(共著)
    「DB2 逆引きリファレンス」(共著)


■オンライン
    Twitter - @simosako
    – http://twitter.com/simosako
                                    内容は全てWEBで公開しています!
    Unofficial DB2 Blog
    – http://db2.jugem.cc/             http://db2watch.com/




2
今日の目的
    モニタリングって難しそう?
     – モニタリングはそれほど難しくありません
     – 大切なのは定期的にモニタリングし、データを保存しておくこと
     – データを持っていないと、トラブルが起こった時に大変


【今日の目的】モニタリングが必要な理由と、その簡単な方法を具体的に知る!

    【宣伝】基礎から詳しく学習したい方は、ぜひ自著をご参照ください!




              即戦力のDB2管理術~仕組みからわかる効率的管理のノウハウ
              2011年4月8日発売 (技術評論社)
              下佐粉昭 著
              A5判/432ページ
              ISBN 978-4-7741-4597-6
              http://db2.jugem.cc/?eid=2341 (書籍紹介)
3
目次

    モニタリングの考え方


    OSレベルでのモニタリング
     – 基本的なコマンド
     – OSモニタリングの便利ツール (nmon)
     – Windowsの便利ツール:「パフォーマンス」


    DB2のモニタリング
     – スナップショットとメトリックス
     – DB2の必修モニタリングポイント
     – DB2モニタリングの便利ツール (db2top)
     – 簡単な定常監視


    まとめ



4
①モニタリングの考え方
モニタリングは、なんのため?

    モニタリング=データの収集
     –システム内部のデータを収集すること
       ? ディスクIO速度、ネットワークエラー率、メモリ
         使用率 ...


    なんのため?
     –長期的なもの→監視
       ? 長期的にデータを記録:定常監視

    –短期的なもの→パフォーマンス?チューニング
      ? リアルタイムのモニタリング
      ? クエリーを実行しながら「眺める」ことが重要



    モニタリングの方法を知ると、一挙両得!
6
定常监视はなぜ必要?


                      正常な状態のデータは
継続的に記録し続けることで、        パフォーマンスチューニング
システムに起こっている変化が        にも大変有用です
把握出来るようになります。




                 時間



7
「层(レイヤー)」を意识する

     ?チューニングも監視も、層を意識することが大切です
     ?ある層を変更すると、上の層に影響があります
     ?調査は外堀から


                 DB2の内部状態


                  DB2の設定


                  OSの設定


                 ハードウェア構成




8
モニタリングのポイント

?NIC , CPU使用率 , メモリ使用率, プロセスの死活監視 , ディスク使用量 ← OSコマンド
?DB2内部情報(バッファープール、ソート時間 ...),DB2の表スペース ← DB2のコマンド




    DB2サーバー    DB2関連プロセ            ?バッファープールヒット率
               スの死活監視              ?デッドロック数        DB2内部の動
                            DB2
                           DB2     ?ソート時間
    ネットワーク疎                DB2                     作情報
                                   ?トランザクション数
    通、エラー率
                                         :
              NIC




                    CPU               CPUやメモリ
                                      使用率
                    メモリ


ストレージ全体の使用率
                                      OSのログ        エラー情報
                          DB2の表ス
       DB2表スペースの          ペース         DB2の診断ログ     エラー情報
       使用率
9
②翱厂レベルでのモニタリング
翱厂コマンドでのモニタリング(调査)

     CPUの使用状況は?
      – Linux/Unix: ps , vmstat
      – Windows: タスクマネージャ

     メモリ状況は?
      – Linux/Unix: vmstat , free
      – Windows : タスクマネージャ

     ディスクアクセス,ディスク残量は?
      – Linux/Unix: vmstat , iostat , df
      – Windows: パフォーマンスモニター


     ネットワークはどうか?
      – ping (生きているか確認)

     OSのログを読む(障害発生時は最重要!)
      – Linux/Unix : syslog , errpt(AIX) , /var/log/messages など
      – Windows: イベントビューア
11
重要コマンド:惫尘蝉迟补迟                                  vmstat [delay [count]]
 vmstatは多くのLinux、Unixで利用可能なコマンドで、多彩な内部データを出力できる
 vmstatの出力でチェックすべきポイント
  – rは待ちプロセス数 :待ちが多い場合は、そもそもCPUパワー不足を疑う
  – bはウェイトしている(ブロックされた)プロセス数(I/Oウェイト)
      ? I/Oウェイトを減らすには、DB2側の改善が必要
  – swap in(si)とswap out (so)はゼロ維持が原則
  – block-in (bi) ディスクからの読み取り数
      ? 遅いクエリーを実行したとき、biが増えない??IOウェイト以外の要因
      ? 遅いクエリー(SELECT)を実行したとき、boが増える??ヒープオーバーフロー
  – cpuのusはユーザプロセスの使用率、syはシステムの使用率
      ? 待ち(r)が少なく、ユーザプロセス(us)が多いのがよくチューニングされた状況
      ? 巨大なデータアクセスがある場合、システム(sy)が増えるのは自然


db2inst1@ubuntuserver:~$ vmstat 1 100
procs -----------memory---------- ---swap--   -----io----   -system-- ----cpu----
 r b swpd free        buff cache si so           bi    bo     in cs us sy id wa
 1 0       0 17548 35640 298480       0   0    1664     0   7377 15332 35 19 45 0
 2 0       0 17020 35648 298472       0   0    1408    16   4165 23101 35 22 44 0
 2 0       0 17176 35648 298480       0   0    1916     0   8029 15943 38 16 46 3
12
でもちょっと面倒...
 色々なデータを取るには複数のコマンドを並行実行して、 tail -f で複数のログを見て...
 ? 結構面倒ですね


 そこで最終兵器 nmon
     – もともとはIBM社内の有志開発者が作ったAIX用の便利コマンド。後にLinuxにも移植
     – あまりに便利なので、AIXではOS標準添付に


 どこがいいの?
  – 軽量(負荷を増やさない)
  – 簡単(1つキーを押すだけ)
  – GUI無しの環境でも使える
  – 見たい情報がリアルタイムグラフ化
  – 結果をファイルに記録できる



     ※nmonの取得方法については参考資
     料②にURLを記載しています




13
nmonを使う①
リアルタイムで眺める


> nmon で起動後
ショートカットキーで見たい
データを表示

 c:CPU
 m:メモリ
 j:ファイルシステム
 d:ディスクI/O
 t:プロセス


.(ドット)で動きがあるプロセス
とディスクのみ表示にする


-/+ で更新頻度を変更可能
14
nmonを使う② 記録と調査?報告用
 nmonは-Fを指定すると、CSV形式のファイル記録モードに
  -Fでファイル名を指定、-sでデータの取得間隔を指定、 -c で取得回数
  – 例) >nmon -F mylog.nmon -s 1 -c 30 (※コマンドが非同期で実行されるので注意)
     ? 1秒間隔で30回データを取得し、mylog.nmonに記録
 このcsvファイルを、nmon Analyzer (EXCELマクロ)から読み込むことで ...
  – 自動的に色々な視点からグラフ化してくれる




CPU使用率の時間経過
ディスク毎のスループット
ディスクIO量の時間経過
       ※nmon Analuzerの取得方法について
       は参考資料②にURLを記載しています
15
奥颈苍诲辞飞蝉环境ではパフォーマンスモニターが便利
     – OS標準機能で、OSの情報とDB2内部情報を一括して取得可能
       ? 低負荷?リモートから取得可能
     – グラフを右クリック?カウンタの追加
       ? DB2 Databases(DBレベルの情報)
                                                  DBが活性化
         ロックウェイト、ソートオーバーフロー 等多数               (Activate)されていな
      ? DB2 Applications (アプリケーションレベルの情報)      いと表示されません
      ? DB2 Database Manager(インスタンスレベルの情報)
                                                インスタンスが開始
                                               (db2start)していない
                                                 と表示されません




                                             ローカル、もしくはリモート
                                             のコンピュータからカウン
                                             タデータを収集できます




16
③顿叠2のモニタリング
OSコマンドで得られない情報とは?
 OSコマンドでは取得できない大切な情報は多数存在する
  – メモリ全体の使用量はOSコマンドで分かるが、DB2の各
    種ヒープやバッファーの量が足りているかどうかはDB2
    にしか分からない
  – ディスク全体の使用量はOSコマンドで分かるが、表ス
    ペースの利用率はDB2にしか分からない

 DB2の状態は常に変化している
  – そのため「今」の状況を把握して対応する必要がある


 DB2の「今」が分かる情報があると...
  – パフォーマンスチューニング用
     ? クエリー実行中の状態をモニタリング
  – 監視用
     ? 「今」の状態を定期的に記録することで、異常事態が
       判別できるようになる




18
DB2のモニタリング機能
DB2には「モニタ-エレメント」という監視項目があり、それをメトリック(モニター表関
数)か、スナップショット(SNAPSHOTコマンド)で取り出すようになっている


                         MONREPORTモジュール
     モニター表関数?ビュー         (テキスト出力)
     (メトリック)※v9.7以降
                          モニタービュー
                          (MON_*から始まる
            モニター表関数
                          ビュー。モニター表関
            (MON_*で始ま
                          数を組み合わせて作
            る表関数)
                          られている)

モニターエレ
メント(監視項
目)
             スナップショット表     スナップショット管理
             関数            ビュー(スナップショッ
                           ト表関数を組み合わ
                           せて作られている)

スナップショット       GET SNAPSHOTコマンド
               (テキスト出力)
19
モニターエレメント
 モニターエレメントからは豊富なDB2内部情報が得られます
 例) バッファープールへのアクセス数、ソートの回数、表の読み書き数...


                                                                         モニターエレメントの説明




                                                                        対応しているモニター表関数
                                                                        の一覧とグループ
                                                                        (省略しています)

                              :

                                                                         対応しているスナップショッ
                                                                         トモニターの論理グループ


     ※モニターエレメント一覧
20   http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.mon.doc/doc/r0001140.html
メトリック(モニター表関数)とは
 DB2 9.7から追加された新しいモニタリングの仕組み。デフォルトで有効になっています

 データオブジェクトレベルの便利なビューや表関数
  – MON_GET_BUFFERPOOL : バッファープールヒット率など
  – MON_GET_TABLE : 表スキャンの数など
  – MON_GET_INDEX :インデックススキャンの数など


     システム レベル                   パッケージ?キャッシュ?ステートメ          データ?オブジェクト レベル
                                ント レベル                     MON_GET_TABLE
     MON_GET_SERVICE_SUBCLASS
                                MON_GET_PKG_CACHE_STMT     MON_GET_INDEX
     MON_GET_WORKLOAD
                                                           MON_GET_BUFFERPOOL
     MON_GET_CONNECTION         アクティビティー レベル               MON_GET_TABLESPACE
     MON_GET_UNIT_OF_WORK       MON_GET_ACTIVITY_DETAILS   MON_GET_CONTAINER
                                                           MON_GET_EXTENT_MOVEMENT_STATUS




 ユーザのクエリーと、システム内部のクエリーを分けてデータを取得可能




21
モニター表関数の使い方
表関数とは、「表を返す」関数
 – 結果として表を返すので、FROMの後ろに置いて使う
 – 表である事を示すために、TABLE()で囲む必要がある
 – 例) SELECT * FROM TABLE(MON_GET_TABLE('DB2INST1','',-2)) AS T
    ? でも、すごく列が多いので、列を指定して絞らないと、超横長の結果が...




そこで... db2perf_browseを利用
 – 2011年5月の"DB2 chat with the lab"で説明された便利ツール
     ? 列と行を入れ替えて表示するストアドプロシージャ

例)
> call db2perf_browse('MON_GET_BUFFERPOOL(''IBMDEFAULTBP'',null)')
> call db2perf_browse('MON_GET_TABLE(''DB2INST1'',null,-2)')




22
DB2の必修モニタリングポイント① バッファープールのヒット率
 バッファープール(BP)は、データのキャッシュ領域                    エージェント
  – データベースで最も遅いパーツは「ディスク」
  – キャッシュはあるがサイズに限度がある
  →BP ヒット率向上はパフォーマンス向上の鍵

                            IOサー                                       ページ?
 BPヒット率=バッファープールを読み書きした数/全体 バー                                         クリーナー
 のIOリクエストの数 * 100 [%]
 エレメントで計算するには以下の2つを使用して..
  – POOL_DATA_L_READS : 論理読み取り数                         表スペース
  – POOL_DATA_P_READS : 物理読み取り数
                                                      コンテナ      コンテナ



SELECT 100.0*(POOL_DATA_L_READS - POOL_DATA_P_READS) / POOL_DATA_L_READS FROM
TABLE (MON_GET_BUFFERPOOL('IBMDEFAULTBP',null)) AS T

     もしくは、専用のビューを使用(※こちらはスナップショットデータなので注意)
SELECT BP_NAME,DATA_HIT_RATIO_PERCENT,INDEX_HIT_RATIO_PERCENT FROM
  SYSIBMADM.BP_HITRATIO
23
DB2の必修モニタリングポイント② トランザクション数

 トランザクション数(定期時間内のトランザクションの数)を把握しておく事は重要です
  – Transactions Per Minute (TPM)
  – (狭義の)トランザクション≒コミット発行数+ロールバック発行数


 エレメントで計算するには、以下の2つを組み合わせて...
  – TOTAL_APP_COMMITS: 総COMMIT数
  – TOTAL_APP_ROLLBACKS:総ROLLBACK数

     SELECT CURRENT TIMESTAMP,TOTAL_APP_COMMITS+TOTAL_APP_ROLLBACKS
     FROM SYSIBMADM.MON_DB_SUMMARY
                                         MON_DB_SUMMARYは良く使う
                                         情報がまとめられた便利なビュー

 上記にはDB2システムが内部で発行したSQLの分も含まれる
  – ユーザSQLのみをカウントしたい場合は、以下のようにMON_GET_SERVICE_SUBCLASS
    でスーパークラスに'SYSDEFAULTUSERCLASS'を指定してデータを取り出す

     SELECT CURRENT TIMESTAMP,TOTAL_APP_COMMITS FROM
     TABLE(MON_GET_SERVICE_SUBCLASS('SYSDEFAULTUSERCLASS','',-2)) AS T


24
DB2の必修モニタリングポイント③ 遅いクエリーの発見
 パフォーマンスチューニングでは、遅いクエリーに対してチューニングする事が重要
  – 一番良いのは、クライアントアプリケーション側でSQLを管理していること
  – 無いなら、パッケージキャッシュから(実行されたSQLを一次的にキャッシュしておく領域)
 エレメントで計算するには、
  – STMT_EXEC_TIME:クエリーを実行した時間
  – EXECUTABLEID:SQL毎に付けられるID(ハッシュ値)
  をベースに検索
     ? 以下の例は、同じクエリーの実行時間をSUMで足して、遅いもの順でトップ10を出力した例

        SELECT
          SUM(STMT_EXEC_TIME) AS TOTAL_EXEC_TIME,
          SUM(TOTAL_ACT_WAIT_TIME) AS TOTAL_WAIT_TIME,
          EXECUTABLE_ID
        FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL, NULL, NULL, -2)) AS T
        GROUP BY EXECUTABLE_ID
        ORDER BY TOTAL_EXEC_TIME DESC
        FETCH FIRST 10 ROWS ONLY

     ? EXECUTABLEIDではSQLが分からないので、以下のようにして情報を出力
        EXECUTABLEIDを第二引数に指定。(xを付けるのをお忘れ無く)
         call
         db2perf_browse('MON_GET_PKG_CACHE_STMT(NULL,x''010000000000000084000
25       0000000000000000000020020120223161303238342'',NULL,-2)');
(参考)前ページの実行例
call
db2perf_browse('MON_GET_PKG_CACHE_STMT(NULL,x''0100000000000000840000000
000000000000000020020120223161303238342'',NULL,-2)')


  結果セット 1
  --------------                                                             TOTAL_SORTS                        0
                                                                             POST_THRESHOLD_SORTS               0
  COL                                VALUE                                   POST_SHRTHRESHOLD_SORTS            0
  --------------------------------   -------------------------------         SORT_OVERFLOWS                     0
  MEMBER                             0                                       WLM_QUEUE_TIME_TOTAL               0
  SECTION_TYPE                       D                                       WLM_QUEUE_ASSIGNMENTS_TOTAL        0
  INSERT_TIMESTAMP                   2012-02-23-16.13.03.238338              DEADLOCKS                          0
(中略)                                                                       (中略)
  TOTAL_ACT_WAIT_TIME                305                                     LOCK_TIMEOUTS                      0
  TOTAL_CPU_TIME                     1085                                    LOG_BUFFER_WAIT_TIME               0
  POOL_READ_TIME                     305                                     NUM_LOG_BUFFER_FULL                0
  POOL_WRITE_TIME                    0                                       LOG_DISK_WAIT_TIME                 0
  DIRECT_READ_TIME                   0                                       LOG_DISK_WAITS_TOTAL               0
  DIRECT_WRITE_TIME                  0                                       LAST_METRICS_UPDATE                2012-02-23-16.43.02.557624
  LOCK_WAIT_TIME                     0                                       NUM_COORD_EXEC                     7
  TOTAL_SECTION_SORT_TIME            0                                       NUM_COORD_EXEC_WITH_METRICS        7
  TOTAL_SECTION_SORT_PROC_TIME       0                                       VALID                              Y
  TOTAL_SECTION_SORTS                0                                       TOTAL_ROUTINE_TIME                 0
  LOCK_ESCALS                        0                                       TOTAL_ROUTINE_INVOCATIONS          0
  LOCK_WAITS                         0                                       ROUTINE_ID                         0
  ROWS_MODIFIED                      0                                       STMT_TYPE_ID                       DML, Select (blockable)
  ROWS_READ                          35                                      QUERY_COST_ESTIMATE                23
  ROWS_RETURNED                      35                                      STMT_PKG_CACHE_ID                  704374636548
  DIRECT_READS                       0                                       COORD_STMT_EXEC_TIME               313
  DIRECT_READ_REQS                   0                                       STMT_EXEC_TIME                     313
  DIRECT_WRITES                      0                                       TOTAL_SECTION_TIME                 313
  DIRECT_WRITE_REQS                  0                                       TOTAL_SECTION_PROC_TIME            8
  POOL_DATA_L_READS                  36                                      TOTAL_ROUTINE_NON_SECT_TIME        0
  POOL_TEMP_DATA_L_READS             0                                       TOTAL_ROUTINE_NON_SECT_PROC_TIME   0
  POOL_XDA_L_READS                   0                                       STMT_TEXT                          SELECT COLNAME, TYPENAME FROM   SYSCAT.COLUMNS WHERE
  POOL_TEMP_XDA_L_READS              0                                     TABNAME='POLICY' AND TABSCHE
  POOL_INDEX_L_READS                 24                                      COMP_ENV_DESC                      <BLOB>
  POOL_TEMP_INDEX_L_READS            0                                       ADDITIONAL_DETAILS                 <BLOB>
  POOL_DATA_P_READS                  2                                       --------------------               ----------------------------------------
  POOL_TEMP_DATA_P_READS             0
  POOL_XDA_P_READS                   0                                       85 レコードが選択されました。
  POOL_TEMP_XDA_P_READS              0
  POOL_INDEX_P_READS                 4                                       リターン状況 = 0
  POOL_TEMP_INDEX_P_READS            0
  POOL_DATA_WRITES                   0
  POOL_XDA_WRITES                    0
  POOL_INDEX_WRITES                  0



26
DB2の必修モニタリングポイント④ メモリ使用量、ディスク使用量

 メモリ
  – 全体をざっくり知るには、db2mtrkコマンド(メモリートラッカー)が便利
     db2inst1@ubuntuserver:~$ db2mtrk -d
     Memory for database: EMPLOYEE
        utilh       pckcacheh   other       catcacheh   bph (1)     bph (S32K)
        64.0K       1.6M        192.0K      512.0K      4.6M        832.0K
        bph (S16K) bph (S8K)    bph (S4K)   shsorth     lockh       dbh
        576.0K      448.0K      384.0K      128.0K      16.9M       18.9M
        apph (64)   apph (45)   apph (14)   apph (13)   apph (12)   apph (11)
        64.0K       192.0K      64.0K       64.0K       64.0K       192.0K
        apph (10)   apph (9)    apph (8)    appshrh
        64.0K       64.0K       64.0K       1.4M



 ディスク
  – エレメントとしては、TBSP_TOTAL_PAGES(確保しているページ数TBSP_USABLE_PAGES
    (空きページ数)を使って計算しても良いが、db2pdコマンドが便利
     > db2pd -db EMPLOYEE -tablespaces




27
(参考)前ページのdb2pd実行例
> db2pd -db EMPLOYEE -tablespaces
Tablespace Configuration:
Address            Id     Type Content   PageSz   ExtentSz    Auto   Prefetch   BufID    BufIDDisk   FSC   NumCntrs   MaxStripe   LastConsecPg   Name
0x00007F2CB1B0BDA0 0      DMS Regular    4096     4           Yes    4          1        1           Off   1          0           3              SYSCATSPACE
0x00007F2CB1B0D520 1      SMS SysTmp     4096     32          Yes    32         1        1           On    1          0           31             TEMPSPACE1
0x00007F2CB1B10C60 2      DMS Large      4096     32          Yes    32         1        1           Off   1          0           31             USERSPACE1
0x00007F2CB1B123E0 3      DMS Large      4096     4           Yes    4          1        1           Off   1          0           3              SYSTOOLSPACE
0x00007F2CB1B13B60 4      SMS UsrTmp     4096     4           Yes    4          1        1           On    1          0           3              SYSTOOLSTMPSPACE

Tablespace Statistics:
Address            Id    TotalPgs   UsablePgs UsedPgs            PndFreePgs FreePgs            HWM            Max HWM     State        MinRecTime NQuiescers
PathsDropped
0x00007F2CB1B0BDA0 0     24576      24572           23296        0               1276          23296          23296       0x00000000   0            0          No
0x00007F2CB1B0D520 1     1          1               1            0               0             0              0           0x00000000   0            0          No
0x00007F2CB1B10C60 2     102400     102368          61696        0               40672         80256          80256       0x00000000   0            0          No
0x00007F2CB1B123E0 3     8192       8188            152          0               8036          152            152         0x00000000   0            0          No
0x00007F2CB1B13B60 4     1          1               1            0               0             0              0           0x00000000   0            0          No

Tablespace Autoresize Statistics:
Address            Id    AS AR InitSize           IncSize        IIP   MaxSize          LastResize                      LRF
0x00007F2CB1B0BDA0 0     Yes Yes 33554432         -1             No    None             None                            No
0x00007F2CB1B0D520 1     Yes No 0                 0              No    0                None                            No
0x00007F2CB1B10C60 2     Yes Yes 314572800        104857600      No    1073741824       None                            No
0x00007F2CB1B123E0 3     Yes Yes 33554432         -1             No    None             None                            No
0x00007F2CB1B13B60 4     Yes No 0                 0              No    0                None                            No

Containers:
Address            TspId ContainNum Type    TotalPgs   UseablePgs           PathID         StripeSet Container
0x00007F2CB1B0D2E0 0     0          File    24576      24572                0              0
/home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000000/C0000000.CAT
0x00007F2CB1B0EA00 1     0          Path    1          1                    0              0
/home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000001/C0000000.TMP
0x00007F2CB1B121A0 2     0          File    102400     102368               0              0
/home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000002/C0000000.LRG
0x00007F2CB1B13920 3     0          File    8192       8188                 0              0
/home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000003/C0000000.LRG
0x00007F2CB1B15040 4     0          Path    1          1                    0              0
/home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000004/C0000000.UTM


  28
でもちょっとめんどう... (本日2回目)
 色々なデータを取るにはdb2perf_browseを入れて、複数のSQLを書いておいて、定期実行して...
 ? 結構面倒ですね


 そこで最終兵器 db2top
     – もともとは一部のOS用のDB2にだけに実装されていたコマンド
     – あまりに便利なのでDB2 for Linux/Unixで標準コマンドに


 どこがいいの?
  – 軽量(負荷を増やさない)
  – 簡単(1つキーを押すだけ)
  – GUI無しの環境でも使える
  – 見たい情報がリアルタイムグラフ化
  – 結果をファイルに記録できる



     ※db2topの取得方法については参考
     資料②にURLを記載しています




29
B:ボトルネック表示
db2topを使う① リアルタイムで眺める              d:DB全体の状況
                                   t:表スペース
> db2top -d DB名 で起動後、ショートカットキーで画   b:バッファープール
面を切り替え。Iでモニタリング間隔を変更可能。iで動         m:ヒープ全般
作中のオブジェクトのみを表示                     D:(動的)SQL表示




     ?ボトルネック表示(B)
     ?DB全体(d)
     ?表スペース(t)


30
诲产2迟辞辫を使う②応用编                              メタキャラクタ                   意味
                                               ^        行の先頭にマッチする
 見たい情報を絞り込む                                    $        行の最後にマッチする
  – /(スラッシュ)を押すと、正規表現で絞り込みが                 | (パイプ)     左右どちらかの正規表現にマッチする
    可能                                      . (ピリオド)    任意の文字一文字にマッチする
      ? 例) /EMP[0-9] → EMP0,EMP1... EMP9       +        直前の文字の1文字以上の連続
        にマッチ                               * (アスタリスク)   直前の文字の0文字以上の連続
                                               ?        直前の文字の0文字または1文字の連続
     – z で指定列での降順ソート(Zで昇順)                     ?        エスケープ文字
     – c で表示する列を指定可能                           ()       文字列を一塊で扱う
                                               []       リスト内のいずれかの文字にマッチする


 SQLの詳細を得るには
  – 各SQLにはハッシュ化された値が付いているので、Lを押した後に入力すると詳細が分かる
     ? eでExplain(実行計画)も確認可能




31
db2topを使う③ 記録と調査?報告用

 ファイルに詳細を記録する
  – Sを押すと、SNAPSHOTコマンド実行される
     ? viで表示されるので :w ファイル名 で保存

     – db2top起動時に、 -bを指定してバックグラウンドモードで起動
         ? データベース(-d)、取得間隔[秒](-i)、取得期間[分](-m)あるいは取得回数(-s)を指定
         ? 例) > db2top -d EMPLOYEE -b d -i 1 -m 10 > db2top.csv
                   (-bの後のオプションの意味)
                   -b : background mode
                   option: d=database, l=sessions, t=tablespaces, b=bufferpools,
                   T=tables, D=Dynamic SQL, s=Statements, U=Locks, u=Utilities,
                   F=Federation, m=Memory




32
※惭翱狈搁贰笔翱搁罢モジュール
                                                    http://publib.boulder.ibm.com/infocenter/d
簡単な定常監視                                             b2luw/v9r7/topic/com.ibm.db2.luw.sql.rtn.d
                                                    oc/doc/r0056368.html
 MONREPORTモジュール (DB2 9.7 FP1新機能)
     – 人が読みやすいレポートを生成する
     例)MONREPORT.DBSUMMARYプロシージャ
        > db2 "CALL MONREPORT.DBSUMMARY(300)" >
          today.log
        ? 引数で指定された秒数の間データをモニタし、レ
          ポートを作成する



 もしくは、MON_DB_SUMMARYビュー
     > call
       db2perf_browse('SYSIBMADM.MON_DB_SUMMARY')




33
まとめ
 モニタリングは、監視?パフォーマンスチューニングの基礎
  – 監視とパフォーマンスチューニングは地続きです

 層(レイヤー)を意識して確認
  – 外堀(下層)から
  – OSレベル(vmstat,nmon など)
  – DB2レベル(メトリック、db2topなど)

 次のステップ
  – 以下に技術情報が集められています
       ? http://www.ibm.com/developerworks/jp/data/products/db2/db2_97.html
     – お勧め資料
       ? DB2 V9.7 運用管理ガイド: データベース?モニタリング
          http://www.ibm.com/developerworks/jp/data/products/db2/operation-management-
             guide/v97_database-monitor.html
       ? DB2マニュアル:モニタリング(PDF)
          http://public.dhe.ibm.com/ps/products/db2/info/vr97/pdf/ja_JP/DB2Monitoring-db2f0j972.pdf
       ? DB2マニュアル:問題判別とパフォーマンスチューニング(PDF)
          http://public.dhe.ibm.com/ps/products/db2/info/vr97/pdf/ja_JP/DB2PerfTuneTroubleshoot-
             db2d3j972.pdf


34
参考資料① CLUB DB2の過去資料、入門資料

 CLUB DB2の過去セミナー資料公開中
 – http://ibm.com/developerworks/wikis/display/clubdb2/materials

 カンタン!DB2テクテク第1歩 基本機能編
 – 若干古い資料ですが、各種基本コマンドの使い方がやさしく解説されています
 – http://ibm.com/jp/software/data/developer/library/techdoc/kantandb2.html

 db2pd利用ガイド DB2 v9対応版
 – 問題判別や監視に大変有用なdb2pdの使い方解説
 – http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/00217BBA

 DB2 Express-Cの導入方法解説(無料のDB2で試しましょう!)
 – DB2 Express-C 9.7.4 for Windows クイックインストール
   ? http://www.ibm.com/developerworks/jp/offers/db2express-c/installwin_v974/
 – DB2 Express-C 9.7.4 for Linux クイックインストール
   ? http://www.ibm.com/developerworks/jp/offers/db2express-c/installlin_v974/




35
参考資料② nmon,db2top,db2perf_browse関連
 nmon
   – nmon ホームページ (AIX版)
       ? http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmon
   – nmon for Linux
       ? http://nmon.sourceforge.net/pmwiki.php
   – nmon Analyzer
       ? http://www.ibm.com/developerworks/wikis/display/Wikiptype/nmonanalyser
   – nmon Consolidator (nmon Analyzerの改良版)
       ? http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmonconsolidator

 db2top
   – db2top 簡易ユーザーマニュアル(英語)
       ? http://www-01.ibm.com/support/docview.wss?uid=swg27009542
   – 米developerWorksのdb2top関連記事(英語)
       ? https://www.ibm.com/developerworks/mydeveloperworks/blogs/thekguydw/tags/db2top


 db2perf_browse
     – http://www.zinox.com/files/db2perf_browse.txt (説明)
     – http://www.zinox.com/files/db2perf_browse.db2 (ストアドプロシージャ本体)
     – chat the lab "The Latest in Advanced Performance Diagnostics for DB2" の動画と資料
         ? http://www.channeldb2.com/events/the-latest-in-advanced
36
参考資料③DB2のマニュアル
 DB2のオンラインドキュメント:インフォメーションセンター
 常に最新の情報が閲覧できます。検索機能付き
 – DB2 9.7版
     ? http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp
 – DB2 9.5版
     ? http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp
 – DB2 9.1版
     ? http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp

 – ネットワークに繋がっていなくても閲覧できる「オフライン版」
   ? http://db2.jugem.cc/?eid=1933

 DB2のPDF版マニュアル
 日本語、英語など各国語版がダウンロード可能です
 – DB2 9.7版
     ? http://ibm.com/support/docview.wss?rs=71&uid=swg27015149
 – DB2 9.5版
     ? http://ibm.com/support/docview.wss?rs=71&uid=swg27009728
 – DB2 9.1版
     ? http://ibm.com/support/docview.wss?rs=71&uid=swg27009553
                    DB2の日本語ドキュメント一覧は以下の短縮URLからも辿れます
                    http://j.mp/db2docsja
37

More Related Content

What's hot (20)

Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
IBM Analytics Japan
?
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
Shuji Yamada
?
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
?
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
?
「おうちクラウド」が今热い!
「おうちクラウド」が今热い!「おうちクラウド」が今热い!
「おうちクラウド」が今热い!
Hirotaka Sato
?
监査ログをもっと身近に!?统合监査のすすめ?
监査ログをもっと身近に!?统合监査のすすめ?监査ログをもっと身近に!?统合监査のすすめ?
监査ログをもっと身近に!?统合监査のすすめ?
Michitoshi Yoshida
?
「カラム型」が実现するビッグデータの高速処理
「カラム型」が実现するビッグデータの高速処理「カラム型」が実现するビッグデータの高速処理
「カラム型」が実现するビッグデータの高速処理
japan_db2
?
MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編
Mikiya Okuno
?
础颈谤蹿濒辞飞を広告データのワークフローエンジンとして运用してみた话
础颈谤蹿濒辞飞を広告データのワークフローエンジンとして运用してみた话础颈谤蹿濒辞飞を広告データのワークフローエンジンとして运用してみた话
础颈谤蹿濒辞飞を広告データのワークフローエンジンとして运用してみた话
Katsunori Kanda
?
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
?
顿辞肠办别谤と笔辞诲尘补苍の比较
顿辞肠办别谤と笔辞诲尘补苍の比较顿辞肠办别谤と笔辞诲尘补苍の比较
顿辞肠办别谤と笔辞诲尘补苍の比较
Akihiro Suda
?
Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点
Shinichiro Arai
?
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016 Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Ryota Watabe
?
[Postgre sql9.4新機能]レプリケーション?スロットの活用
[Postgre sql9.4新機能]レプリケーション?スロットの活用[Postgre sql9.4新機能]レプリケーション?スロットの活用
[Postgre sql9.4新機能]レプリケーション?スロットの活用
Kosuke Kida
?
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
Tomohiro Nakashima
?
贬础环境构筑のベスト?プラクティス
贬础环境构筑のベスト?プラクティス贬础环境构筑のベスト?プラクティス
贬础环境构筑のベスト?プラクティス
EnterpriseDB
?
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用するQlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
QlikPresalesJapan
?
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
NTT DATA Technology & Innovation
?
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
?
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
?
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
IBM Analytics Japan
?
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
Shuji Yamada
?
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
?
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
?
「おうちクラウド」が今热い!
「おうちクラウド」が今热い!「おうちクラウド」が今热い!
「おうちクラウド」が今热い!
Hirotaka Sato
?
监査ログをもっと身近に!?统合监査のすすめ?
监査ログをもっと身近に!?统合监査のすすめ?监査ログをもっと身近に!?统合监査のすすめ?
监査ログをもっと身近に!?统合监査のすすめ?
Michitoshi Yoshida
?
「カラム型」が実现するビッグデータの高速処理
「カラム型」が実现するビッグデータの高速処理「カラム型」が実现するビッグデータの高速処理
「カラム型」が実现するビッグデータの高速処理
japan_db2
?
MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編
Mikiya Okuno
?
础颈谤蹿濒辞飞を広告データのワークフローエンジンとして运用してみた话
础颈谤蹿濒辞飞を広告データのワークフローエンジンとして运用してみた话础颈谤蹿濒辞飞を広告データのワークフローエンジンとして运用してみた话
础颈谤蹿濒辞飞を広告データのワークフローエンジンとして运用してみた话
Katsunori Kanda
?
顿辞肠办别谤と笔辞诲尘补苍の比较
顿辞肠办别谤と笔辞诲尘补苍の比较顿辞肠办别谤と笔辞诲尘补苍の比较
顿辞肠办别谤と笔辞诲尘补苍の比较
Akihiro Suda
?
Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点
Shinichiro Arai
?
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016 Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Ryota Watabe
?
[Postgre sql9.4新機能]レプリケーション?スロットの活用
[Postgre sql9.4新機能]レプリケーション?スロットの活用[Postgre sql9.4新機能]レプリケーション?スロットの活用
[Postgre sql9.4新機能]レプリケーション?スロットの活用
Kosuke Kida
?
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
Tomohiro Nakashima
?
贬础环境构筑のベスト?プラクティス
贬础环境构筑のベスト?プラクティス贬础环境构筑のベスト?プラクティス
贬础环境构筑のベスト?プラクティス
EnterpriseDB
?
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用するQlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
QlikPresalesJapan
?
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
NTT DATA Technology & Innovation
?
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
?
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
?

Viewers also liked (7)

骋谤辞辞惫测で楽に厂蚕尝を実行してみよう
骋谤辞辞惫测で楽に厂蚕尝を実行してみよう骋谤辞辞惫测で楽に厂蚕尝を実行してみよう
骋谤辞辞惫测で楽に厂蚕尝を実行してみよう
Akira Shimosako
?
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
Takakiyo Tanaka
?
顿叠2を础奥厂上に构筑する际のヒント&罢滨笔厂
顿叠2を础奥厂上に构筑する际のヒント&罢滨笔厂顿叠2を础奥厂上に构筑する际のヒント&罢滨笔厂
顿叠2を础奥厂上に构筑する际のヒント&罢滨笔厂
Akira Shimosako
?
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
Akira Shimosako
?
エバンジェリストが語るパワーシステム特論 ~ 特番:世界最速スパコン、セコイア(IBM Blue Gene/Q)の凄さの秘密に迫る
エバンジェリストが語るパワーシステム特論 ~ 特番:世界最速スパコン、セコイア(IBM Blue Gene/Q)の凄さの秘密に迫るエバンジェリストが語るパワーシステム特論 ~ 特番:世界最速スパコン、セコイア(IBM Blue Gene/Q)の凄さの秘密に迫る
エバンジェリストが語るパワーシステム特論 ~ 特番:世界最速スパコン、セコイア(IBM Blue Gene/Q)の凄さの秘密に迫る
Takumi Kurosawa
?
闯补惫补用翱/搁マッピングソフトについて私が知っている二、叁の事柄
闯补惫补用翱/搁マッピングソフトについて私が知っている二、叁の事柄闯补惫补用翱/搁マッピングソフトについて私が知っている二、叁の事柄
闯补惫补用翱/搁マッピングソフトについて私が知っている二、叁の事柄
Akira Shimosako
?
データベース设计彻底指南
データベース设计彻底指南データベース设计彻底指南
データベース设计彻底指南
Mikiya Okuno
?
骋谤辞辞惫测で楽に厂蚕尝を実行してみよう
骋谤辞辞惫测で楽に厂蚕尝を実行してみよう骋谤辞辞惫测で楽に厂蚕尝を実行してみよう
骋谤辞辞惫测で楽に厂蚕尝を実行してみよう
Akira Shimosako
?
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
Takakiyo Tanaka
?
顿叠2を础奥厂上に构筑する际のヒント&罢滨笔厂
顿叠2を础奥厂上に构筑する际のヒント&罢滨笔厂顿叠2を础奥厂上に构筑する际のヒント&罢滨笔厂
顿叠2を础奥厂上に构筑する际のヒント&罢滨笔厂
Akira Shimosako
?
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
IBM版Hadoop - BigInsights/Big SQL (2013/07/26 CLUB DB2発表資料)
Akira Shimosako
?
エバンジェリストが語るパワーシステム特論 ~ 特番:世界最速スパコン、セコイア(IBM Blue Gene/Q)の凄さの秘密に迫る
エバンジェリストが語るパワーシステム特論 ~ 特番:世界最速スパコン、セコイア(IBM Blue Gene/Q)の凄さの秘密に迫るエバンジェリストが語るパワーシステム特論 ~ 特番:世界最速スパコン、セコイア(IBM Blue Gene/Q)の凄さの秘密に迫る
エバンジェリストが語るパワーシステム特論 ~ 特番:世界最速スパコン、セコイア(IBM Blue Gene/Q)の凄さの秘密に迫る
Takumi Kurosawa
?
闯补惫补用翱/搁マッピングソフトについて私が知っている二、叁の事柄
闯补惫补用翱/搁マッピングソフトについて私が知っている二、叁の事柄闯补惫补用翱/搁マッピングソフトについて私が知っている二、叁の事柄
闯补惫补用翱/搁マッピングソフトについて私が知っている二、叁の事柄
Akira Shimosako
?
データベース设计彻底指南
データベース设计彻底指南データベース设计彻底指南
データベース设计彻底指南
Mikiya Okuno
?

Similar to CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門 (20)

Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
?
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
Makiko Konoshima
?
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
?
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
?
20150630冲惭测厂蚕尝勉强会
20150630冲惭测厂蚕尝勉强会20150630冲惭测厂蚕尝勉强会
20150630冲惭测厂蚕尝勉强会
masayoshi shiraishi
?
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64
FFRI, Inc.
?
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
Ruo Ando
?
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
Asuka Nakajima
?
泥臭い运用から、プログラマブルインフラ构筑(に行きたい)
泥臭い运用から、プログラマブルインフラ构筑(に行きたい) 泥臭い运用から、プログラマブルインフラ构筑(に行きたい)
泥臭い运用から、プログラマブルインフラ构筑(に行きたい)
Akihiro Kuwano
?
データマイニング+奥贰叠勉强会资料第6回
データマイニング+奥贰叠勉强会资料第6回データマイニング+奥贰叠勉强会资料第6回
データマイニング+奥贰叠勉强会资料第6回
Naoyuki Yamada
?
MySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMySQL 5.5 Update #denatech
MySQL 5.5 Update #denatech
Mikiya Okuno
?
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio KumazawaC11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Insight Technology, Inc.
?
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
Tsukasa Oi
?
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
takanori suzuki
?
とある顿叠础の黒い画面(ターミナル)滨滨
とある顿叠础の黒い画面(ターミナル)滨滨とある顿叠础の黒い画面(ターミナル)滨滨
とある顿叠础の黒い画面(ターミナル)滨滨
Kazuhiro Yoshikawa
?
What is an Ansible?
What is an Ansible?What is an Ansible?
What is an Ansible?
Shunsaku Kudo
?
ソーシャルゲームログ解析基盘の惭辞苍驳辞顿叠活用事例
ソーシャルゲームログ解析基盘の惭辞苍驳辞顿叠活用事例ソーシャルゲームログ解析基盘の惭辞苍驳辞顿叠活用事例
ソーシャルゲームログ解析基盘の惭辞苍驳辞顿叠活用事例
知教 本間
?
Ai sam 製品概要 4-5
Ai sam 製品概要 4-5Ai sam 製品概要 4-5
Ai sam 製品概要 4-5
龍雄 炭田
?
Ai SAM 製品概要-4-5
Ai SAM 製品概要-4-5 Ai SAM 製品概要-4-5
Ai SAM 製品概要-4-5
龍雄 炭田
?
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
?
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
Makiko Konoshima
?
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
?
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
?
20150630冲惭测厂蚕尝勉强会
20150630冲惭测厂蚕尝勉强会20150630冲惭测厂蚕尝勉强会
20150630冲惭测厂蚕尝勉强会
masayoshi shiraishi
?
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64
FFRI, Inc.
?
オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用オペレーティングシステム 第1回-公開用
オペレーティングシステム 第1回-公開用
Ruo Ando
?
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
Asuka Nakajima
?
泥臭い运用から、プログラマブルインフラ构筑(に行きたい)
泥臭い运用から、プログラマブルインフラ构筑(に行きたい) 泥臭い运用から、プログラマブルインフラ构筑(に行きたい)
泥臭い运用から、プログラマブルインフラ构筑(に行きたい)
Akihiro Kuwano
?
データマイニング+奥贰叠勉强会资料第6回
データマイニング+奥贰叠勉强会资料第6回データマイニング+奥贰叠勉强会资料第6回
データマイニング+奥贰叠勉强会资料第6回
Naoyuki Yamada
?
MySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMySQL 5.5 Update #denatech
MySQL 5.5 Update #denatech
Mikiya Okuno
?
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio KumazawaC11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Insight Technology, Inc.
?
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
Tsukasa Oi
?
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
takanori suzuki
?
とある顿叠础の黒い画面(ターミナル)滨滨
とある顿叠础の黒い画面(ターミナル)滨滨とある顿叠础の黒い画面(ターミナル)滨滨
とある顿叠础の黒い画面(ターミナル)滨滨
Kazuhiro Yoshikawa
?
ソーシャルゲームログ解析基盘の惭辞苍驳辞顿叠活用事例
ソーシャルゲームログ解析基盘の惭辞苍驳辞顿叠活用事例ソーシャルゲームログ解析基盘の惭辞苍驳辞顿叠活用事例
ソーシャルゲームログ解析基盘の惭辞苍驳辞顿叠活用事例
知教 本間
?
Ai sam 製品概要 4-5
Ai sam 製品概要 4-5Ai sam 製品概要 4-5
Ai sam 製品概要 4-5
龍雄 炭田
?
Ai SAM 製品概要-4-5
Ai SAM 製品概要-4-5 Ai SAM 製品概要-4-5
Ai SAM 製品概要-4-5
龍雄 炭田
?

CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門

  • 1. CLUB DB2 #137 CLUB DB2 第137回 DB2モニタリング入門 2012/2/24 日本アイ?ビー?エム 下佐粉 昭 (しもさこ あきら) rev. 1.1 この資料は下記URLでダウンロード可能です http://ibm.com/developerworks/wikis/display/clubdb2/materials
  • 2. 自己紹介 下佐粉 昭 ( しもさこ あきら ) 和歌山県生まれ 2001年 IBMに中途入社 以来、DB2関連の仕事多し 現在はビジネスパートナー様向け技術支援 ■書籍 「即戦力のDB2管理術」 「XML-DB開発 実技コース」(共著) 「DB2 逆引きリファレンス」(共著) ■オンライン Twitter - @simosako – http://twitter.com/simosako 内容は全てWEBで公開しています! Unofficial DB2 Blog – http://db2.jugem.cc/ http://db2watch.com/ 2
  • 3. 今日の目的 モニタリングって難しそう? – モニタリングはそれほど難しくありません – 大切なのは定期的にモニタリングし、データを保存しておくこと – データを持っていないと、トラブルが起こった時に大変 【今日の目的】モニタリングが必要な理由と、その簡単な方法を具体的に知る! 【宣伝】基礎から詳しく学習したい方は、ぜひ自著をご参照ください! 即戦力のDB2管理術~仕組みからわかる効率的管理のノウハウ 2011年4月8日発売 (技術評論社) 下佐粉昭 著 A5判/432ページ ISBN 978-4-7741-4597-6 http://db2.jugem.cc/?eid=2341 (書籍紹介) 3
  • 4. 目次 モニタリングの考え方 OSレベルでのモニタリング – 基本的なコマンド – OSモニタリングの便利ツール (nmon) – Windowsの便利ツール:「パフォーマンス」 DB2のモニタリング – スナップショットとメトリックス – DB2の必修モニタリングポイント – DB2モニタリングの便利ツール (db2top) – 簡単な定常監視 まとめ 4
  • 6. モニタリングは、なんのため? モニタリング=データの収集 –システム内部のデータを収集すること ? ディスクIO速度、ネットワークエラー率、メモリ 使用率 ... なんのため? –長期的なもの→監視 ? 長期的にデータを記録:定常監視 –短期的なもの→パフォーマンス?チューニング ? リアルタイムのモニタリング ? クエリーを実行しながら「眺める」ことが重要 モニタリングの方法を知ると、一挙両得! 6
  • 7. 定常监视はなぜ必要? 正常な状態のデータは 継続的に記録し続けることで、 パフォーマンスチューニング システムに起こっている変化が にも大変有用です 把握出来るようになります。 時間 7
  • 8. 「层(レイヤー)」を意识する ?チューニングも監視も、層を意識することが大切です ?ある層を変更すると、上の層に影響があります ?調査は外堀から DB2の内部状態 DB2の設定 OSの設定 ハードウェア構成 8
  • 9. モニタリングのポイント ?NIC , CPU使用率 , メモリ使用率, プロセスの死活監視 , ディスク使用量 ← OSコマンド ?DB2内部情報(バッファープール、ソート時間 ...),DB2の表スペース ← DB2のコマンド DB2サーバー DB2関連プロセ ?バッファープールヒット率 スの死活監視 ?デッドロック数 DB2内部の動 DB2 DB2 ?ソート時間 ネットワーク疎 DB2 作情報 ?トランザクション数 通、エラー率 : NIC CPU CPUやメモリ 使用率 メモリ ストレージ全体の使用率 OSのログ エラー情報 DB2の表ス DB2表スペースの ペース DB2の診断ログ エラー情報 使用率 9
  • 11. 翱厂コマンドでのモニタリング(调査) CPUの使用状況は? – Linux/Unix: ps , vmstat – Windows: タスクマネージャ メモリ状況は? – Linux/Unix: vmstat , free – Windows : タスクマネージャ ディスクアクセス,ディスク残量は? – Linux/Unix: vmstat , iostat , df – Windows: パフォーマンスモニター ネットワークはどうか? – ping (生きているか確認) OSのログを読む(障害発生時は最重要!) – Linux/Unix : syslog , errpt(AIX) , /var/log/messages など – Windows: イベントビューア 11
  • 12. 重要コマンド:惫尘蝉迟补迟 vmstat [delay [count]] vmstatは多くのLinux、Unixで利用可能なコマンドで、多彩な内部データを出力できる vmstatの出力でチェックすべきポイント – rは待ちプロセス数 :待ちが多い場合は、そもそもCPUパワー不足を疑う – bはウェイトしている(ブロックされた)プロセス数(I/Oウェイト) ? I/Oウェイトを減らすには、DB2側の改善が必要 – swap in(si)とswap out (so)はゼロ維持が原則 – block-in (bi) ディスクからの読み取り数 ? 遅いクエリーを実行したとき、biが増えない??IOウェイト以外の要因 ? 遅いクエリー(SELECT)を実行したとき、boが増える??ヒープオーバーフロー – cpuのusはユーザプロセスの使用率、syはシステムの使用率 ? 待ち(r)が少なく、ユーザプロセス(us)が多いのがよくチューニングされた状況 ? 巨大なデータアクセスがある場合、システム(sy)が増えるのは自然 db2inst1@ubuntuserver:~$ vmstat 1 100 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 17548 35640 298480 0 0 1664 0 7377 15332 35 19 45 0 2 0 0 17020 35648 298472 0 0 1408 16 4165 23101 35 22 44 0 2 0 0 17176 35648 298480 0 0 1916 0 8029 15943 38 16 46 3 12
  • 13. でもちょっと面倒... 色々なデータを取るには複数のコマンドを並行実行して、 tail -f で複数のログを見て... ? 結構面倒ですね そこで最終兵器 nmon – もともとはIBM社内の有志開発者が作ったAIX用の便利コマンド。後にLinuxにも移植 – あまりに便利なので、AIXではOS標準添付に どこがいいの? – 軽量(負荷を増やさない) – 簡単(1つキーを押すだけ) – GUI無しの環境でも使える – 見たい情報がリアルタイムグラフ化 – 結果をファイルに記録できる ※nmonの取得方法については参考資 料②にURLを記載しています 13
  • 14. nmonを使う① リアルタイムで眺める > nmon で起動後 ショートカットキーで見たい データを表示 c:CPU m:メモリ j:ファイルシステム d:ディスクI/O t:プロセス .(ドット)で動きがあるプロセス とディスクのみ表示にする -/+ で更新頻度を変更可能 14
  • 15. nmonを使う② 記録と調査?報告用 nmonは-Fを指定すると、CSV形式のファイル記録モードに -Fでファイル名を指定、-sでデータの取得間隔を指定、 -c で取得回数 – 例) >nmon -F mylog.nmon -s 1 -c 30 (※コマンドが非同期で実行されるので注意) ? 1秒間隔で30回データを取得し、mylog.nmonに記録 このcsvファイルを、nmon Analyzer (EXCELマクロ)から読み込むことで ... – 自動的に色々な視点からグラフ化してくれる CPU使用率の時間経過 ディスク毎のスループット ディスクIO量の時間経過 ※nmon Analuzerの取得方法について は参考資料②にURLを記載しています 15
  • 16. 奥颈苍诲辞飞蝉环境ではパフォーマンスモニターが便利 – OS標準機能で、OSの情報とDB2内部情報を一括して取得可能 ? 低負荷?リモートから取得可能 – グラフを右クリック?カウンタの追加 ? DB2 Databases(DBレベルの情報) DBが活性化 ロックウェイト、ソートオーバーフロー 等多数 (Activate)されていな ? DB2 Applications (アプリケーションレベルの情報) いと表示されません ? DB2 Database Manager(インスタンスレベルの情報) インスタンスが開始 (db2start)していない と表示されません ローカル、もしくはリモート のコンピュータからカウン タデータを収集できます 16
  • 18. OSコマンドで得られない情報とは? OSコマンドでは取得できない大切な情報は多数存在する – メモリ全体の使用量はOSコマンドで分かるが、DB2の各 種ヒープやバッファーの量が足りているかどうかはDB2 にしか分からない – ディスク全体の使用量はOSコマンドで分かるが、表ス ペースの利用率はDB2にしか分からない DB2の状態は常に変化している – そのため「今」の状況を把握して対応する必要がある DB2の「今」が分かる情報があると... – パフォーマンスチューニング用 ? クエリー実行中の状態をモニタリング – 監視用 ? 「今」の状態を定期的に記録することで、異常事態が 判別できるようになる 18
  • 19. DB2のモニタリング機能 DB2には「モニタ-エレメント」という監視項目があり、それをメトリック(モニター表関 数)か、スナップショット(SNAPSHOTコマンド)で取り出すようになっている MONREPORTモジュール モニター表関数?ビュー (テキスト出力) (メトリック)※v9.7以降 モニタービュー (MON_*から始まる モニター表関数 ビュー。モニター表関 (MON_*で始ま 数を組み合わせて作 る表関数) られている) モニターエレ メント(監視項 目) スナップショット表 スナップショット管理 関数 ビュー(スナップショッ ト表関数を組み合わ せて作られている) スナップショット GET SNAPSHOTコマンド (テキスト出力) 19
  • 20. モニターエレメント モニターエレメントからは豊富なDB2内部情報が得られます 例) バッファープールへのアクセス数、ソートの回数、表の読み書き数... モニターエレメントの説明 対応しているモニター表関数 の一覧とグループ (省略しています) : 対応しているスナップショッ トモニターの論理グループ ※モニターエレメント一覧 20 http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.mon.doc/doc/r0001140.html
  • 21. メトリック(モニター表関数)とは DB2 9.7から追加された新しいモニタリングの仕組み。デフォルトで有効になっています データオブジェクトレベルの便利なビューや表関数 – MON_GET_BUFFERPOOL : バッファープールヒット率など – MON_GET_TABLE : 表スキャンの数など – MON_GET_INDEX :インデックススキャンの数など システム レベル パッケージ?キャッシュ?ステートメ データ?オブジェクト レベル ント レベル MON_GET_TABLE MON_GET_SERVICE_SUBCLASS MON_GET_PKG_CACHE_STMT MON_GET_INDEX MON_GET_WORKLOAD MON_GET_BUFFERPOOL MON_GET_CONNECTION アクティビティー レベル MON_GET_TABLESPACE MON_GET_UNIT_OF_WORK MON_GET_ACTIVITY_DETAILS MON_GET_CONTAINER MON_GET_EXTENT_MOVEMENT_STATUS ユーザのクエリーと、システム内部のクエリーを分けてデータを取得可能 21
  • 22. モニター表関数の使い方 表関数とは、「表を返す」関数 – 結果として表を返すので、FROMの後ろに置いて使う – 表である事を示すために、TABLE()で囲む必要がある – 例) SELECT * FROM TABLE(MON_GET_TABLE('DB2INST1','',-2)) AS T ? でも、すごく列が多いので、列を指定して絞らないと、超横長の結果が... そこで... db2perf_browseを利用 – 2011年5月の"DB2 chat with the lab"で説明された便利ツール ? 列と行を入れ替えて表示するストアドプロシージャ 例) > call db2perf_browse('MON_GET_BUFFERPOOL(''IBMDEFAULTBP'',null)') > call db2perf_browse('MON_GET_TABLE(''DB2INST1'',null,-2)') 22
  • 23. DB2の必修モニタリングポイント① バッファープールのヒット率 バッファープール(BP)は、データのキャッシュ領域 エージェント – データベースで最も遅いパーツは「ディスク」 – キャッシュはあるがサイズに限度がある →BP ヒット率向上はパフォーマンス向上の鍵 IOサー ページ? BPヒット率=バッファープールを読み書きした数/全体 バー クリーナー のIOリクエストの数 * 100 [%] エレメントで計算するには以下の2つを使用して.. – POOL_DATA_L_READS : 論理読み取り数 表スペース – POOL_DATA_P_READS : 物理読み取り数 コンテナ コンテナ SELECT 100.0*(POOL_DATA_L_READS - POOL_DATA_P_READS) / POOL_DATA_L_READS FROM TABLE (MON_GET_BUFFERPOOL('IBMDEFAULTBP',null)) AS T もしくは、専用のビューを使用(※こちらはスナップショットデータなので注意) SELECT BP_NAME,DATA_HIT_RATIO_PERCENT,INDEX_HIT_RATIO_PERCENT FROM SYSIBMADM.BP_HITRATIO 23
  • 24. DB2の必修モニタリングポイント② トランザクション数 トランザクション数(定期時間内のトランザクションの数)を把握しておく事は重要です – Transactions Per Minute (TPM) – (狭義の)トランザクション≒コミット発行数+ロールバック発行数 エレメントで計算するには、以下の2つを組み合わせて... – TOTAL_APP_COMMITS: 総COMMIT数 – TOTAL_APP_ROLLBACKS:総ROLLBACK数 SELECT CURRENT TIMESTAMP,TOTAL_APP_COMMITS+TOTAL_APP_ROLLBACKS FROM SYSIBMADM.MON_DB_SUMMARY MON_DB_SUMMARYは良く使う 情報がまとめられた便利なビュー 上記にはDB2システムが内部で発行したSQLの分も含まれる – ユーザSQLのみをカウントしたい場合は、以下のようにMON_GET_SERVICE_SUBCLASS でスーパークラスに'SYSDEFAULTUSERCLASS'を指定してデータを取り出す SELECT CURRENT TIMESTAMP,TOTAL_APP_COMMITS FROM TABLE(MON_GET_SERVICE_SUBCLASS('SYSDEFAULTUSERCLASS','',-2)) AS T 24
  • 25. DB2の必修モニタリングポイント③ 遅いクエリーの発見 パフォーマンスチューニングでは、遅いクエリーに対してチューニングする事が重要 – 一番良いのは、クライアントアプリケーション側でSQLを管理していること – 無いなら、パッケージキャッシュから(実行されたSQLを一次的にキャッシュしておく領域) エレメントで計算するには、 – STMT_EXEC_TIME:クエリーを実行した時間 – EXECUTABLEID:SQL毎に付けられるID(ハッシュ値) をベースに検索 ? 以下の例は、同じクエリーの実行時間をSUMで足して、遅いもの順でトップ10を出力した例 SELECT SUM(STMT_EXEC_TIME) AS TOTAL_EXEC_TIME, SUM(TOTAL_ACT_WAIT_TIME) AS TOTAL_WAIT_TIME, EXECUTABLE_ID FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL, NULL, NULL, -2)) AS T GROUP BY EXECUTABLE_ID ORDER BY TOTAL_EXEC_TIME DESC FETCH FIRST 10 ROWS ONLY ? EXECUTABLEIDではSQLが分からないので、以下のようにして情報を出力 EXECUTABLEIDを第二引数に指定。(xを付けるのをお忘れ無く) call db2perf_browse('MON_GET_PKG_CACHE_STMT(NULL,x''010000000000000084000 25 0000000000000000000020020120223161303238342'',NULL,-2)');
  • 26. (参考)前ページの実行例 call db2perf_browse('MON_GET_PKG_CACHE_STMT(NULL,x''0100000000000000840000000 000000000000000020020120223161303238342'',NULL,-2)') 結果セット 1 -------------- TOTAL_SORTS 0 POST_THRESHOLD_SORTS 0 COL VALUE POST_SHRTHRESHOLD_SORTS 0 -------------------------------- ------------------------------- SORT_OVERFLOWS 0 MEMBER 0 WLM_QUEUE_TIME_TOTAL 0 SECTION_TYPE D WLM_QUEUE_ASSIGNMENTS_TOTAL 0 INSERT_TIMESTAMP 2012-02-23-16.13.03.238338 DEADLOCKS 0 (中略) (中略) TOTAL_ACT_WAIT_TIME 305 LOCK_TIMEOUTS 0 TOTAL_CPU_TIME 1085 LOG_BUFFER_WAIT_TIME 0 POOL_READ_TIME 305 NUM_LOG_BUFFER_FULL 0 POOL_WRITE_TIME 0 LOG_DISK_WAIT_TIME 0 DIRECT_READ_TIME 0 LOG_DISK_WAITS_TOTAL 0 DIRECT_WRITE_TIME 0 LAST_METRICS_UPDATE 2012-02-23-16.43.02.557624 LOCK_WAIT_TIME 0 NUM_COORD_EXEC 7 TOTAL_SECTION_SORT_TIME 0 NUM_COORD_EXEC_WITH_METRICS 7 TOTAL_SECTION_SORT_PROC_TIME 0 VALID Y TOTAL_SECTION_SORTS 0 TOTAL_ROUTINE_TIME 0 LOCK_ESCALS 0 TOTAL_ROUTINE_INVOCATIONS 0 LOCK_WAITS 0 ROUTINE_ID 0 ROWS_MODIFIED 0 STMT_TYPE_ID DML, Select (blockable) ROWS_READ 35 QUERY_COST_ESTIMATE 23 ROWS_RETURNED 35 STMT_PKG_CACHE_ID 704374636548 DIRECT_READS 0 COORD_STMT_EXEC_TIME 313 DIRECT_READ_REQS 0 STMT_EXEC_TIME 313 DIRECT_WRITES 0 TOTAL_SECTION_TIME 313 DIRECT_WRITE_REQS 0 TOTAL_SECTION_PROC_TIME 8 POOL_DATA_L_READS 36 TOTAL_ROUTINE_NON_SECT_TIME 0 POOL_TEMP_DATA_L_READS 0 TOTAL_ROUTINE_NON_SECT_PROC_TIME 0 POOL_XDA_L_READS 0 STMT_TEXT SELECT COLNAME, TYPENAME FROM SYSCAT.COLUMNS WHERE POOL_TEMP_XDA_L_READS 0 TABNAME='POLICY' AND TABSCHE POOL_INDEX_L_READS 24 COMP_ENV_DESC <BLOB> POOL_TEMP_INDEX_L_READS 0 ADDITIONAL_DETAILS <BLOB> POOL_DATA_P_READS 2 -------------------- ---------------------------------------- POOL_TEMP_DATA_P_READS 0 POOL_XDA_P_READS 0 85 レコードが選択されました。 POOL_TEMP_XDA_P_READS 0 POOL_INDEX_P_READS 4 リターン状況 = 0 POOL_TEMP_INDEX_P_READS 0 POOL_DATA_WRITES 0 POOL_XDA_WRITES 0 POOL_INDEX_WRITES 0 26
  • 27. DB2の必修モニタリングポイント④ メモリ使用量、ディスク使用量 メモリ – 全体をざっくり知るには、db2mtrkコマンド(メモリートラッカー)が便利 db2inst1@ubuntuserver:~$ db2mtrk -d Memory for database: EMPLOYEE utilh pckcacheh other catcacheh bph (1) bph (S32K) 64.0K 1.6M 192.0K 512.0K 4.6M 832.0K bph (S16K) bph (S8K) bph (S4K) shsorth lockh dbh 576.0K 448.0K 384.0K 128.0K 16.9M 18.9M apph (64) apph (45) apph (14) apph (13) apph (12) apph (11) 64.0K 192.0K 64.0K 64.0K 64.0K 192.0K apph (10) apph (9) apph (8) appshrh 64.0K 64.0K 64.0K 1.4M ディスク – エレメントとしては、TBSP_TOTAL_PAGES(確保しているページ数TBSP_USABLE_PAGES (空きページ数)を使って計算しても良いが、db2pdコマンドが便利 > db2pd -db EMPLOYEE -tablespaces 27
  • 28. (参考)前ページのdb2pd実行例 > db2pd -db EMPLOYEE -tablespaces Tablespace Configuration: Address Id Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg Name 0x00007F2CB1B0BDA0 0 DMS Regular 4096 4 Yes 4 1 1 Off 1 0 3 SYSCATSPACE 0x00007F2CB1B0D520 1 SMS SysTmp 4096 32 Yes 32 1 1 On 1 0 31 TEMPSPACE1 0x00007F2CB1B10C60 2 DMS Large 4096 32 Yes 32 1 1 Off 1 0 31 USERSPACE1 0x00007F2CB1B123E0 3 DMS Large 4096 4 Yes 4 1 1 Off 1 0 3 SYSTOOLSPACE 0x00007F2CB1B13B60 4 SMS UsrTmp 4096 4 Yes 4 1 1 On 1 0 3 SYSTOOLSTMPSPACE Tablespace Statistics: Address Id TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM Max HWM State MinRecTime NQuiescers PathsDropped 0x00007F2CB1B0BDA0 0 24576 24572 23296 0 1276 23296 23296 0x00000000 0 0 No 0x00007F2CB1B0D520 1 1 1 1 0 0 0 0 0x00000000 0 0 No 0x00007F2CB1B10C60 2 102400 102368 61696 0 40672 80256 80256 0x00000000 0 0 No 0x00007F2CB1B123E0 3 8192 8188 152 0 8036 152 152 0x00000000 0 0 No 0x00007F2CB1B13B60 4 1 1 1 0 0 0 0 0x00000000 0 0 No Tablespace Autoresize Statistics: Address Id AS AR InitSize IncSize IIP MaxSize LastResize LRF 0x00007F2CB1B0BDA0 0 Yes Yes 33554432 -1 No None None No 0x00007F2CB1B0D520 1 Yes No 0 0 No 0 None No 0x00007F2CB1B10C60 2 Yes Yes 314572800 104857600 No 1073741824 None No 0x00007F2CB1B123E0 3 Yes Yes 33554432 -1 No None None No 0x00007F2CB1B13B60 4 Yes No 0 0 No 0 None No Containers: Address TspId ContainNum Type TotalPgs UseablePgs PathID StripeSet Container 0x00007F2CB1B0D2E0 0 0 File 24576 24572 0 0 /home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000000/C0000000.CAT 0x00007F2CB1B0EA00 1 0 Path 1 1 0 0 /home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000001/C0000000.TMP 0x00007F2CB1B121A0 2 0 File 102400 102368 0 0 /home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000002/C0000000.LRG 0x00007F2CB1B13920 3 0 File 8192 8188 0 0 /home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000003/C0000000.LRG 0x00007F2CB1B15040 4 0 Path 1 1 0 0 /home/db2inst1/db2inst1/NODE0000/EMPLOYEE/T0000004/C0000000.UTM 28
  • 29. でもちょっとめんどう... (本日2回目) 色々なデータを取るにはdb2perf_browseを入れて、複数のSQLを書いておいて、定期実行して... ? 結構面倒ですね そこで最終兵器 db2top – もともとは一部のOS用のDB2にだけに実装されていたコマンド – あまりに便利なのでDB2 for Linux/Unixで標準コマンドに どこがいいの? – 軽量(負荷を増やさない) – 簡単(1つキーを押すだけ) – GUI無しの環境でも使える – 見たい情報がリアルタイムグラフ化 – 結果をファイルに記録できる ※db2topの取得方法については参考 資料②にURLを記載しています 29
  • 30. B:ボトルネック表示 db2topを使う① リアルタイムで眺める d:DB全体の状況 t:表スペース > db2top -d DB名 で起動後、ショートカットキーで画 b:バッファープール 面を切り替え。Iでモニタリング間隔を変更可能。iで動 m:ヒープ全般 作中のオブジェクトのみを表示 D:(動的)SQL表示 ?ボトルネック表示(B) ?DB全体(d) ?表スペース(t) 30
  • 31. 诲产2迟辞辫を使う②応用编 メタキャラクタ 意味 ^ 行の先頭にマッチする 見たい情報を絞り込む $ 行の最後にマッチする – /(スラッシュ)を押すと、正規表現で絞り込みが | (パイプ) 左右どちらかの正規表現にマッチする 可能 . (ピリオド) 任意の文字一文字にマッチする ? 例) /EMP[0-9] → EMP0,EMP1... EMP9 + 直前の文字の1文字以上の連続 にマッチ * (アスタリスク) 直前の文字の0文字以上の連続 ? 直前の文字の0文字または1文字の連続 – z で指定列での降順ソート(Zで昇順) ? エスケープ文字 – c で表示する列を指定可能 () 文字列を一塊で扱う [] リスト内のいずれかの文字にマッチする SQLの詳細を得るには – 各SQLにはハッシュ化された値が付いているので、Lを押した後に入力すると詳細が分かる ? eでExplain(実行計画)も確認可能 31
  • 32. db2topを使う③ 記録と調査?報告用 ファイルに詳細を記録する – Sを押すと、SNAPSHOTコマンド実行される ? viで表示されるので :w ファイル名 で保存 – db2top起動時に、 -bを指定してバックグラウンドモードで起動 ? データベース(-d)、取得間隔[秒](-i)、取得期間[分](-m)あるいは取得回数(-s)を指定 ? 例) > db2top -d EMPLOYEE -b d -i 1 -m 10 > db2top.csv (-bの後のオプションの意味) -b : background mode option: d=database, l=sessions, t=tablespaces, b=bufferpools, T=tables, D=Dynamic SQL, s=Statements, U=Locks, u=Utilities, F=Federation, m=Memory 32
  • 33. ※惭翱狈搁贰笔翱搁罢モジュール http://publib.boulder.ibm.com/infocenter/d 簡単な定常監視 b2luw/v9r7/topic/com.ibm.db2.luw.sql.rtn.d oc/doc/r0056368.html MONREPORTモジュール (DB2 9.7 FP1新機能) – 人が読みやすいレポートを生成する 例)MONREPORT.DBSUMMARYプロシージャ > db2 "CALL MONREPORT.DBSUMMARY(300)" > today.log ? 引数で指定された秒数の間データをモニタし、レ ポートを作成する もしくは、MON_DB_SUMMARYビュー > call db2perf_browse('SYSIBMADM.MON_DB_SUMMARY') 33
  • 34. まとめ モニタリングは、監視?パフォーマンスチューニングの基礎 – 監視とパフォーマンスチューニングは地続きです 層(レイヤー)を意識して確認 – 外堀(下層)から – OSレベル(vmstat,nmon など) – DB2レベル(メトリック、db2topなど) 次のステップ – 以下に技術情報が集められています ? http://www.ibm.com/developerworks/jp/data/products/db2/db2_97.html – お勧め資料 ? DB2 V9.7 運用管理ガイド: データベース?モニタリング http://www.ibm.com/developerworks/jp/data/products/db2/operation-management- guide/v97_database-monitor.html ? DB2マニュアル:モニタリング(PDF) http://public.dhe.ibm.com/ps/products/db2/info/vr97/pdf/ja_JP/DB2Monitoring-db2f0j972.pdf ? DB2マニュアル:問題判別とパフォーマンスチューニング(PDF) http://public.dhe.ibm.com/ps/products/db2/info/vr97/pdf/ja_JP/DB2PerfTuneTroubleshoot- db2d3j972.pdf 34
  • 35. 参考資料① CLUB DB2の過去資料、入門資料 CLUB DB2の過去セミナー資料公開中 – http://ibm.com/developerworks/wikis/display/clubdb2/materials カンタン!DB2テクテク第1歩 基本機能編 – 若干古い資料ですが、各種基本コマンドの使い方がやさしく解説されています – http://ibm.com/jp/software/data/developer/library/techdoc/kantandb2.html db2pd利用ガイド DB2 v9対応版 – 問題判別や監視に大変有用なdb2pdの使い方解説 – http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/00217BBA DB2 Express-Cの導入方法解説(無料のDB2で試しましょう!) – DB2 Express-C 9.7.4 for Windows クイックインストール ? http://www.ibm.com/developerworks/jp/offers/db2express-c/installwin_v974/ – DB2 Express-C 9.7.4 for Linux クイックインストール ? http://www.ibm.com/developerworks/jp/offers/db2express-c/installlin_v974/ 35
  • 36. 参考資料② nmon,db2top,db2perf_browse関連 nmon – nmon ホームページ (AIX版) ? http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmon – nmon for Linux ? http://nmon.sourceforge.net/pmwiki.php – nmon Analyzer ? http://www.ibm.com/developerworks/wikis/display/Wikiptype/nmonanalyser – nmon Consolidator (nmon Analyzerの改良版) ? http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmonconsolidator db2top – db2top 簡易ユーザーマニュアル(英語) ? http://www-01.ibm.com/support/docview.wss?uid=swg27009542 – 米developerWorksのdb2top関連記事(英語) ? https://www.ibm.com/developerworks/mydeveloperworks/blogs/thekguydw/tags/db2top db2perf_browse – http://www.zinox.com/files/db2perf_browse.txt (説明) – http://www.zinox.com/files/db2perf_browse.db2 (ストアドプロシージャ本体) – chat the lab "The Latest in Advanced Performance Diagnostics for DB2" の動画と資料 ? http://www.channeldb2.com/events/the-latest-in-advanced 36
  • 37. 参考資料③DB2のマニュアル DB2のオンラインドキュメント:インフォメーションセンター 常に最新の情報が閲覧できます。検索機能付き – DB2 9.7版 ? http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp – DB2 9.5版 ? http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp – DB2 9.1版 ? http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp – ネットワークに繋がっていなくても閲覧できる「オフライン版」 ? http://db2.jugem.cc/?eid=1933 DB2のPDF版マニュアル 日本語、英語など各国語版がダウンロード可能です – DB2 9.7版 ? http://ibm.com/support/docview.wss?rs=71&uid=swg27015149 – DB2 9.5版 ? http://ibm.com/support/docview.wss?rs=71&uid=swg27009728 – DB2 9.1版 ? http://ibm.com/support/docview.wss?rs=71&uid=swg27009553 DB2の日本語ドキュメント一覧は以下の短縮URLからも辿れます http://j.mp/db2docsja 37