...

5-1. - IBM

by user

on
Category: Documents
210

views

Report

Comments

Transcript

5-1. - IBM
5. モニターとチューニング
1
・SQL&SQL/PL
・C,Java,etc.
・統合開発環境
システム構築の流れとDB2
要件定義
・接続形態
・ユーザー認証
・セキュリティ
・耐障害性構成
アプリケーション
設計者/開発者
・コードページ
・ソート順
・スキーマ
・Diskへの配置
・表・索引の設計
データベース
設計者/管理者
・障害回復
・再編成
/統計情報更新
・監視
システム要件
の整理
データ項目の
標準化
設計
開発
テスト
本番運用
システム構成
の選択
アプリケーショ
ン設計
プログラミング・
インターフェー
スの選択
データベース
設計
運用設計
パフォーマンス
を考慮した
プログラミング
統合テスト
キャパシティ、
パフォーマンス
に関する検証
テスト
モニターと
チューニング
・チューニング手法
概要
・チューニングに
役立つツール
2
2
DB管理者の仕事のなかでのチューニング作業
要件定義
•
論理設計
物理設計
コーディング
単体テスト
統合・システム
テスト
本番稼働
パフォーマンス
目標設定
DB管理者
モデリング
DB物理設計
パフォーマンス・チューニング
キャパシティー プランニング
DB定義(表、索引 etc)
配置
パラメータ設定
SQL標準作成
問題判別
DB運用設計
監視
3
パフォーマンス・チューニングとは
 下記を調整することにより、業務要件に定められたパフォーマンス( トランザ
クション・スループットやレスポンス・タイム)を達成する/改善すること
– システム構成
– データベース論理設計
– データベース物理設計
• データベース構成パラメータ
– アプリケーション
– SQL文
 早期にパフォーマンス・チューニング上困難なものが無いか確認。早期であ
ればアクションの幅は広く取れる
4
DB管理者の本番稼動前最後のハードル
 最後の大きなハードルは、パフォーマンス・チューニング
– 物理設計の最適化(パラメータ変更やインデックス追加・修正など)が主な
作業
• システム・テスト・フェーズでは、システム構成や、論理設計の変更まで実施す
ることは困難
• プロジェクトの早期フェーズで、システム構成、論理設計や業務設計のパフォー
マンスに与える影響を調査すべき
– 本番稼動後のチューニングも容易にするような、運用設計も重要
• テストフェーズで使用していないツールは、本番環境でなかなか使えない
• サービスレベルを保つためにチューニングが必要になる場合も存在
– 定常監視とリンクする必要性
> チューニングの必要性判断
> チューニングの効果判定
要件定義
DB管理者
論理設計
モデリング
物理設計
DB物理設計
コーディング
単体テスト
統合・システム
テスト
本番稼働
パフォーマンス・チューニング
5
5-1. データベースのモニター

DB2付属ツール:モニター・ツールの種類
– アクセス・プラン表示ツール
• Visual Explain
– GUIツール
• db2exfmt
– EXPLAIN表の情報を解釈しやすい書式(テキスト形式)で表示
– パフォーマンス測定ツール
• スナップショット・モニター ※ DB2の現在の活動状況を知る
– 現在いくつのアプリケーションがデータベースに接続しているのか?
– デッドロックはどれくらい発生しているのか?
• イベント・モニター ※ 各イベントについて調査する
– アプリケーションの実行時間が長い。どこに時間がかかっているのか?
– デッドロックが発生した。どこに原因があるのか?
• db2batch
– ベンチマークツールコマンド
• db2pd
– モニター&トラブルシューティングコマンド
• メモリー・トラッカー(db2mtkrコマンド)
– メモリー使用状況
• 他
6
5-1. データベースのモニター
 EXPLAIN機能実行手順
 EXPLAIN表を使用するEXPLAIN機能
EXPLAIN.DDLの実行
最初に一度だけ実行する
– EXPLAIN表の作成
– EXPLAIN情報のEXPLAIN表への書き出し
• EXPLAINコマンド
• EXPLAIN特殊レジスター
• EXPLAIN BINDオプション
• VISUAL EXPLAIN
– EXPLAIN表に戻された結果の検証
• VISUAL EXPLAIN
• db2exfmt
EXPLAINファシリティ
SQLコンパイラーの一部で、
静的/動的SQL文のアクセス・
プラン情報をEXPLAIN表に書
き出すことができる
EXPLAINツール
EXPLAIN情報を元にアクセス・プラン
を解析するためのツール
 EXPLAIN表を使用しないEXPLAIN機能
