キャッシュを移入するための一連の問合せの実行
キャッシュ・ヒットの可能性を最大限に高める1つの方法は、一連の問合せを実行してキャッシュを移入することです。
キャッシュをシードする一連の問合せを作成するときに使用する問合せの種類に関して、いくつかの推奨事項があります。
-
共通の事前作成問合せ。よく実行される問合せや、処理に多くのリソースが必要な問合せは特に、優れたキャッシュ・シード問合せです。その結果がダッシュボードに埋め込まれる問合せは、共通問合せのよい例です。
-
式が含まれないSELECTリスト。
SELECT
リストの列から式をなくすと、キャッシュ・ヒットの可能性が広がります。式が含まれるキャッシュ列は、同じ式が含まれる新しい問合せにのみ答えを返します。式が含まれないキャッシュ列は、任意の式を含むその列に対するリクエストに答えを返すことができます。たとえば、キャッシュされた次のようなリクエストがあるものとします。SELECT QUANTITY, REVENUE...
これは、次のような新しい問合せに答えを返すことができます。
SELECT QUANTITY/REVENUE...
ただし、逆は成り立ちません。
-
WHERE句の不使用。キャッシュされた結果に
WHERE
句がない場合、これを使用して、プロジェクション・リストの列が含まれるSELECTリストとWHERE
句のキャッシュ・ヒット・ルールを満たす問合せに、答えを返すことができます。
一般に、キャッシュのシードに最適な問合せは、データベースの処理リソースを大量に使用し、再実行される可能性がある問合せです。多くの行を返す単純な問合せでキャッシュをシードしないように注意してください。このような問合せでは(たとえば、SELECT * FROM PRODUCTS
。PRODUCTS
は単一のデータベース表に直接マップします)、データベース処理はほとんど必要ありません。このような問合せで犠牲となるのはネットワークとディスクのオーバーヘッドですが、これらはキャッシングでは軽減されません。
Oracle BIサーバーがリポジトリ変数をリフレッシュする際には、ビジネス・モデルを調べて、そのリポジトリ変数を参照しているかどうかを判断します。参照している場合は、Oracle BIサーバーによって、そのビジネス・モデルのすべてのキャッシュがパージされます。「動的リポジトリ変数の変更」を参照してください。