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

SAP Sybase SQL Anywhere 16.0 » 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」 には、要求を実行するために付与されることが予想される推定ページ数が表示されます。

 参照