TECHNOLOGY
Tips !(使用上のテクニック)
対象バージョン : 8.0.x以降
対象OS : Windows NT/2000/XP、Windows 95/98/Me、UNIX
ST0511049
指定されたキャッシュ・サイズが小さい場合のデータベース・エンジンの動作
Tips !
ASA が使用するキャッシュ・サイズの上限値を、ユーザーが -ch オプションを使用して明示的に指定した時、指定されたキャッシュ・サイズが非常に小さい場合、データベース・エンジンはユーザーに注意を促すため、警告を出す場合があります(これはパフォーマンスの低下を未然に防ぐためのもので、エラーではありません)。
また、ユーザーが -ch オプションで極めて小さいキャッシュ・サイズを指定した場合でも、データベース・エンジンは指定された値を超えて最低限度のキャッシュを強制的に確保します。
以下でそれらの値について説明します(注:ここでは主に ASA バージョン 9 について説明しています。他のバージョンでは動作が異なる場合があります)。
・データベース・エンジンが警告を出すキャッシュ・サイズ
起動パラメータで、-ch オプションによって非常に小さいキャッシュ・サイズが指定された場合、データベース・エンジンは以下のような警告を出します。
「パフォーマンス警告 : サーバ・キャッシュ・サイズがデータベース “<データベース名>”には小さすぎます。」※
データベース・エンジンが、上記の警告メッセージを出力するときの条件は、下記の通りです。
Cache_size < (total_db_pages × cache_page_size / 10) total_db_pages: データベースのページ数の合計。 cache_page_size: キャッシュページ・サイズ(-gp オプションで指定された値)。特に指定しない場合、デフォルトでデータベースのページ・サイズになります。 |
(データベースのページ数の合計)×(ページ・サイズ)≒(データベース・ファイルサイズ)となりますので、データベース・ファイルサイズの 10 %以下の場合に警告が出ることになります。
・データベース・エンジンが起動時に強制的に確保する最小キャッシュ
データベース・エンジンは、起動時に 100 ページ(キャッシュ・ページ)分のキャッシュを強制的に確保します。メモリ上にキャッシュを確保する際に 12KB分のオーバーヘッドがあるため、実際に確保される最低キャッシュ・サイズは下記の式のようになります。
cache_size = (cache_page_size × 100 + 12KB) cache_page_size: キャッシュページ・サイズ(-gp オプションで指定された値)。特に指定しない場合、デフォルトでデータベースのページ・サイズになります。 |
例えば、ページ・サイズが 4 KB のデータベースの場合、-gp オプションでキャッシュ・ページサイズを指定しなければ、データベース・エンジンが起動する際に、最低でも 412KB のキャッシュ・サイズが確保されることになります。
これは、-c や -ch オプションの指定に関わらず、データベース・エンジンによって強制的に確保される最小キャッシュ・サイズとなります。
つまり、-ch オプションで最大キャッシュ・サイズの上限値を 100 ページ分のキャッシュ・サイズ(上記の例では 412KB)より小さい値に設定した場合、-chオプションで指定されたキャッシュ・サイズは無視されることになります。
補足: サイズが小さいデータベースの場合、キャッシュ・サイズが小さいことを警告するメッセージが出力されない場合があります。これはデータベース・エンジンによって強制的に確保される最小キャッシュが、データベース・ファイルサイズの 10 %を超えている場合です。
例えば、ページ・サイズが 2KB で、ファイルサイズが 1.8MB のデータベースの場合、データベース・エンジンが強制的に確保するキャッシュ・サイズは212KB で、ファイルサイズの 10 %(180KB)を超えているため、警告メッセージが出力されることはありません。
※このメッセージはバージョン毎に以下のような違いがございますが、これらのメッセージはすべて本件に該当致します。
Ver 8.0.1, 8.0.2
・サーバのキャッシュ・サイズが小さすぎてこのデータベースを使用できません。
Ver 8.0.3
・注意 : サーバのキャッシュ・サイズがデータベース “<データベース名>” には小さすぎます。
Ver 9.0.1
・注意 : サーバのキャッシュ・サイズが小さすぎて、データベース “<データベース名>” を使用できません。
Ver 9.0.2
・パフォーマンス警告 : サーバ・キャッシュ・サイズがデータベース “<データベース名>” には小さすぎます。