DB2では*1アクセスパスの決定に*2統計情報を使用します。 そのため、統計情報が現在のテーブルの状態とかけ離れていると、 いくらインデックス等を最適に設計しても、レスポンスが悪くなります。 例えば、データが100行程度の状態でバインドしたアプリケーションでは、 データ量が少ないため、DB2はデータベーススキャンを選択するかもしれません。 (データ量が少ない場合、インデックスを見ると読み込むページ数が増えるので) しかし、その後データが増え続けても統計情報の更新かつ、再バインドをしないと、 ずっとデータベーススキャンでそのテーブルを検索することになります。 そこで表やインデックスに*3RUNSTATSを実行することで、パフォーマンスが向上します。 大規模データベース程効果があると思います。 RUNSTATSコマンド db2 "RUNSTATS ON TABLE [スキーマー名].[テーブル
DB2で実行計画を取得した時に、大変コストが高いものがあるということで まず第一段階としてインデックスのチューニングをする事になりました。 最初は該当のSQLを目で追って、怪しそうなところにインデックスをはっていたのですが めちゃくちゃ非効率と言う事で、インフラのDBAの人に相談したみたら 「db2advis」コマンドはどうだろーと言うことでした。 db2advis コントロールセンターに付属している「設計アドバイザー」のコマンドライン版 作成すべきインデックスについてアドバイスを取得する 使用方法 db2advis -d データベース名 -n スキーマ名 -i SQLファイル名 参考にさせて頂いたのはこちらのサイト Unofficial DB2 BLOG 作成すべきインデックスについてアドバイスを取得するには チューニング手順 1 実行計画の取得 別のエントリで紹介したA5:SQL Mk
アクセス・プランのExplain SQL Explain機能はSQLコンパイラの機能の一部であり、ステートメントのアクセス・プラン、およびステートメントがコンパイルされた環境を表示するために使われます。Explainの情報は、いくつかの方法で収集および表示することができます。 Explainの情報は、以下を行うために役立ちます。 照会のために選択された実行プランを理解する アプリケーション・プログラムを設計する アプリケーションをいつ再バインドすべきかを決定する データベースを設計する SQLステートメントのExplainデータを取得するには、Explain機能を呼び出す許可IDと同じスキーマを使用して、事前にExplain表を定義しておく必要があります。Explain表のDDLについては、DB2のインストール・ディレクトリの「sqllib/misc/explain.ddl」または「sql
SQLのアクセス・プランを確認する手順のメモです。ちょっとさわってみただけの簡単なメモなので詳しくは以下を参照。 DB2 リファレンス - SQL Explain 機能 @IT SQLを分析する高度なテクニック DB2逆引きリファレンス - EXPLAIN表を作成するには 概要 EXPLAIN表を作成する 「explain all for 」というSQL文を実行する。 「db2exfmt」コマンドを使ってアクセスプランを出力する。 1.EXPLAIN表を作成する 以下のコマンドを実行してEXPLAIN表を作成します。 $ db2 -tvf <DB2のインストールディレクトリ 例) /opt/ibm/db2/V9.1 >/misc/EXPLAIN.DDL 2.「explain all for 」というSQL文を実行する。 調査したいSQLを指定して「explain all for」を実行しま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く