– db2expln
– dynexpln
7
5-1. データベースのモニター
 Visual Explain: 使いやすくて分かりやすい GUI
– アクセス・プランの分析
– Explain 表からの最適化プログラム情報を分析
詳細情報
・CPUコスト
・I/Oコスト
・バッファープール
使用ページ数
・結合タイプ など
ボックスをダブルクリック
詳細情報取得
8
(参考)db2exfmtツールによるアクセス・プランの確認(動的SQL)

db2exfmtツールを使用してEXPLAIN情報を取得する
db2 –tvf c:¥sqllib¥misc¥explain.ddl ①
db2 set current explain mode explain ②
db2 –tvf XXX.sql ③
db2 set current explain mode no
④
db2exfmt –d データベース名 –g TIC -1 –o XXX.exfmt ⑤
 ①事前準備:EXPLAIN.DDLの実行
– 最初の1回のみ実行
 ②EXPLAINモードの設定ON
 ③EXPLAINを取得するSQLの発行
 ④EXPLAINモードの設定OFF
 ⑤EXPLAIN情報のフォーマット
–
–
-d データベース名
-g グラフに関するオプションを指定
•
•
•
–
–
T 各オペレーターの下に合計コストを表示
I 各オペレーターの下に入出力コストを表示
C 各オペレーターの下に予期出力のカーディナリティを表示
-1 最新の Explain 要求を取得、またその他のオプションに関してデフォルトを使用 (cf. 「-w タイムスタンプ」で
時間を指定してExplain要求を取得)
-o 出力先ファイル名
9
参考:db2exfmt (1/2)
④SQL
①ヘッダー
実行SQL:
select firstnme,
lastname
from employee
where salary > 40000
②DB情報
⑤アクセスプラン
オプティマイザーによっ
て書き直されたSQL
アクセスプラン
合計コスト
③パッケージ情報
詳細情報の番号
ロック分離レベル
10
参考:db2exfmt (2/2)
オペレーター毎の詳細
⑥オペレーター毎の詳細
全体の合計コスト
ここまでの合計コスト
このオペレータへの入力
プリフェッチの有無
ここでの入力行数
11
5-1. データベースのモニター
 スナップショット・モニター
– スナップショット・モニターは、DB2が提供するモニター / 解析ツールのひとつ
• 特定時点のデータベース活動状況を取得する
– バッファープールなどの資源の使用状況
– データベースへの接続数
– デッドロック発生数
参考) イベント・モニター : 特定の時間内に発生したイベントを記録
EXPLAIN機能 : SQL文のアクセス・プランに関する情報を取得
– 取得手順
• 取得したい対象のMONITOR SWITCHESの更新
–
–
–
–
–
–
BUFFERPOOL(バッファープールのヒット率など)
LOCK(各アプリケーションの具体的なロック取得情報)
SORT
STATEMENT
TABLE
UOW
• 必要なスイッチをONにした後、get snapshot for xxx(取得対象) で取得
12
5-1. データベースのモニター
 スナップショット・モニターの出力例
バッファー・プール・データ論理読み取り
バッファー・プール・データ物理読み取り
非同期プール・データ・ページ読み取り
バッファー・プール・データ書き込み
非同期プール・データ・ページ書き込み
バッファー・プール索引論理読み取り
バッファー・プール索引物理読み取り
非同期プール索引ページ読み取り
バッファー・プール索引書き込み
非同期プール索引ページ書き込み
バッファー・プール読み取り時間の合計 (ms)
バッファー・プール書き込み時間の合計 (ms)
・・・

=
=
=
=
=
=
=
=
=
=
=
=
8
0
0
0
0
0
0
0
0
0
0
0
論理読み取り
バッファープールから、データやイン
デックスを読み込んだ回数
物理読み取り
ディスクI/Oを伴うバッファープールの
読み込み回数
バッファー・ヒット率(%)
(1-(物理読み取り/論理読み取り))*100
バッファープール・ヒット率が低い場合は、バッファープールを大きくするな
ど設定値を変更する
 バッファープールにデータがキャッシュされていない場合は、一度ディスクから
