Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー SQL の使用法 » パフォーマンスの向上、診断、モニタリング » パフォーマンス向上のヒント » キャッシュ関連のパフォーマンスに関連するヒント » パフォーマンス向上のためのキャッシュの使用

 

キャッシュとメモリガバナー

SQL Anywhere データベースサーバーは、キャッシュ (バッファープール) を使用し、データベースページのイメージをメモリに一時的に格納します。これらのページは通常、テーブルページとインデックスページです。ただし、SQL Anywhere データベースには他の種類の物理ページも格納されます。これらのページに加えて、データベースサーバーは他に 2 つのメモリプールのキャッシュを使用します。これらのプールの 1 つは仮想メモリです。接続、文、カーソルを表す構造など、データベースサーバーのデータ構造に使用されます。2 番目のプールは、クエリメモリの仮想ストレージとして使用されるキャッシュページで構成されます。

クエリの実行が効率的に動作するには、メモリが必要です。SQL Anywhere はメモリガバナーを使用して、各文がクエリの実行に使用できるクエリメモリの量を決定します。メモリガバナーはクエリメモリプールを文に割り付け、負荷を効率的に実行できるようにします。

メモリガバナーは選択されたページ数を各文に付与し、文はメモリを大量に消費するクエリ処理にそのページを使用できます。クエリプロセッサーがページを使用するまでは、引き続きクエリメモリプール内のメモリを他の目的 (テーブルのバッファリングやインデックスページなど) にも使用できます。クエリメモリを使用し、メモリを大量に消費するクエリ処理には、ハッシュ DISTINCT、ハッシュ GROUP BY、ハッシュジョインなどのあらゆるハッシュベースの演算子や、ソート演算子、ウィンドウ演算子があります。

次の設定、演算子、統計を使用して、メモリガバナーによるキャッシュの使用方法を理解 (および制御) します。

  • QueryMemMaxUseful グラフィカルプラン演算子   文が実行を開始すると、メモリガバナーはオプティマイザーの推定を使用して、文が使用できるメモリ容量を決定します。この推定は、グラフィカルなプランに QueryMemMaxUseful として表示されます。

  • QueryMemActiveMax サーバープロパティ   メモリガバナーは、メモリを大量に消費する要求の同時実行数を制限します。この最大値は、データベースサーバーを実行するコンピューターのパフォーマンス特性に応じて選択されます。また、この制限は、サーバープロパティ QueryMemActiveMax に表示されます。

  • QueryMemActiveEst パフォーマンスモニターの統計   メモリガバナーは、メモリを大量に消費する要求の同時実行数の推定を継続します。この推定はデータベースサーバープロパティおよびパフォーマンスモニターの統計 QueryMemActiveEst に使用できます。

  • query_mem_timeout データベースオプション   メモリを大量に消費する文の実行を開始したとき、メモリを大量に消費する要求の最大同時実行数にすでに達している場合は、いずれかの実行中の要求が割り付けられたメモリを解放するまで入力された文は待機します。query_mem_timeout データベースオプションは、入力された要求にメモリが付与されるまで待つ時間を制御します。デフォルト設定 -1 を使用すると、要求はデータベースサーバーで定義された期間待機します。待機後、使用できるメモリが付与されない場合は文のアクセスプランは少ないメモリ容量で実行されます。これによって実行が遅くなる場合がありますが、プラン内のメモリを大量に消費する物理演算子に対して実行時のメモリ量が少なくなる方式を使用できる場合は、その方式が使用されます。

  • QueryMemGrantWaiting サーバープロパティおよびパフォーマンスモニターの統計   データベースサーバープロパティおよびパフォーマンスモニターの統計 QueryMemGrantWaiting には、メモリ要求が付与されるのを待機している現在の要求数が表示されます。

  • QueryMemGrantWaited サーバープロパティおよびパフォーマンスモニターの統計   データベースサーバープロパティおよびパフォーマンスモニターの統計 QueryMemGrantWaited には、メモリ要求が付与されるまでに要求が待機する必要があった合計回数が表示されます。

  • QueryMemNeedsGrant グラフィカルプラン演算子   グラフィカルなプランでは、QueryMemNeedsGrant には、要求が単純な要求 (メモリの付与が不要) かメモリを大量に消費する (メモリの付与が必要) かをメモリガバナーが検討した結果が表示されます。メモリガバナーによってメモリの付与が不要と分類された要求は、ただちに実行されます。それ以外の場合、要求はクエリメモリプールの一部の使用を求めます。

  • QueryMemLikelyGrant グラフィカルプラン演算子   グラフィカルなプランでは、「QueryMemLikelyGrant」 には、要求を実行するために付与されることが予想される推定ページ数が表示されます。

 参照