キャッシュの使用

基本ビューを変更するコマンド (ALTER TABLE - 「 クエリ機能: 検索メソッドとラッパー 」を参照)、およびビューを変更するコマンド (ALTER VIEW - 「 派生ビューの変更 」を参照) を使用して、ビューのキャッシュシステムを有効にすることができます (CACHE オプション)。キャッシュが有効な場合、ビューに対してクエリを実行すると、その結果として取得されたタプルがキャッシュに保存されます。

ALTER DATABASE コマンド (「 Virtual DataPort データベースの作成と変更 」を参照) を使用して、特定のデータベースに属するビューのキャッシュのデフォルト構成を設定できます。

ビューでキャッシュが有効な場合、プリロードしたいデータを取得するクエリを実行することにより、ソースデータを定期的にプリロードできます。

Virtual DataPort には、以下のキャッシュモードがあります。

  • PARTIAL: ビューに対してクエリを実行する際、サーバーは、クエリに応答するために必要なデータがキャッシュに存在するかどうかを確認します。存在しない場合、データソースに対して直接クエリを実行します。このモードでは以下の句を追加で指定できます。

    • EXACT: このタイプのキャッシュでは、各クエリの結果はキャッシュに保存されます。その後、同じクエリが実行された場合、キャッシュ内のこのクエリのエントリが期限切れでなければ (TTL に達していなければ)、クライアントに返されるデータは、データソースからではなくキャッシュから取得されます。

      重要

      EXACT 句を指定しない PARTIAL キャッシュは、特定のタイプの 非リレーショナル ソースには適しません。

    • PRELOAD: サーバーがキャッシュデータを自動的に再読み込みするのではなく、特殊なクエリを実行して「手動」でキャッシュデータを再読み込みする必要があります。

  • FULL: ビューがこのキャッシュモードを使用している場合は、特殊なクエリでキャッシュを 明示的にプリロード する必要があります。キャッシュがプリロードされると、データは常にキャッシュから取得されます。その際に、キャッシュの読み込みに使用したクエリによってソースからすべてのデータが取得されたかどうかは確認されません。つまり、サーバーがそのソースからデータを取得するのは、ソースからデータを「プリロード」するときだけです。

    • INCREMENTAL: 増分モードは [Full] キャッシュモードのサブタイプです。このモードが有効な場合、このビューに対するクエリは「増分クエリ」になります。つまり、このビューに対するクエリでは、キャッシュから取得した結果とソースから取得した最新データがマージされます。このモードの主な利点は、前回のキャッシュ更新以降に追加された行と変更された行を取得するだけで、全面的に最新の結果が必ず得られることです。データソースから結果セット全体を取得する必要はありません。

これらのキャッシュモードの仕組みの詳細については、管理ガイドの「 キャッシュモード 」を参照してください。

ビューのキャッシュを無効にするには、コマンド ALTER TABLE (基本ビューの場合) または ALTER VIEW (派生ビューの場合) のパラメーター CACHE OFF を使用します。

キャッシュが有効な場合 (PARTIAL または FULL) は、パラメーター TIMETOLIVEINCACHE の値を設定します。その値は、以下のいずれかを指定できます。

  • データが期限切れになるまでの秒数。

  • DEFAULT: このビューが属するデータベースで定義されたデータの有効時間。

  • NOEXPIRE: キャッシュ内のデータは期限切れになりません。

「キャッシュメンテナンスタスク」は、キャッシュのデータベースから期限切れの行または無効な行を削除します。

このタスクの実行内容の詳細については、管理ガイドの「 キャッシュメンテナンスタスク 」を参照してください。

このスレッドの動作は、パラメーター MAINTENANCE および MAINTAINERPERIOD で制御します。

  • MAINTENANCEOFF の場合、サーバーは「キャッシュメンテナンス」スレッドを生成しません。このオプションでは、キャッシュの期限切れの行は実際にデータベースから削除されるのではなく、期限切れのマークが付けられてクエリの結果として返されなくなります。

  • MAINTENANCEON の場合、サーバーは MAINTAINERPERIOD で指定した秒ごとに「キャッシュメンテナンス」スレッドを生成します。