読み込みバッファープールに読み込む時間が余分に発生する
13
5-1. データベースのモニター
 新しいスナップショットのビュー活用
スナップショットとビューの対応表 (一部抜粋)
スナップショット
ビュー
SYSIBMADM.SNAPDB
データベース
表スペース
データベースのデータベース・レベル情報およびカウンター
SYSIBMADM.SNAPSTORAGE_PATH データベースの自動ストレージ・パス情報
S
データベース・レベルの表スペース・アクティビティーに関する
SYSIBMADM.SNAPTBSP
情報。また、データベースに接続された各アプリケーションの
アプリケーション・レベル、およびデータベースに接続された各
アプリケーションがアクセスしている各表スペースの表スペー
ス・レベルの情報
表スペース構成に関する情報
SYSIBMADM.SNAPTBSP_PART
SYSIBMADM.SNAPCONTAINER
SYSIBMADM.SNAPTAB
表
動的SQL キャッシュ
説明
SYSIBMADM.SNAPDYN_SQL
表スペース・レベルでの表スペース・コンテナー構成に関する
情報
データベースに接続された各アプリケーションのデータベー
ス・レベルとアプリケーション・レベルの表アクティビティー情報。
データベースに接続されたアプリケーションが アクセスした 各
表の表レベルの表アクティビティー情報
データベースの SQL ステートメント・キャッシュからのステート
メント情報
ビューをselectすることにより、データを絞り込んだり、ソートした結果を
簡単にCSVファイルに出力可能
14
5-1. データベースのモニター
 イベント・モニター
– イベント・モニターは、指定されたイベントの発生時に情報を収集する
• イベントの例
– デッドロック検出時(デフォルト)
– 接続終了時
– SQLステートメント終了時
– 取得手順
• 取得したいイベントに対してイベント・モニターを登録して開始する。停止後、取得した
イベント・トレースをフォーマットして調査する。
create event monitor evmon1 for statements write to file ……
set event monitor evmon1 state 1
イベント・トレースを採取したい処理を実行
set event monitor evmon1 state 0
db2evmonコマンドでイベント・トレースをフォーマット 、あるいは GUIのイベント・
アナライザーを利用
drop event monitor evmon1
15
DB2 9.7で導入された新たなモニタリング基盤
 モニタリングのための基盤が大きく刷新された
– モニタースイッチを必要としないモニタリング機能
• モニタースイッチに対するこれまでのポリシー
– 基本はOFF、必要に応じてONに変更
– モニタイングスイッチは、インスタンス単位で設定
• 新しいインフラでのポリシー
– デフォルトでBASEスコープで取得、少しでも負荷を下げたい場合に
NONEに変更
– 新たなモニタリング要素の名称は「メトリック(metric)」
• 大きくリクエスト・メトリック、アクティビティ・メトリック、オブジェクト・メトリッ
クの3種類に分類できる。
– 取得インターフェースは表関数とイベントモニター
• 必要な情報のみ特定して収集可能
• スナップショットAPIを使用しないためフォーマットのオーバーヘッドを回
避可能
16
DB2 9.7の”メトリック”
新しいシステム・モニタリングのインフラの提供
 DB2 9.7から”メトリック”とよぶ新しいシステム・モニタリングのインフラが提供さ
れて、新しい表関数や新しいイベント・モニターの仕組みを提供
– 新しいモニタリングのインフラは、従来のSystem Monitorとは独立したインフ
ラを提供
• インメモリに展開された負荷の少ない仕組み
• 既存のsnapshotやmonitor switchとは別の仕組み
• データベースレベルのsnapshotの既存の仕組みを置き換え、システム性能情報の
提供はsnapshotからメトリックへ移行していく方針
– DB29.7でsnapshotの機能がなくなるわけではない
• DBM等のインスタンスレベルの情報を取得するためにはsnapshotが必要
システム・メトリック
アクティビティー・メトリック
データ・オブジェクト・メトリック
17
モニタリング情報取得のために追加されたコマンド群

モニタリング表関数
– SQLの形式で関数をコールし、モニタリング情報を取得
– 大きく3種類に分類できる

