Comments
Description
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