ユーザーガイド > TDVキャッシング > キャッシュ更新動作の定義 > 複数のリソースのキャッシュ更新動作の制御
 
複数のリソースのキャッシュ更新動作の制御
キャッシュポリシーを定義して、複数のTDVリソースのキャッシュ更新動作を制御できます。キャッシュポリシーを定義すると、複数のTDVリソースのキャッシュ更新定義を再利用できます。キャッシュポリシーの動作に固有のロジックは、依存リソースのキャッシュ更新動作を管理し、データの依存関係があるリソースのキャッシュが更新されたときのデータの整合性を向上させます。キャッシュ内のデータを最新の状態に保つことで、確実に結果が正しくなります。ビュー、テーブル、またはプロシージャリソースが更新されると、オブジェクトの結果セット全体が取得され、キャッシュに書き込まれます。
キャッシングが定義されているビュー(またはテーブル)のクエリーを変更した場合、キャッシュは自動的に更新されません。正しい結果セットを取得するには、更新を実行するか、次回のスケジュールされた更新サイクルまで待つ必要があります。
複数テーブルキャッシュ更新の制限
複数テーブルキャッシングが定義されている場合、TDVは最初にTRUNCATEコマンドを使用してキャッシュをクリアしようとします。TRUNCATEコマンドがサポートされていない場合は、DELETEコマンドが試行されます。
キャッシュの更新とまったく同じ時刻にキャッシュデータソースの再イントロスペクションをスケジュールすると、エラーが発生する可能性があります。複数テーブルキャッシュ更新では、キャッシュの更新中にインデックスが削除されて再作成されます。そのため、インデックスが欠落しているように見える場合があります。
キャッシュ更新動作を制御するには
1.キャッシュポリシーの定義」の手順に従う必要があります。
2.ポリシーに関連付けるリソースごとに、次のいずれかのセクションの手順に従います。
キャッシュポリシーへのリソースの割り当て
リソースへのキャッシュポリシーの割り当て
キャッシュポリシーの定義
キャッシュポリシーは、キャッシュの更新とクリアの動作を定義します。キャッシュポリシーは、キャッシュされるリソースに適用できます。
キャッシュポリシーの制限
キャッシュポリシーは、次の場合はサポートされません。
入力パラメーターがあるプロシージャ
テーブルまたはビューで定義されているプルベースのインクリメンタルキャッシュ
テーブルまたはビューで定義されているプッシュベースのインクリメンタルキャッシュ
キャッシュポリシーを作成するには
1.Studioのリソースツリーで<host>/policy/cacheを展開します。
2.右クリックして、[New Cache Policy(新しいキャッシュポリシー)]を選択します。
3.ポリシーに名前を付けます。
4.[OK]をクリックします。
5.新しいキャッシュポリシーを開きます。
6.[Cache Policy Settings(キャッシュポリシーの設定)]タブを選択します。[Resources(リソース)]タブの詳細については、「キャッシュポリシーへのリソースの割り当て」を参照してください。
7.このキャッシュポリシーを有効にするには、[Enable(有効にする)]チェックボックスをオンにします。オフのままにした場合は、引き続きポリシーを定義できますが、[Enable(有効にする)]チェックボックスをオンにするまでポリシーはアクティブになりません。
8.デフォルトを受け入れるか、キャッシュポリシーに関するデータを保存するデータソースを指定します。[Browse(参照)]ボタンを使用すると、使用可能なデータソースのStudioリソースツリーから参照できます。
9.[Refresh Mode(更新モード)]で、キャッシュ更新モードを指定します。キャッシュされたリソースを更新すると、ソースからデータが取得され、指定した古いデータがクリアされます。
[Refresh Now(今すぐ更新)]をクリックすると、キャッシュを即座に更新できます。
 