イベントモニター
– 2つのイベントモニターが追加された
Data object level
Package cache statement level
System level
MON_GET_SERVICE_SUBCLASS
MON_GET_WORKLOAD
MON_GET_PKG_CACHE_STMT
Activity level
MON_GET_CONNECTION
MON_GET_ACTIVITY_DETAILS
MON_GET_UNIT_OF_WORK
WORKLOAD
SERVICE
CLASS
MON_GET_TABLE
MON_GET_INDEX
MON_GET_BUFFERPOOL
MON_GET_TABLESPACE
MON_GET_CONTAINER
MON_GET_EXTENT_MOVEMENT_STATUS
Buffer
pool
Index
Tablespac
e Table
Table
Index
WORKLOAD
Event monitor
SERVICE
CLASS
Container
EVENT MONTIOR for Locking
EVENT MONITOR for Unit of work
18
システム・メトリックとデータ・オブジェクト・メトリックの設定
 新しいDB構成パラメーターでメトリックのモニタリングを設定
Request metrics
Object metrics
(MON_REQ_METRICS) = BASE
(MON_OBJ_METRICS) = BASE
MON_REQ_METRICS
MON_OBJ_METRICS
システム レベル
データ・オブジェクト レベル
MON_GET_SERVICE_SUBCLASS
MON_GET_TABLE
MON_GET_WORKLOAD
MON_GET_INDEX
MON_GET_BUFFERPOOL
MON_GET_CONNECTION
MON_GET_TABLESPACE
MON_GET_UNIT_OF_WORK
MON_GET_CONTAINER
MON_GET_EXTENT_MOVEMENT_STATUS
WORKLOAD
WORKLOAD
SERVICE
CLASS
SERVICE
CLASS
Buff
er
pool
Index
Tablespac
e Table Table
Index
Container
19
(参考)メトリックによる簡易パフォーマンステスト
–
TPCH95 Select
•
DB2 9.5のデフォルトのモニターリング設定
デフォルトのデータベース・モニター・スイッチ
バッファー・プール
ロック
ソート
ステートメント
表
タイム・スタンプ
作業単位
インスタンスとデータベースの状況をモニター
–
(DFT_MON_BUFPOOL) =
(DFT_MON_LOCK) =
(DFT_MON_SORT) =
(DFT_MON_STMT) =
(DFT_MON_TABLE) =
(DFT_MON_TIMESTAMP) =
(DFT_MON_UOW) =
(HEALTH_MON)
OFF
OFF
OFF
OFF
OFF
ON
OFF
= ON
TPCH97 Select Metrics NONE
•
DB2 9.7でデフォルトのモニタースイッチで、メトリックをNONEに設定
モニター収集設定
要求メトリック
(MON_REQ_METRICS) = NONE
アクティビティー・メトリック
(MON_ACT_METRICS) = NONE
オブジェクト・メトリック
(MON_OBJ_METRICS) = NONE
作業単位イベント
(MON_UOW_DATA) = NONE
ロック・タイムアウト・イベント
(MON_LOCKTIMEOUT) = NONE
デッドロック・イベント
(MON_DEADLOCK) = WITHOUT_HIST
ロック待機イベント
(MON_LOCKWAIT) = NONE
ロック待機イベントのしきい値
(MON_LW_THRESH) = 5000000
–
TPCH97 Select Metrics BASE
•
DB2 9.7でデフォルトのモニタースイッチで、メトリックスをBASEに設定
モニター収集設定
要求メトリック
(MON_REQ_METRICS) = BASE
アクティビティー・メトリック
(MON_ACT_METRICS) = BASE
オブジェクト・メトリック
(MON_OBJ_METRICS) = BASE
作業単位イベント
(MON_UOW_DATA) = NONE
ロック・タイムアウト・イベント
(MON_LOCKTIMEOUT) = NONE
デッドロック・イベント
(MON_DEADLOCK) = WITHOUT_HIST
ロック待機イベント
(MON_LOCKWAIT) = NONE
ロック待機イベントのしきい値
(MON_LW_THRESH) = 5000000
20
(参考)簡易パフォーマンステスト
D F T_M ON OF F
80000
70000
60000
TPS
50000
40000
30000
20000
TPCH95 Select
TPCH97 Select Metrics N one
TPCH97 Select Metrics B as e
10000
300
250
200
150
100
50
0
0
Total U s er

ユーザー数が100を超えるとパフォーマンスの差が現れはじめます

DB2 9.7 ではパフォーマンスが改善されていることから DB2 9.5 よりもTPSが良いことがわかります。

