...

DB2 第2章 の運用管理

by user

on
Category: Documents
481

views

Report

Comments

Transcript

DB2 第2章 の運用管理
<2009年12月>
第2章 DB2の運用管理
本書に含まれている情報は、正式なIBMのテストを受けていません。また、明記にしろ、暗黙的にしろ、なんらの保証もなしに配布されるものです。
この情報の使用またはこれらの技術の実施は、いずれも、使用先の責任において行われるべきものであり、それらを評価し、実際に使用する環境に統合する
使用先の判断に依存しています。それぞれの項目は、ある特定の状態において正確であることがIBMによって調べられていますが、他のところで同じまたは同
様の結果が得られる保証はありません。これらの技術を自身の環境に適用することを試みる使用先は、自己の責任において行う必要があります。
© Copyright IBM Japan Co., Ltd. 2009
内容
• データベースの運用管理とは
• バックアップとリストア
• モニタリング
• 表のメンテナンス
• データの投入・抽出・移動
• 統計情報の収集
• 表の再編成
2
© 2009 IBM Corporation
データベースの運用管理に伴う主なタスク
RUNSTATS
表のメンテナンス
統計情報や再編成
の実施
REORG
権限・特権
SYSADM
適切なアクセス権限、
実行権限の付与
モニタリング
アクセス状況やリ
ソースの状態の把
握と問題判別
DBADM
SYSCTRL
SYSMAINT
監査
活動履歴の取得、
解析
-----------------------------------------------------------------------
回復管理
定期的なバックアップの
取得と障害復旧の計画
3
データ移動
データの抽出・投入・
移動
© 2009 IBM Corporation
ブランク・
ブランク・ページ
4
© 2009 IBM Corporation
バックアップとリストア
• DB2/Oracleで
でバックアップと
バックアップとリストアの
リストアの概念はほぼ
概念はほぼ同様
はほぼ同様
• どちらもバックアップ・イメージとログファイルを使用して回復
• BACKUP DATABASEコマンドを使用してバックアップ
BACKUP DATABASE SAMPLE TO /backup
• RESTORE DATABASEとROLLFORWARD DATABASEコマンドを使用し
て回復
RESTORE DATABASE SAMPLE FROM /backup
ROLLFORWARD DATABASE SAMPLE TO END OF LOGS AND COMPLETE
TO END OF
BACKUP
1. バックアップファイルからの
バックアップファイルからの復旧
からの復旧
TO yyyy-mm-dd-hh.mm.ss
Crash
BACKUP
DATABASE
Backup file
5
Log files
TO END OF
LOGS
2. ログファイルから
ログファイルからバックアップ
からバックアップ取得後
バックアップ取得後
の更新を
更新を適用
© 2009 IBM Corporation
DB2バックアップのバリエーション
• 増分バックアップ
増分バックアップと
バックアップと差分バックアップ
差分バックアップ
• 増分バックアップ
• 最後のフルバックアップ以降の更新を取得
• 更新が繰り返されるにつれて、徐々に増分バックアップのサイズが大きくなる
Sunday
Mon
Tue
Wed
Thu
Fri
Sat
Full
Sunday
Full
• 差分バックアップ
• 最後の(フルもしくは差分)バックアップ以降の更新を取得
• リストアには全てのバックアップ・ファイルが必要
Sunday
Full
6
Mon
delta
Tue
Wed
delta
Thu
delta
Fri
delta
Sat
delta
Sunday
Full
© 2009 IBM Corporation
DB2バックアップのバリエーション
• 表スペースバックアップからの
スペースバックアップからのリカバリー
からのリカバリー
• 複数の表スペースバックアップから、データベース全体の復旧が可能
• どのバックアップファイルを使用するかは、DB2が自動的に判断可能
SYSACATSPACE
USERSP1
USERSP2
USERSP3
BK1 表スペース・バックアップ
Time
BK2
表スペース・バックアップ
BK3
表スペース・バックアップ
BK4
表スペース・バックアップ
2. 表スペースバックアップ間
スペースバックアップ間のログ
ファイルを
ファイルを適用して
適用して整合性
して整合性を
整合性を確保
Log files
Table
space
BK1
backup
7
Crash
BK2
BK3
BK4
1. 4つの
つの表
つの表スペース・
スペース・バックアップを
バックアップを元
に、データベースを
データベースを復旧
© 2009 IBM Corporation
DB2バックアップのバリエーション - Split Mirror
• ストレージの
ストレージのコピー機能
コピー機能を
機能を使用した
使用したバックアップ
したバックアップ
•
•
•
データベースのクローンを作成し、テスト環境や解析用データベースとして使用可能
障害に備えて、ウォーム・スタンバイのデータベースを作成することが可能
大規模DBにて、 DB2のBackup/Restoreユーティリティーを使用するよりも高速にバックアップ/リストアが可能
• Split mirrorとは、バックアップの目的や、データベースのクローンとして再利用可能な、独立したデータ
ベース・ディスク領域コピーのこと
• Split mirrorの作成はストレージ・デバイスのコピー機能を利用
• ストレージ・デバイスで利用可能なハードウェア・ベースの高速コピー機能を使用して、データベースのコピー(Split
mirror)を作成することが可能
• DS8000/6000/4000シリーズのFlashCopyなどを利用した、Diskボリュームコピー
DBサーバー
サーバー
バックアップ管理
バックアップ管理・
管理・サーバー
ストレージ機能によって、
短時間でのコピー完了
DB
8
Copy
DB
Split mirror
© 2009 IBM Corporation
参考: 高速コピー機能の例:DS8000/6000 FlashCopy
ディスク装置のH/W機能によって、瞬時にデータのコピーを取得する高速コピー機能
同期確立後は、システムからはコピー完了状態に見え、ソース(コピー元)とターゲット(コピー先)の双
方を利用可
同期確立後に物理データのバックグラウンドコピーを開始する
FlashCopyの関係確立後の更新はターゲットには反映されない
FlashCopy
実行
システムから
システムから見
から見た論理Volume
論理Volume
コピー元
コピー先
コピー元
コピー先
コピー元
コピー先
コピー元
コピー先
瞬時
データ・
ータ・コピ
コピー開始
するESS
対応する
ESS内
する
対応
ESS内のVolume
コピー元
コピー先
FlashCopy実行前
実行前
コピー元
コピー先
論理コピー
論理コピー:
コピー:同期確立
この時点
時点で
この
時点でユーザーは
ユーザーは利用可能
物理データコピー
物理データコピー
処理の
処理の実行終了
物理テ
にもかかわらず、
物理データは
ータはコピ
コピー未完了にもかかわらず
未完了にもかかわらず、
システムからは
完了と見える
システムからは既
からは既にコピ
コピー完了と
9
© 2009 IBM Corporation
参考:データベース稼働状態でのSplit mirror取得
•
DB2を
を停止することなく
状態で
mirrorイメージ
イメージを
停止することなく、
することなく、Online状態
状態で整合性の
整合性の取れたSplit
れた
イメージを取得するため
取得するため
に、データベースへの
データベースへの書
への書き込みを一時停止
みを一時停止する
一時停止する機能
する機能
•
set write suspend for database
•
•
•
•
すべてのTablespaceとLogに対する書き込みを禁止
書き込み禁止状態になったDBから、FlashCopyなどのストレージ・コピー機能を使ってSplit
mirrorイメージを取得する
SELECT/INSERT/UPDATE/DELETE処理は、表スペースやLOGのDISKへの書き込みを発生しない限り実
行可能
set write resume for database
•
•
WRITE SUSPEND状態の解除
Split mirrorイメージの取得完了後、直ちにこのコマンドで書き込み禁止状態を解除する
・瞬間的な書き込み停止
・DB停止は不要
① SET WRITE
SUSPEND (書き
込みはWAIT)
WRITE
SUSPEND
③ SET WRITE
RESUME (書き
込み再開)
10
DB
② FlashCopy
(リンク確立
リンク確立は
確立は瞬時
に完了)
完了)
DB
④ 物理コピー(物理的
なコピーは非同期)
© 2009 IBM Corporation
Monitoring DB2 and Oracle
• DB2の
のモニタリング
• Performance expert
• 複数のDB2を一括してモニタリング・管理
可能なGUIを提供
• DB2 管理ビュー
• DB2のアクティビティを知るための多数の
管理ビューが用意されている
• ビューとして提供されるため、SQLとの親
和性が高い
• 出力結果を定期的にテーブルに格納する
ことで、statspackと同様のデータ蓄積が可
能
11
• Oracleの
のモニタリング
• Enterprise manager
• ブラウザによるDB活動のモニタリ
ング
• Statspack
• Oracle標準で提供されているパ
フォーマンス・レポートツール
• v$ビューからデータと取得し、解析
する
• v$ ビュー
• 動的パフォーマンスビュー
• データベース活動に関する蓄積値
を提供する
© 2009 IBM Corporation
DB2が提供するモニタリングツール
• GUIによる
によるリアルタイム
によるリアルタイムの
リアルタイムのモニタリングと
モニタリングと分析
• Data studio admin console, Performance expert
• リアルタイムの
稼働状況モニタリング
ベース)
リアルタイムのDB2稼働状況
稼働状況モニタリング(
モニタリング(CUIベース
ベース)
• db2top (character based tool)
• ある一時点
ある一時点の
一時点の稼働情報を
稼働情報を取得
• Snapshot monitor, db2pd, system/activity/data object metrics
• ある期間
ある期間に
期間に発生した
発生したイベント
したイベントを
イベントを網羅的に
網羅的に収集
• Event monitor
• 事前に
事前に定義したしきい
定義したしきい値
したしきい値に抵触すると
抵触するとアラート
するとアラートをあげる
アラートをあげる
• Health monitor
12
© 2009 IBM Corporation
DB2 Performance Expert
複数のDB2インスタンスを、統合されたインターフェースからモニタリング・
分析・管理することが可能
• DB2 PE の機能:
機能
• 緊急を要する状況への迅速な
対応
• データベース管理の効率化
• システムの日常の状態を蓄積
• DBの使用傾向から、HW資源
有効活用をプラン
• パフォーマンス・レポートの容易
な作成
13
2
© 2009 IBM Corporation
db2top
• DB2の
の活動を
活動をリアルタイムで
リアルタイムでモニタリングする
モニタリングするツール
するツール
db2top -d sample
•
telnetやssh等のターミナルセッションから起動する
•
データベースの挙動や問題点を素早く把握するために効果的
•
サポートされるバージョン
:V9.1 FP5以降, V9.5 FP2以降,V9.7
•
サポートするプラットフォーム
:AIX, Linux, 及び Solaris
14
© 2009 IBM Corporation
Snapshot monitor
• 稼動中の
稼動中のデータベースの
データベースの、ある特定時点
ある特定時点での
特定時点での状況
での状況を
状況を知る
• GET SNAPSHOTコマンド
コマンドを
コマンドを利用して
利用して取得
して取得
db2 get snapshot for all on sample
•
管理ビューからはSQL経由で同等の情報が取得可能
• 稼働情報取得の
稼働情報取得の流れ
•
•
•
モニタリング
開始
15
項目のモニタースイッチをON
• データベース・マネージャー構成パラメーターの設定、あるいは
• UPDATE MONITOR SWITCHESコマンド
モニター項目の値のリセット
• RESET MONITORコマンド
定期的にスナップショット・モニターを取得する
スナップショット取得
情報蓄積
スナップショット取得
情報蓄積
© 2009 IBM Corporation
Snapshot monitor
• データベースの
データベースのスナップショット・
スナップショット・モニター出力例
モニター出力例
get snapshot for database on dbname
データベース・スナップショット
データベース名
データベース・パス
入力データベース別名
データベース状況
カタログ・データベース・パーティション番号
カタログ・ネットワーク・ノード名
データベース・サーバーで実行中のOS
データベースのロケーション
最初のデータベース接続タイム・スタンプ
最後のリセット・タイム・スタンプ
最後のバックアップ・タイム・スタンプ
スナップショット・タイム・スタンプ
=
=
=
=
=
=
=
=
=
=
=
=
TPCC
/db2/NODE0000/SQL00002/
TPCC
アクティブ
0
AIX
ローカル
08/04/2009 22:36:17.798958
08/04/2009 22:41:26.680407
08/04/2009 22:41:48.745114
接続用最高水準点
アプリケーション接続
2 次接続合計
現在のアプリケーション接続
db マネージャーで現在実行中のアプリケーション
アプリケーションに関連したエージェント
アプリケーションに関連した最大エージェント
最大調整エージェント
ロック保留
ロック待機
ロック上で待機される時間データベース (ms)
使用中のロック・リスト・メモリー (バイト)
デッドロック検出
16
=
=
=
=
=
=
=
=
=
=
=
=
=
5
3
0
3
3
3
5
5
27
0
177489
2808
0
ロック・エスカレーション
排他ロック・エスカレーション
ロック上で待機中のエージェント
ロック・タイムアウト
未確定トランザクション数
専用ソート・ヒープ割り振りの合計
共有ソート・ヒープ割り振りの合計
共有ソート・ヒープの最高水準点
ソートの合計
ソート時間の合計 (ms)
ソート・オーバーフロー
アクティブ・ソート
バッファー・プール・データ論理読み取り
バッファー・プール・データ物理読み取り
非同期プール・データ・ページ読み取り
バッファー・プール・データ書き込み
非同期プール・データ・ページ書き込み
バッファー・プール索引論理読み取り
バッファー・プール索引物理読み取り
非同期プール索引ページ読み取り
バッファー・プール索引書き込み
非同期プール索引ページ書き込み
バッファー・プール読み取り時間の合計 (ms)
バッファー・プール書き込み時間の合計 (ms)
非同期読み取り合計経過時間
非同期書き込み合計経過時間
非同期データ読み取り要求
非同期索引読み取り要求
LSN Gap クリーナー・トリガー
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0
0
0
0
0
256
0
0
0
0
0
1
60921
56589
39875
8
7
68
55
0
0
0
49197
536
26121
531
3179
0
0
© 2009 IBM Corporation
DB2 管理ビューとOracle v$ビュー
• DB2/Oracle共
共にインスタンス・
インスタンス・データベースの
データベースの稼働状態を
稼働状態を取得するための
取得するための
ビューが
ビューが存在する
存在する
• 接続情報を取得するビューの使用例
• Oracle
• DB2
:
:
SELECT * FROM V$SESSION
SELECT * FROM SYSIBMADM.SNAPAPPL
• 管理ビューとv$ビューの対応
DB2 administrative view
SYSIBMADM.SNAPDBM
SYSIBMADM.SNAPDB
SYSIBMADM.SNAPTBSP
SYSIBMADM.SNAPCONTAINER
SYSIBMADM.SNAPAPPL
SYSIBMADM.SNAPSTMT
SYSIBMADM.SNAPLOCK
SYSIBMADM.SNAPBP
SYSIBMADM.LONG_RUNNING_SQL
17
Oracle
V$INSTANCE
V$DATABASE
V$TABLESPACE
V$DATAFILE
V$SESSION
V$SQLTEXT
V$LOCK
V$SYSSTAT
V$SESSION_LONGOPS
© 2009 IBM Corporation
問題判別時に参照するログ
• IBM DB2/Websphereを
を使用した
システムの
使用したWebシステム
した
システムの場合
nmon/
vmstat
ps
nmon/
vmstat
ps
errpt
errpt
クライアント
DBサーバ(AIX)
APサーバ(AIX)
IHS
plugin
WAS
Web
コンテナ
データ
ソース
DB2
Server
JDBC
Driver
Access_log
http_plugin.log
JDBC
トレース
Snapshot
Error_log
Native_stderr
18
db2diag.log
javacore
Event
monitor
SystemErr.log
db2pd
SystemOut.log
db2exfmt
© 2009 IBM Corporation
問題判別のためのログ
• 診断ログ
)
診断ログ(
ログ(db2diag.log)
• DB2のエラー情報を出力するログファイル
• デフォルトでは「$HOME/sqllib/db2dump」配下に出力される
• 変更する場合DBM構成パラメーターのDIAGPATHで指定
• 出力する方法の詳細度をDIAGLEVEL DBM構成パラメーターで指定
•
•
•
•
•
•
0 - DIAG情報を出力しない
1 - 重大エラーのみ
2 - すべてのエラー
3 - すべてのエラーおよび警告
4 - すべてのエラー、警告、および通知メッセージ
デフォルト値は3、通常はデフォルト値のまま使用することを推奨
イベントの
重大度
• db2diagコマンドで整形やフィルターが可能
19
2009-06-25-08.42.26.203700-300 I7497A313
LEVEL: Event
PID
: 1466424
TID : 1
PROC : db2start
INSTANCE: tukiv97
NODE : 000
EDUID
: 1
FUNCTION: DB2 UDB, base sys utilities, sqleIssueStartStop, probe:21
DATA #1 : <preformatted>
Single node instance [0] is starting
プロセス名
イベントの内容を表す
メッセージ
© 2009 IBM Corporation
問題判別のためのログ
• 管理通知ログ
インスタンス名
)
管理通知ログ(
ログ(<インスタンス
インスタンス名>.nfy)
• 管理者が見るべきログだけが出力されるログファイル
• ダンプ情報や内部のエラーコード等は出力されないため可読性が高い
• ADMメッセージの内容は全てマニュアルに記載されているため、個別に監視の要・不要
を検討可能
• ADMメッセージ
• ADMxxxxC
• ADMxxxxE
:DB2のプロセスダウン等、クリティカルな障害
:重大度は高いが、サービスの全面停止には至らない事象
• ADMxxxxW
• ADMxxxxI
個別アプリケーションにエラーが戻る可能性がある
:警告メッセージ。多くの場合監視は不要
:インフォメーション。障害監視は不要
2009-08-08-20.31.12.844352
Instance:tukiv97
PID:1167498(db2wdog 0)
TID:258
Appid:none
base sys utilities sqleWatchDog Probe:20
Node:000
全てのメッセージにはADMxxxの
エラーコードが付与される
ADM0503C An unexpected internal processing error has occurred. All DB2
processes associated with this instance have been shutdown. Diagnostic
information has been recorded. Contact IBM Support for further assistance.
20
© 2009 IBM Corporation
表のメンテナンス
• データの
データの抽出・
抽出・投入・
投入・移動
• 統計情報の
統計情報の収集
• 表の再編成
21
© 2009 IBM Corporation
データの抽出・投入・移動のためのユーティリティ
• DB2の
の世界では
形式(
)のファイルを
世界ではDEL形式
では
形式(CSV)
ファイルを経由することが
経由することが一般的
することが一般的
• データ抽出用
データ抽出用の
抽出用のユーティリティ:
ユーティリティ:EXPORT
•
データベースからフラット・ファイルへデータを抽出
•
EXPORTコマンドで記述されたSELECT文の結果のデータを抽出
• データ投入用
データ投入用の
投入用のユーティリティ:
ユーティリティ:IMPORT/LOAD
•
フラットファイルからデータベースへデータを投入
•
IMPORTは内部的にSQLを利用する
•
LOADはデータページを生成して直接表スペースへ書き込む
データベース
EXPORT DEL形式
id
001
002
003
22
name
nm1
nm2
nm3
tel
12
34
56
IXF形式
ASC形式
IMPORT/
LOAD
データベース
id
001
002
003
name
nm1
nm2
nm3
tel
12
34
56
© 2009 IBM Corporation
データ移動ユーティリティ
• Oracle SQL*Loaderの
の移行
• ダイレクトパス・ロード
• データベース・バッファーをバイパスし、データベースに直接フォーマット済みページを
書き込む
• 高速なデータ投入が可能
DB2 LOAD utility
• 従来型パス・ロード
• SQL*LoaderがINSERTを生成して、データベースに対してデータを投入する
• ダイレクトパスと比較して遅い
DB2 IMPORT utility
• 参照制約やチェック制約の制約で従来型パスを使用している場合、DB2ではLOADが使用
可能。(LOAD完了後にSET INTEGRITYコマンドを実行する)
23
© 2009 IBM Corporation
データ移動ユーティリティ
• SQL*Loader のコントロール・
コントロール・ファイル
• 固定長フォーマットをロードするコントロールファイルの例
• 固定長フォーマットの場合、POSITION() 指定を METHOD Lを用いた指定に
変更する
Oracle SQL*Loader control file
LOAD DATA
INFILE '/home/ora_usr/accounts.dat'
INTO TABLE accounts
( acct_id POSITION(0001:0003) NUMBER
,dept_code POSITION(0004:0006) CHAR
,acct_desc POSITION(0009:0100) VARCHAR2
,max_employees POSITION(0101:0103) NUMBER
,current_employees POSITION(0104:0106) NUMBER
,num_projects POSITION(0107:0107) NUMBER )
24
DB2 Load command
LOAD FROM
'/home/ora_usr/accounts.dat'
of ASC
METHOD L
( 0001 0003
,0004 0006
,0009 0100
,0101 0103
,0104 0106 )
INSERT INTO accounts
( acct_id
,dept_code
,acct_desc
,max_employees
,current_employees );
© 2009 IBM Corporation
データ移動ユーティリティ
• 可変長データ
可変長データの
データの場合の
場合のコントロールファイル
•
•
可変長データの場合のコマンド比較
シンプルなコントロールファイルについては、下記のIBM Redbookで変換用のPerlスクリ
プトが使用可能
• Redbook "Oracle to DB2 Conversion Guide for LUW", Appendix E, “Converter for
SQL*Loader” on page 673.
• http://www.redbooks.ibm.com/abstracts/sg247048.html
Data file to load
101,"ACT","Major Bank Co.",30,11,4
301,"ACT","Large Telco Inc.",30,0,4
101,"IT","Huge Software Co.",50,0,4
203,"MKT","Basic Insurance Co.",15,0,3
Oracle SQL*Loader control file
INFILE '/home/ora_usr/accounts.dat'
INTO TABLE accounts
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED
BY '"'
( acct_id
,dept_code
,acct_desc
,max_employees
,current_employees
,num_projects )
25
DB2 Load command
LOAD FROM
'/home/ora_usr/accounts.dat'
of ASC
MODIFIED BY COLDEL,
METHOD P (1, 2, 3, 4, 5 )
INSERT INTO accounts
( acct_id
,dept_code
,acct_desc
,max_employees
,current_employees );
© 2009 IBM Corporation
データ移動ユーティリティ
• db2move
• Oracleの
のimp/expと
と同様、
同様、スキーマを
スキーマを指定した
指定したデータ
したデータの
データの抽出/投入
抽出 投入/移動
投入 移動が
移動が可能。
可能。
• 指定可能なアクション
• EXPORT
•
•
指定した条件に一致するテーブルを抽出する。条件指定がない場合は全てのテーブルが対象。
抽出したテーブルの情報はdb2move.lstファイルに記録される
• IMPORT
•
db2move.lstファイルの情報を元にIMPORTによるデータの投入を行う
• LOAD
•
db2move.lstファイルの情報を元
に、LOADによるデータの投入を
行う
• COPY
•
テーブルのコピーを行うオプション。
同じデータベース無いだけでなく、
複数のデータベースをまたがった
コピーが可能
SRCDB
DB2MOVE
Schema: SANTA
Views
Table
Table
Schema TEST
Trigger
Index
Index
Sequence
View
Table
Table
Trigger
Routine
db2move SRCDB COPY –sn “SANTA” -co target_db
TESTDB –u db2admin –p password
26
TESTDB
Index
Index
Sequence
Routine
© 2009 IBM Corporation
データ移動ユーティリティ
• カーソルからの
実行
カーソルからのLOAD実行
からの
• 通常LOADはフラットファイルを入力データとするが、カーソルを使用して
SELECT結果を直接ロードすることも可能
• 移動するデータを一旦ファイルへ蓄積する必要がない
DECLARE C1 CURSOR FOR SELECT * FROM SOURCE_TABLE;
LOAD FROM C1 OF CURSOR REPLACE INTO TARGET_TABLE;
• 複数のデータベース間でカーソルを使用したLOADも可能
• カーソル宣言の中で、ターゲットとなるデータベース接続情報を指定
DECLARE C1 CURSOR DATABASE SRCDB USER user1 USING
password FOR SELECT * FROM SOURCE_TABLE;
LOAD FROM C1 OF CURSOR REPLACE INTO TARGET_TABLE;
カーソルからの
カーソルからのロード
からのロード
リモート・
リモート・データベースからの
データベースからのロード
からのロード
ソース・
ソース・データベース
ターゲット・
ターゲット・データベース
1. ソースDBへ
ソース へ
接続
SELECT結果
結果を
結果をターゲット表
ターゲット表
に直接LOADする
する
直接
27
2. 結果セット
結果セットを
セットをカーソルから
カーソルから取得
から取得し
取得し、ターゲット・
ターゲット・
データベースに
データベースに直接投入
© 2009 IBM Corporation
ブランク・
ブランク・ページ
28
© 2009 IBM Corporation
統計情報の収集
• 統計情報を
統計情報を最新の
最新の状態に
状態に更新する
更新する
• 現時点の統計情報に更新することで、最新の統計情報によるアクセス・パスが選
択される
•
•
静的SQLの場合、BIND時に既にアクセス・パスが決まっており、RUNSTATS後にREBINDしない
限り、アクセス・パスへの影響は受けない
動的SQLの場合、実行時にBINDが行われアクセス・パスが決まるので、RUNSTATS後のパ
フォーマンスは変化する可能性有り
• RUNSTATSを
を取得すべき
取得すべきタイミング
すべきタイミング
•
•
•
•
索引が作成された時
表のデータがREORGされた時
表および索引のデータの10-20%がUPDATE/DELETE/INSERTされた時
アプリケーションをBINDする前
• RUNSTATS実行中
実行中には
実行中には表
には表への書
への書き込み・読み込みアクセスが
アクセスが共に可能
SQLステートメント
最適な
最適なアクセス・
アクセス・プラン
システム・
システム・カタログ表
カタログ表
・表統計
・列統計
・列分布統計
・索引統計
29
オプティマイザー
統計情
報
© 2009 IBM Corporation
統計情報の収集
• 基本的な
コマンド
基本的なRUNSTATSコマンド
•
•
表及び索引の統計情報を収集する
ターゲットとなる表にはスキーマ名の指定が必要
db2 RUNSTATS ON TABLE FOR DB2INST1.TABLE1 AND INDEXES ALL
• 分散統計を
コマンド
分散統計を収集する
収集するRUNSTATSコマンド
する
•
•
表及び索引の統計情報に加え、列ごとの値の分布を収集する
パラメータマーカーを使用しないSQLの効率的なアクセスプラン決定に効果的
db2 RUNSTATS ON TABLE FOR DB2INST1.TABLE1 WITH
DISTRIBUTION AND INDEXES ALL
• サンプリングを
コマンド
サンプリングを使用した
使用したRUNSTATSコマンド
した
•
•
巨大な表の統計情報を収集する際に、全てのデータを評価するのではなく、一部の
データのみサンプリングを行う
SYSTEMサンプリングを使用した場合、指定された比率のページだけを読み込むため、
実行時間の短縮に効果的
db2 RUNSTATS ON TABLE DB2INST1.TABLE1 AND INDEXES ALL
TABLESAMPLE SYSTEM (10)
30
© 2009 IBM Corporation
統計情報の自動的な収集
• DB2の
のオートノミック機能
オートノミック機能の
機能の一環として
一環として、
として、統計情報を
統計情報を自動的に
自動的に収集する
収集する機能
する機能が
機能が強化され
強化され
ている
•
•
自動RUNSTATSとリアルタイムRUNSTATS
統計情報の
統計情報の自動収集を
自動収集を有効にした
有効にした場合
にした場合の
場合の流れ
•
① 非同期統計情報収集
•
•
② リアルタイム統計情報収集(同期統計情報収集)
•
•
①非同期統
計情報収集.
統計情報が正確でないと判断した場合、SQLステートメントが最適化される前に統計情報を取得
③ ファブリケート統計情報の利用
•
•
できる限り、バックグラウンドで実行される統計情報収集を利用
なんらかの理由で、リアルタイム統計取得ができなかった場合、索引マネージャからのメタ・データを
使用して統計情報を作成(ファブリケート)する。
④ 上記②、③により統計情報が利用された場合、非同期統計情報の取得を要求する。
②リアルタイム
統計情報収集
大量更新
③ファブリケート
統計の利用
RUNSTATS
時間の超過
より実情に
即したアク
セスプラン
← ④非同期統計取得要求
31
© 2009 IBM Corporation
参考:リアルタイム統計情報収集機能の設定方法
• DB CFG “AUTO_STMT_STATS”
” をONに
に設定する
設定する
•
同期統計収集のON/OFFを設定するパラメーター
•
動的に変更可能
•
DB2 V9.7からデフォルトでONとなっている
•
階層構造となっている点に注意
• AUTO_MAINT, AUTO_TBL_MAINT, AUTO_RUNSTATSが全てONに
なっている必要がある
•
データベースがアクティブにされてから最低 5 分間は、リアルタイム統計収集アクティ
ビティーは行われない
Automatic maintenance
Automatic database backup
(AUTO_MAINT) = ON
(AUTO_DB_BACKUP) = OFF
リアルタイム統計情報収集
機能
Automatic table maintenance
Automatic runstats
(AUTO_TBL_MAINT) = ON
(AUTO_RUNSTATS) = ON
Automatic statement statistics (AUTO_STMT_STATS) = ON
Automatic statistics profiling
Automatic profile updates
Automatic reorganization
32
(AUTO_STATS_PROF) = OFF
(AUTO_PROF_UPD) = OFF
(AUTO_REORG) = OFF
© 2009 IBM Corporation
表の再編成
• 表データの
データのフラグメンテーションの
フラグメンテーションの解消、
解消、指定した
指定した索引順
した索引順に
索引順にデータを
データを並び替えるた
めのユーティリティー
めのユーティリティー
• 目的
•
フラグメンテーションの解消による
•
•
•
ディスク容量の削減
データ読み取りの処理効率向上
指定した索引順のデータの並び替えによる
•
•
索引スキャンのパフォーマンス向上
順次先読みの効率向上
• 再編成が
再編成が必要な
必要なケース
•
SQLによる更新(UPDATE/DELETE/INSERT)により、フラグメンテーションが発生し
た場合
•
クラスター率が低下し、索引スキャン、順次先読みの効率が悪化した場合
• 再編成が
再編成が必要でない
必要でないケース
でないケース
33
•
SQLによる更新処理のない、読み取りのみの表
•
ユニーク索引の列を条件とした1件検索の場合には、クラスター率が低くても問題なし
© 2009 IBM Corporation
REORG TABLEコマンドの実行
• REORG TABLEコマンド
コマンドは
コマンドは表・索引を
索引を対象として
対象として実行可能
として実行可能
• 表の再編成 (索引は強制的に再作成される)
db2 REORG TABLE TUKIV97.TABLE1 USE TEMPSPACE1
• 索引の再編成
db2 REORG INDEXES ALL FOR TABLE TABLE1
テーブル再編成
テーブル再編成の
再編成の基本的な
基本的な流れ
TS1
Tempspace1
1. REORG対象
対象の
対象の表から
全レコードを
レコードを取得し
取得し、一
時表スペース
時表スペースで
スペースでソート
2. ソートが
ソートが完了した
完了したデー
したデー
タを元の表スペースに
スペースに書
き戻し
Table1
temp1
INDEX_TS1
drop &
create
34
3. 既存の
既存の索引を
索引を削除し
削除し、
新たに索引
たに索引を
索引を作成
© 2009 IBM Corporation
Let’s go to Lab2!!
35
© 2009 IBM Corporation
Fly UP