自動リフレッシュ・モードの属性設定
自動リフレッシュ・モードを設定して、自動リフレッシュの実行方法を指定できます。
TimesTenでは、2つの自動リフレッシュ・モードがサポートされています。
-
FULL
: キャッシュ・グループの自動リフレッシュ間隔に基づいて、すべての行をアンロードした後、キャッシュされたOracle Database表からリロードすることによって、すべてのキャッシュ表が自動的にリフレッシュされます。完全自動リフレッシュ・モードを使用すると、オーバーヘッドは発生しませんが、パフォーマンスに影響する可能性があります。
-
INCREMENTAL
: キャッシュ・グループの自動リフレッシュ間隔に基づいて、キャッシュされたOracle Database表でコミットされた変更がTimesTenキャッシュ表に自動的にリフレッシュされます。増分自動リフレッシュ・モードを使用すると、オーバーヘッドはありますが、完全自動リフレッシュを使用するよりもパフォーマンスが優れています。
パフォーマンス上の理由から、一部のアプリケーションでは、完全自動リフレッシュではなく増分自動リフレッシュを選択します。完全自動リフレッシュは、次の理由でパフォーマンスに影響する可能性があります。
-
完全自動リフレッシュでさらに行がリフレッシュされます。
-
完全リフレッシュは、パラレル伝播なしで1つのトランザクション内で実行されます。
キャッシュ・グループで増分自動リフレッシュを使用する場合でも、最初のロードは完全リフレッシュです。また、TimesTenは、特定のエラー・シナリオのリカバリ用に完全自動リフレッシュを実行できます。
ノート:
DisableFullAutorefresh
キャッシュ構成パラメータを使用すると、完全リフレッシュを禁止できます。「キャッシュ・グループの完全自動リフレッシュの無効化」を参照してください。
増分自動リフレッシュ・モードを使用すると、キャッシュされたOracle Database表でコミットされた変更は、Oracle Database内の変更ログ表で追跡されます。増分リフレッシュではOracle Databaseでコミットされた変更が追跡されるため、増分自動リフレッシュ・モードを使用すると、キャッシュされたOracle Database表でコミットされた更新ごとにキャッシュ・グループをリフレッシュするためのオーバーヘッドが発生します。特定の環境下では、変更ログ・レコードの一部が、TimesTenキャッシュ表に自動的にリフレッシュされる前に変更ログ表から削除される(切り捨てられる)可能性があります。このような状況が発生すると、TimesTenはキャッシュ・グループの完全自動リフレッシュを開始します。
変更ログ表が存在する表領域が一杯になった場合に実行するアクションを構成する方法の詳細は、「キャッシュ管理ユーザーの表領域の管理」を参照してください。
Oracle Databaseの変更ログ表の詳細は、「Oracle Databaseオブジェクトによるキャッシュ環境の管理」を参照してください。
Oracle Database内の変更ログ表では、パフォーマンス上の理由から、列レベルの解決を行いません。したがって、自動リフレッシュ処理により、行内のすべての列が更新されます。たとえ実際に各列でデータが変更されていなくても、XLAにより、行内のすべての列が変更されたことが報告されます。『Oracle TimesTen In-Memory Database C開発者ガイド』の「XLAおよびTimesTenイベント管理」または『Oracle TimesTen In-Memory Database Java開発者ガイド』の「イベント管理のためのJMS/XLAの使用」を参照してください。
自動リフレッシュを使用した動的な読取り専用キャッシュ・グループがある場合は、競合を減らしてパフォーマンスを改善できます。「増分自動リフレッシュを使用した動的な読取り専用キャッシュ・グループに対する競合の削減」、「自動リフレッシュおよび動的ロードを使用する読取り専用キャッシュ・グループに対するロック競合の削減」および「自動リフレッシュ処理と動的ロード処理の競合を削減するためのオプション」を参照してください。