メトリックNONEとBASEでは、NONEの方がTPSが良いですが、いずれの場合もDB2 9.5よりもTPSが良いことがわかります。

メトリックBASEでも、ユーザー数が100未満の環境であれば、さほど影響の違いが無いことがわかります。
21
5-1. データベースのモニター
 db2batch ベンチマーク・ツール・コマンド
 DB2が提供するベンチマーク・ツール
– ファイルより読み取ったSQLステートメント(複数可能)を実行し、結果セットを
SQL
戻し、処理時間、ならびにパフォーマンス情報を収集
入力ファイル
 オプションによって制御
– 出力ファイルや標準出力に送るフェッチ済み行の数
– 応答セットからフェッチする行の数
db2batch (SQL実行)
– パフォーマンス情報のレベル
•
•
•
•
経過時間、CPU時間
結果セットの出力の表示
スナップショット・モニター情報
Explainモードの設定
DB2
パフォーマンス情報
実行時間 / 結果セット
出力ファイル
標準出力
22
5-1. データベースのモニター
 db2batch 出力例
db2batch -d DB名 –f 入力SQLファイル名 –o p 5 r 0 の結果例
取得するパフォーマンス情報のレベル
* タイム・スタンプ: Wed Dec 13 2006 11:14:01 東京 (標準時)
--------------------------------------------* SQL ステートメント番号 1:
select count(*) from employee where empno between '000010' and '200010';
1
----------* 1 行取り出され、0 行出力されました。
実行時間
* 経過時間:
0.000992 秒
モニター情報
インスタンス名
ノード名
ノード・タイプ
スナップショット・タイム・スタンプ
= DB2
出力行数
TIMESTAMP
SQLステートメント
インスタンス名
=
= ローカルとリモート・クライアントを持つ Enterprise Server Edition
= 2005-12-13 11:14:01.450458
データベース・マネージャー・スナップショット
スナップショット・モニターからの出力(内容は省略)
(省略)
* サマリー表:
タイプ
番号
反復回数 合計回数
最小回数
最大回数
算術平均
幾何平均
行が取り出されました 行が出力されました
-------------- ----------- ----------- -------------- -------------- -------------- -------------- -------------- -------------------ステートメント
1
1
0.000992
0.000992
0.000992
0.000992
0.000992
1
0
* 合計項目数:
1
* 合計時間:
0.000992 秒
* 最小時間:
0.000992 秒
実行時間サマリー
* 最大時間:
0.000992 秒
* 算術平均時間:
0.000992 秒
* 幾何平均時間:
0.000992 秒
23
5-1. データベースのモニター
 db2pd
 モニター及びトラブル・シューティング用のツール
– 1つのコマンドで、既存のDB2コマンドやその他のコマンドと同様の情報を取得可能
– DB2が使用しているメモリー上の情報を読み取る
– スナップショット・モニターと異なり、パフォーマンスに影響を与えない
• スナップショット・モニターやイベント・モニターと異なり内部的にロックやラッチを
取らない。したがって、高速に実行することができ、かつ、データベース本体へ
与える影響が小さい。
– データベースに接続せずに利用可能
– ハングやローダウン時の資料収集も可能
• DB2エンジンの外で実行させるので、DB2エンジンがハングしている状態でも
使用可能
– vmstat,iostatのように実行する間隔と回数を指定して実行することができる。
24
5-1. データベースのモニター
 db2pdで取得できる情報
 アプリケーション
-applications
 メモリー・プール
-mempools
 エージェント
-agents
 メモリー・セット
-memsets
 トランザクション
-transactions
 DBM構成パラメーター
-dbmcfg
 バッファープール
-bufferpools
 DB構成パラメーター
-dbcfg
 ログ
-logs
 カタログ・キャッシュ
-catalogcache
 ロック
-locks
 表と索引
-tcbstats
 表スペース
-tablespaces
 表の再編成
-reorg
 動的SQL
-dynamic
 リカバリー
-recovery
 静的SQL
-static
 REOPT
-reopt
 FCM
-fcm
 OS
-osinfo
list applications
 対応するDB2コマンド
– db2 get snapshot
– db2 get dbm cfg
– db2 list applications
– db2 get db cfg
– db2mtrk
snapshot
db2mtrk
等
db2pd
25
5-1. データベースのモニター
db2pd 実行例
 -utilities
