Performance Data Investigatorを使用してデータベースのパフォーマンスを確認する、パート2
この記事は、Performance Data Investigator(PDI)を使用してDb2 for iのパフォーマンスを調査する方法について紹介する2部シリーズのパート2です。PDIに比べて、 Access Client Solutions のSQL Performance Centerの方がより広く知られていますが、両方のツールを使用することで、データベースのパフォーマンスの分析をより適切に行えるようになるはずです。
パート1では、「Database(データベース)」コンテンツ パッケージについて取り上げ、入出力読み取りおよび書き込み、SQL CPU使用率、およびデータベース ロックの図表を中心に見て行きました。今回の記事では、「SQL Cursor and Native DB Opens(SQLカーソルおよびネイティブDBオープン)」に関連する図表について、また「SQL Performance Data(SQLパフォーマンス データ)」の図表について、引き続き見て行こうと思います(以下の画面キャプチャーの赤枠部分)。
SQLカーソルおよびネイティブDBオープン
ナビゲーション ツリーのこのセクションには、ネイティブ データベース(すなわち、レコード レベル アクセス)フル オープンおよびSQLフル オープンのカウントを表示する図表がまとめられています。フル オープンはパフォーマンスの点で高くつくため、これらは、確認および理解しておくべき重要なメトリックとなります。PDIの図表は、フル オープンの割合や、どのようなジョブまたはユーザー プロファイルがそれらのオープンを行っているかを把握するのに役立ちます。ただし、どのようなプログラムまたはプロシージャーがフル オープンを行っているのかなど、さらに詳しい情報が必要な場合は、Performance Explorerのデータが必要となります。
以下の画面キャプチャーでは、SQLフル オープン、SQL疑似オープン、ネイティブ フル オープンでの1秒当たりのオープン、および1秒当たりの作成されたプランの数を確認することができます。SQL疑似オープンが大きな要因になっているようにも思えますが、ネイティブ フル オープンが気掛かりです。
『IBM i on Power - Performance FAQ』には次のように記されています。「区画全体のフル オープンの割合についての一般的なガイドラインとしては、小~中規模サイズの区画では、1秒当たり1000未満、大規模サイズの区画では、1秒当たり3000~4000程度未満とされています。」
以下の画面キャプチャーでは、SQLメトリックの表示をオフにしています。これにより、ネイティブ フル オープンの数についてより詳細に確認しやすくなります。早朝の時間帯のパフォーマンスを改善するための大きな機会があることが明らかなようです。
SQLパフォーマンス・データ
Access Client SolutionsのSQL Performance Centerを開くと、開いた その時点でのプラン キャッシュのプロパティが表示されます。
収集サービスは、一定の間隔で SQLプラン キャッシュ の統計情報を収集しています。「 収集サービス 」フォルダー内の図表は、これら数多くのメトリックを 経時的に 視覚化します。そのため、これらの統計データが1日の間にどのように変動するか確認することができます。
私のお気に入りの図表の1つは、「 プラン詳細 」図表です。この図表は、作成されたプラン、除去されたプラン、およびプルーニングされたプランに関して、SQLプラン キャッシュでのアクティビティーを表示します。また、プラン キャッシュのサイズや、プラン キャッシュ サイズのしきい値も表示します。プラン キャッシュが自動的にサイズ変更される場合に、この図表は経時的なプラン キャッシュ サイズを表示します。これは、一時ストレージ使用率に関する問題の場合に、状況の理解を助ける有用な情報となります。結果として、プラン キャッシュ サイズはより小さいサイズにプルーニングされ、512MBに制限される可能性があります。
これらの図表のすべてについて取り上げることはできませんが、データベース パフォーマンスの把握が求められる職務を担当されている方にとっては、これらのグラフは、SQLプラン キャッシュについての理解を深める手掛かりになると思われます。
SQLプラン・キャッシュ・スナップショットおよびイベント・モニター、SQLパフォーマンス・モニター
この最後の図表セットは、プラン キャッシュ スナップショット、イベント モニター、およびSQLパフォーマンス モニターのデータがベースとなっているため、まず、そのようなデータを取得する必要があります。こうしたデータを調査する際は、SQL Performance Centerを使用した方が便利な場合もありますが、PDIで提供される視覚的にまとめられた要約情報によって、理解を深めるより多くの手掛かりがもたらされることもあります。「SQL概要 」および「SQL属性の混合 」パースペクティブは、それぞれが数多くの図表から構成されています。ここで取り上げるには多過ぎる数でした。
「 SQL概要 」パースペクティブには、以下の項目がまとめられています。
- 照会時間
- オープンの要約(再使用可能ODPと再使用不可ODPの数)
- オープンのタイプの要約(フル オープンと疑似オープン)
- ステートメント使用の要約
- 使用された索引の要約(索引なし、MTI使用、索引使用、両方使用)
- 作成された索引の要約(フル索引作成、疎索引作成、索引からの索引)
- 推奨索引(推奨索引作成ありと推奨索引作成なし)
- 推奨統計情報(推奨統計情報ありと推奨統計情報なし)
- MQT使用(MQT使用とMQT不使用)
- アクセス プラン使用(アクセス プラン使用、アクセス プラン再作成、新規アクセス プラン)
- 並列度使用(ステートメント数別に並列度使用)
「SQL属性の混合」パースペクティブには、以下の項目がまとめられています。 - ステートメントの要約(select、update、insert、delete、other、data definition、call)
- ステートメントのタイプの要約(静的SQL、動的、拡張動的、システム全体キャッシュ動的)
- 分離レベルの要約(コミット不可、非コミット読み取り、カーソル固定、反復可能読み取り、読み取り固定、カーソル固定ロック保持、適用なし)
- コピー データ許可の要約(コピー許可なし、コピー許可最適化、コピー許可あり)
- 分類順序の要約(分類順序ありと分類順序なし)
- カーソル クローズの要約(endmod/endpgmとendact/endjob)
- 命名規則の要約(システム命名規則とSQL命名規則)
- 最適化ゴール(最初の入出力とすべての入出力)
- ブロック化の要約(すべての読み取りブロック化有効、読み取りブロック化有効、ブロック化無効)
SQL Performance Centerを介して、またはNavigator for i Webコンソールを使用して、SQLプラン・キャッシュ・スナップショットまたはSQLプラン・キャッシュ・イベント・モニターの確認を行っている場合は、これらのコレクションから「Investigate Performance Data(パフォーマンス データの調査)」オプションを使用することができます。これにより、「SQL概要」パースペクティブが開きます。
データベースのパフォーマンスは、IBM i では極めて重要です。これまで、PDIの「データベース」の図表を使用していない方は、今こそ始めてみるべき時です。