IBM Support

[Db2] アクセス・プランの変化の原因 (IM-10-0AE)

Question & Answer


Question

特に設定の変更などは行っていませんが、動的 SQL のアクセス・プランが変化しました。 なぜ変化したのでしょうか。

Answer

動的 SQL は、統計情報や構成パラメーターなどの設定値をもとに、コンパイルの度にオプティマイザーによってアクセス・プランが作成されます。
アクセス・プランが変化する要因として、以下の項目があげられます。
 
  1. 統計情報の変化
    オプティマイザーは、現在の表や索引の統計情報を用いて、最適なパフォーマンスを得られるよう考慮してアクセス・プランを作成します。
    収集された統計情報が変化することで、オプティマイザーは同じ SQL に対して異なるアクセス・プランを作成する可能性があります。

    統計情報は一般的には RUNSTATS コマンドにより収集されますが、以下の要因によって統計情報が収集される場合があります。
    • 自動統計収集
    • 非同期統計収集やリアルタイム統計収集 (RTS) が有効になっている場合、自動表保守の一環として統計情報が自動的に収集されます。
    • ※ リアルタイム統計収集は V9.5 以降で利用可能です。
    • REORGCHK コマンド
    • UPDATE STATISTICS オプションで実行した場合、現在の統計情報を収集した後に REORGCHK が実行されます。
    • LOAD コマンド
    • STATISTICS USE PROFILE オプションで実行した場合、表に定義されている統計プロファイルにしたがって、LOAD の実行中に統計情報が収集されます。
    • CREATE INDEX コマンド
    • COLLECT STATISTICS オプションで実行した場合、索引作成時に索引統計が収集されます。

  2. 構成パラメーターの自動チューニング
    データベース構成パラメーターの SELF_TUNING_MEM が ON に設定されている場合、AUTOMATIC に設定されている一部の構成パラメーターは、ワークロードに応じてシステムにより自動でチューニングされます。
    照会の最適化に影響を与える構成パラメーターが自動でチューニングされる場合、アクセス・プランに影響を与える可能性があります。

    以下は自動チューニング可能なパラメーターの中で、最適化に影響を与える構成パラメーターです。
    • バッファー・プールのサイズ
    • ソート・ヒープ・サイズ (sortheap)
    • ロック・リスト用最大ストレージ (locklist) およびエスカレーション前のロック・リストの最大パーセント (maxlocks)

    以下は自動チューニングは行われませんが、最適化に影響を与える構成パラメーターです。
    • デフォルトのパーティション内並行度 (dft_degree)
    • デフォルトの照会最適化クラス (dft_queryopt)
    • アクティブ・アプリケーションの平均数 (avg_appls)
    • CPU 速度 (cpuspeed)
    • ステートメント・ヒープ・サイズ (stmtheap)
    • 通信スピード (comm_bandwidth)
    • アプリケーション・ヒープ・サイズ (applheapsz)
    • (連合DBのみ) 照会ごとの非同期 TQ の最大数 (federated_async)
       
  3. Statistics fabrication (統計の作成)

    表に対して統計情報が一度も収集されていない場合や、表が空に近い状態で統計が収集された場合、表制御ブロックや索引制御ブロックに含まれるデータ・ページ数やカーディナリティなどを参考にシステムによる見積もりが行われ、擬似的に統計情報が作成されます。なお、この機能を制御するパラメーターはありません。
    統計の作成により、データ量の変化などによってアクセス・プランが変化する可能性があります。

    注: リアルタイム統計収集 (RTS) はコンパイル時に短時間の runstats を行います。表制御ブロックにもとづく統計の作成と RTS は異なる機能なので注意してください。 stats_fabricat* モニター・エレメントは、RTS のモニター情報を提供します。
     
運用上の考慮点
  • オプティマイザーが最適なアクセス・プランを作成するためには、可能な限り最新の統計情報を収集するようにしてください。
  • 最適化プロファイルを指定することで、オプティマイザーが作成するプランに影響を与えることができます。
    詳細は以下のページを参照してください。
    [Db2] 最適化プロファイルの基本的な使い方 (IM-10-00P)
     
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PkyAAE","label":"Compiler-\u003EOptimization db2explain db2advis"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Historical Number

3E8CA05DA9C75773492577FF0015C376

Document Information

Modified date:
15 August 2023

UID

jpn1J1001041