ユーティリティー、実行中のジョブに関する情報を取得する
C:¥TAKUMI>db2pd -utilities -db sample
Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:57:50
Utilities:
Address
ID
Type
Priority
DBName
StartTime
0x0096E710 2
LOAD
0
TPCC
Thu Mar 09 13:40:00 2006
INDEXING REPLACE COPY NO DB2ADMIN.ITEMi
2
NumPhases
CurPhase
Description
2
OFFLINE LOAD DEL AUTOMATIC
Progress:
Adress
ID
PhaseNum
0x0096E9C0 2
1
0x0096EAA8 2
2
Description
SETUP
LOAD
StarTime
CompletedWork
TotalWork
Thu Mar 09 13:40:00 2006
0 bytes
0bytes
Thu Mar 09 13:40:00 2006
93274rows
1000822rows
LOADが終了した行数
全LOAD行数
※ LOAD実行中に取得した db2pd -utilitiesコマンドの出力
26
クイズ
 Currently Committedをモニターするには?
1) EXPLAINを利用する
2) db2pdを利用する
a) db2pd –tcbstats
b) db2pd –logs
a) db2pd –tcbstats
– CCLogReads
• 表に関して現在コミット済みバージョンの行が検索された回数
b) db2pd –logs
– Cur Commit Disk Log Reads
• (ログ・バッファーではなく) ディスクからのログ読み取りにより、現在コミット済みバージョンの
行が検索された回数
– Cur Commit Total Log Reads
• 現在コミット済みバージョンの行が、ログ (ログ・バッファーおよびディスク) から検索された合
計回数
27
例)
Curently Commitが使用されたことを示すExplainの例
2) TBSCAN: (Table Scan)
Cumulative Total Cost: 3579.25
Cumulative CPU Cost: 2.70981e+09
Cumulative I/O Cost: 28588
Cumulative Re-Total Cost: 987.011
Cumulative Re-CPU Cost: 2.612e+09
Cumulative Re-I/O Cost: 0
Cumulative First Row Cost: 3579.25
Estimated Bufferpool Buffers: 28588
Arguments:
--------CUR_COMM: (Currently Committed)
TRUE
・
・
28
5-2. 問題判別

エラー・コードによる判別
– エラー・メッセージやエラー・コードを参考にして原因を追究
SQL0204N "ADMINISTRATOR.TB" は未定義の名前です。 SQLSTATE=42704
エラー・コード
エラー・メッセージ
頭のアルファベットでエラーを出している内容を判断
SQL:SQLメッセージ
SQLJ:DB2Java組み込みSQLメッセージ
DB2:CLPまたはコマンド・センターのメッセージ
CCA:クライアント構成アシスタントのメッセージ …etc
下1桁でエラーの重要性を判断
C:重大メッセージ
E:緊急メッセージ
N:エラー・メッセージ
W:警告メッセージ
I:通知メッセージ
詳しくは、メッセージ・リファレンス参照
DB2のコマンドラインでは、「?」コマンドを使用して簡単な解説を得ること
ができる
db2 “? SQLXXXXX”
29
5-2. 問題判別
 FFDC (First Failure Data Capture)

db2diag.log
– DB2の基本診断ログ
– 予期しないエラーが発生した場合には、まずdb2diag.logを参照する

管理通知ログ
– 従来のdb2diag.logファイルに出力される診断レコードのうち、データベース管
理者が読むべき内容を別途出力している
• WINDOWS
• UNIX
イベント・ログに書き込まれる
「インスタンス名.nfy」というテキスト・ファイルに書き込まれる
– イベント・タイプおよび情報のレベルは、データベース構成パラメーター
「NOTIFYLEVEL」で指定(0-4、デフォルト3)
– V7にて、db2alert.logを使用していた場合、代わりに管理通知ログを使用する

ダンプ・ファイル
※お客様サポート用
– DB2のプロセスまたはスレッドに障害が起きてエラーを通知する場合に、外部
のバイナリー・ダンプ・ファイルにも追加情報が記録される

トラップ・ファイル
※お客様サポート用
– OSのトラップやセグメンテーション違反、例外などにより処理が続行できないと
きに生成される
30
5-2. 問題判別
 Db2diag.log