オプション
説明
[Manual(手動)]
リソースの所有者または管理者は、[Refresh Now(今すぐ更新)]を使用して手動でキャッシュを更新するか、RefreshResourceCacheプロシージャを呼び出してプログラムで更新する必要があります。
適切な特権が付与されている、ACCESS TOOLS権限を持つユーザーは、キャッシュを手動で更新することもできます。
キャッシュがキャッシュポリシーによって制御されている場合は、定期的な更新またはプログラムによる更新を使用することをお勧めします。
[Exactly Once(1回だけ)]
特定の時刻に1回だけキャッシュを更新するには、[Start on(開始日時)]というラベルが付いたセクションのドロップダウンボックスのセットでキャッシングの開始時刻を選択して指定します。[Hour(時間)]フィールドに「0」を入力してリソースを保存すると、時間が「12」に、[AM/PM]が「AM」に自動的に変換されます。
[Periodic(定期的)]
キャッシュを定期的に更新するには、[Periodic(定期的)]を選択し、[Refresh every(更新間隔)]セクションでキャッシング用にリソースを実行する頻度(x秒ごと、x分ごと、x時間ごと、x日ごと、x週間ごと、xか月ごと、x年ごと)を指定します。[Start on(開始日時)]フィールドで、定期的な更新モードを開始する日時を指定します。
10.[Expiration Schedule(有効期限のスケジュール)]で、[Never expire(無期限)]を選択するか、[Expire after(有効期間)]を選択して期間を指定します。有効期限は、更新の終了から適用されます。インクリメンタルキャッシングを使用している場合は、[Expire after(有効期間)]オプションが無効になります。
11.オプションで、更新前および更新後のアクションを定義できます。「完全更新モードキャッシュの事前アクションと事後アクションの定義」を参照してください。
12.キャッシュをクリアするタイミングを指定します。
キャッシュクリアオプション
説明
[when user clears it manually(ユーザーが手動でクリアしたとき)]
[Clear Now(今すぐクリア)]ボタンが押されたとき、API呼び出しが行われたとき、またはキャッシュの有効期限が切れた([Expiration Schedule(有効期限のスケジュール)]セクションで[Expire after(有効期間)]が選択されている場合)ときにのみキャッシュをクリアします。
[when refresh fails(更新が失敗したとき)]
(完全更新キャッシングの場合のみ)このオプションを選択すると、更新が失敗した場合にキャッシュがクリアされます。このオプションを使用すると、更新中に以前にキャッシュされたデータにアクセスできます。
[when refresh begins(更新の開始時)]
(完全更新キャッシュの場合のみ)このオプションを選択すると、更新を開始する前にキャッシュが自動的にクリアされます。キャッシュされたデータから読み取ろうとするクライアントは、新しいデータを待つ必要があります。
13.キャッシュの設定を保存します。
キャッシュポリシーへのリソースの割り当て
1つ以上のリソースをキャッシュポリシーに割り当てて、それらのキャッシュの更新を同じ更新定義で管理できます。キャッシュポリシーにリソースを割り当ててキャッシュポリシーを保存すると、そのリソースの[Caching(キャッシュ作成)]タブの定義がキャッシュポリシーの定義に設定されます。キャッシュポリシーに割り当てるリソースでキャッシュが有効になっていない場合は、キャッシュが有効になり、[Caching(キャッシュ作成)]タブのフィールドの大部分が淡色表示になります。これは、これらのフィールドがキャッシュポリシーの制御下にあることを示しています。
リソースをキャッシュポリシーに関連付けるには
1.キャッシュポリシーの定義」の手順に従ってキャッシュポリシーを定義したことを確認します。
2.Studioで、キャッシュポリシーを開きます。
3.[Resources(リソース)]タブを選択します。
4.次のいずれかの方法で、このキャッシュ更新ポリシーで管理されるリストにリソース追加します。
Studioリソースツリーから1つ以上のリソースを選択し、[Resources(リソース)]テキストフィールドにドラッグします。
緑色のプラス記号ボタンをクリックし、[Select Resources(リソースの選択)]ダイアログを使用して、追加するリソースに移動します。
5.キャッシュポリシーを保存します。
Studioにより、リスト内のリソースのポリシー定義が検証され、修正が必要なものがある場合はメッセージが表示されます。
6.Studioメッセージによって修正を求められた場合は、リソース定義を修正します。
7.変更を保存します。
リソースへのキャッシュポリシーの割り当て
キャッシュポリシーを定義すると、複数のTDVリソースのキャッシュ更新定義を再利用できます。キャッシュポリシーの動作に固有のロジックは、依存リソースのキャッシュ更新動作を管理し、データの依存関係があるリソースのキャッシュが更新されたときのデータの整合性を向上させます。[Resources(リソース)]タブでキャッシュポリシーにリソースを追加しなかった場合は、次の手順に従って特定のリソースをキャッシュポリシーに関連付けることができます。
注意: 複数テーブルキャッシングが定義されている場合、TDVは最初にTRUNCATEコマンドを使用してキャッシュをクリアしようとします。TRUNCATEコマンドがサポートされていない場合は、DELETEコマンドが試行されます。
キャッシュポリシーの制限
キャッシュポリシーは、次の場合はサポートされません。
入力パラメーターがあるプロシージャ
テーブルまたはビューで定義されているプルベースのインクリメンタルキャッシュ
テーブルまたはビューで定義されているプッシュベースのインクリメンタルキャッシュ
リソースをキャッシュポリシーに関連付けるには
1.キャッシュポリシーの定義」の手順に従ってキャッシュポリシーを定義したことを確認します。
2.Studioで、キャッシングが有効になっているビュー、テーブル、またはプロシージャを開きます。
3.[Caching(キャッシュ作成)]タブを選択します。
4.[Cache Policy(キャッシュポリシー)]フィールドを見つけます。
5.このリソースのキャッシュの更新とクリアの動作を制御するために使用するキャッシュポリシーを選択します。[Open Policy(ポリシーを開く)]ボタンを使用してポリシーを開き、必要に応じてその設定を確認または変更できます。
6.(プロシージャの場合のみ)キャッシュするプロシージャの結果からキャッシュに保存するバリアントの最大数を定義します。入力パラメーター値の一意のセットの最大数(デフォルトは32です)。
7.リソースを保存します。
注意: キャッシュポリシーに関連付けられていない各リソースの[Refresh Now(今すぐ更新)]ボタンは有効と表示されます。ただし、リソースがキャッシュポリシーに関連付けられている場合、ボタンは無効と表示されます。