– 目的
• DB2のエラー、警告、通知メッセージを記録
– 解析方法
問題判別に
最も重要な
情報源
• db2diag.log(テキスト・ファイル)の参照
• db2diagコマンド(V8.2以降)
– 設定パラメータ
• 出力先はDIAGPATH(DBM CFG)にて設定
• 詳細レベルはDIAGLEVEL(DBM CFG)にて設定
– 0 - 診断データを取り込まない
– 1 - 重大エラーのみ
– 2 - すべてのエラー(重大エラーおよび非重大エラー)
– 3 - すべてのエラー、警告 (デフォルト値) ※通常運用時の推奨設定値
– 4 - すべてのエラー、警告、通知メッセージ ※問題発生/再現時の推奨設定値
– 考慮点
• db2diag.logファイルは自動的には削除されない。計画的なバックアップ/削除が必
要
31
5-3. チューニング
 パフォーマンス上の問題が起きた場合の基本的な対応手順
– パフォーマンス・チューニングの進め方
• 全体状況の確認
• 個々のSQLの調査が必要な場合
• 正常稼動時の記録の必要性
32
5-3. チューニング
 パフォーマンス・チューニングの進め方
問題発生
全体状況の確認
個々の状況の調査
個々の状況の調査
個々の状況の調査
<= 必ずシステム全体を見渡して、
何が起きているかを確認します
<= 個々について、OS、DB2、アプ
OS DB2
リケーションから調査を進めま
す
個々の状況に対して解決策の検討
個々の状況に対して解決策の検討
個々の状況に対して解決策の検討
個々の解決策の効果確認
個々の解決策の効果確認
個々の解決策の効果確認
適用時期および運用方法の検討
本番適用
<= 解決策の効果が確認されたら、
適用時期、および、その適用に
より運用面の変更内容を検討
します
33
5-3. チューニング
 全体状況の確認
– 問題が報告された場合には、必ず、システム全体で何が起きているのかを確認し、問題
への対応について、重大な漏れが発生しないようにします。以下は確認項目(例)です。
確認項目
確認のポイント
確認ツール/コマンド
OS, HWのエラー状況
OSおよびHWのエラーが起きていなかったか、ま
た、その影響の確認
OSおよびHWの運用・監視手
順に従ってください
システム資源使用状況の確認
CPU, Memory, I/Oの状況について確認
- vmstat
- Iostat
DB2エラー状況
DB2のエラーや、その他特別な現象が起きていた
かを確認
- db2diag.log ファイルの中を確
認します
DB2アプリケーション稼動状況
UOW実行中、 UOW待機中、ロック待ち、コミット
アクティブの状況確認
- db2 list applications show
detail
DB2内部稼動状況
バッファープールヒット率、ソート処理、ロック処理、
などの基本状況の確認
-database snapshot
アプリケーション稼動
Appl PGM, バッチ処理用shell等のアプリケーショ
ン側で、エラーや警告が出ていないかを確認
-(option) all snapshot on db
- アプリケーションのエラー・メッ
セージやアプリケーション・ログ
の確認
34
5-3. チューニング
 個々のSQLの調査が必要なケース
– 全体状況の確認をした上で、個々のSQLレベルでの分析が必要となるケースがあり
ます。
– 以下のような手順で作業を進めます。
• 問題となっているSQLの抽出
– 使用ツール例:Statement イベント・モニター
• アクセス・プランの確認
– 使用ツール例:db2exfmt
• SQL実行状況の分析
– 使用ツール例:
・db2batch
・スナップショット・モニター
・Statementイベント・モニター
• 対応方法の検討
35
5-3. チューニング
 正常稼動時の記録の必要性
– パフォーマンスに関する問題が起きたときに、そのときの状況を調査した資料だけ
では判断が難しく、正常稼動していたときのシステム状況と比較したい場合が多々
あります。
– 正常稼動時の情報を計画的に記録することお薦めします。
– 正常稼動時の記録(例)
• 「全体状況の確認」に挙げたツール/コマンドの出力結果およびログ
– db2diag.log
– database snapshot
– (list applications show detail)
– vmstat, iostat, アプリケーション・ログ
• その他
– データベース毎の表・表スペース定義情報、統計情報
> db2look –d <DB名> -a –e –l –m –o <DB名>_db2look.out
– 性能上重要なSQLのアクセス・プラン(db2exfmt 出力)
36
Fly UP