ヘッダーをスキップ
Oracle TimesTen In-Memory Databaseオペレーション・ガイド
リリース7.0
E05167-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

表へのエージングの実装

データ・ストア内の1つ以上の表に対してエージング・ポリシーを指定できます。エージング・ポリシーとは、エージングのタイプおよび状態(ONまたはOFF)のことです。使用状況ベースまたは時間ベースのいずれかのタイプのエージングを指定できます。使用状況ベースのエージングでは、指定したデータ・ストアの使用範囲内の最低使用頻度(LRU)のデータが削除されます。時間ベースのエージングでは、指定したデータ存続期間およびエージング・プロセスの頻度に基づいてデータが削除されます。使用状況ベースと時間ベースの両方のエージングを同じシステムに構成することはできますが、特定の表に対して定義できるエージング・タイプは1つのみです。

キャッシュ・グループにエージングを実装することもできます。詳細は、『Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド』のキャッシュ・グループへのエージングの実装に関する説明を参照してください。

次のタイプの表にはエージングを指定できません。

この項の内容は次のとおりです。

使用状況ベースのエージング

使用状況ベースのエージングを使用すると、最低使用頻度(LRU)のデータを削除することによって、データ・ストアで使用されるメモリーの量を、指定したしきい値の範囲内で管理できます。LRUエージングは、すべてのタイプのキャッシュ・グループで使用可能です。ただし、AUTOREFRESH属性を持つキャッシュ・グループは除きます。

CREATE TABLE文のAGING LRU句を使用して、キャッシュ・グループのLRUエージングを定義します。OFFを指定しない限り、表を作成するとすぐにエージングが開始されます。

ttAgingLRUConfig組込みプロシージャを使用して、データ・ストア内のすべての表にLRUエージング属性を指定します。次の表に、LRUエージング属性の概要を示します。

LRUエージング属性
説明

LowUsageThreshhold

LRUエージングが非アクティブになるデータ・ストアPermSizeの割合(%)。デフォルトは80%です。

HighUsageThreshhold

LRUエージングがアクティブになるデータ・ストアPermSizeの割合(%)。デフォルトは90%です。

AgingCycle

エージング・サイクルの間隔(分)。デフォルトは1分です。

最後のエージング・サイクル以降に行へのアクセスまたは行の参照を行った場合、その行はLRUエージングの対象ではなくなります。行は、次のいずれかの条件に当てはまる場合にアクセスまたは参照されたとみなされます。

ALTER TABLE文を使用して、次のタスクを実行できます。

エージングの開始を制御するには、ttAgingScheduleNow組込みプロシージャを使用します。詳細は、「エージング開始の制御」を参照してください。

表のエージングをLRUから時間ベースに変更するには、まず、DROP AGING句とともにALTER TABLE文を使用して表のエージングを破棄します。次に、ADD AGING USE ... LIFETIME句とともにALTER TABLE文を使用して時間ベースのエージングを追加します。


注意: LRUエージングを破棄するか、またはコマンドで参照される表に追加する場合は、コンパイルしたコマンドをアプリケーションで再コンパイルする必要があります。

時間ベースのエージング

時間ベースのエージングでは、指定したデータ存続期間およびエージング・プロセスの頻度に基づいてデータが表から削除されます。時間ベースのエージングは、CREATE TABLE文のAGING USE句で定義します。AGING USE句は、値がアプリケーションによって更新されるタイムスタンプ列を参照します。

CREATE TABLE文のAGING USE句のLIFETIME部分に、日、時間または分単位で存続期間を指定します。AGING USE句のCYCLE部分を使用して、システムで行を確認し、指定した存続期間を超えたデータを削除する頻度を指定します。CYCLEを指定しない場合、エージングは5分ごとに行われます。エージングは、OFFを指定しない限り、表を作成するとすぐに開始されます。

ALTER TABLE文を使用して、次のタスクを実行します。

エージングの開始を制御するには、ttAgingScheduleNow組込みプロシージャを使用します。詳細は、「エージング開始の制御」を参照してください。

表のエージングを時間ベースからLRUエージングに変更するには、まず、表のエージングを破棄します。次に、ADD AGING LRU句とともにALTER TABLE文を使用して、LRUエージングを追加します。

エージングおよび外部キー

外部キーによって関連付けられている表には、同じエージング・ポリシーを設定する必要があります。

LRUエージングが有効になっている間に子表内の行にアクセスした場合は、親行または子行のいずれも削除されません。

時間ベースのエージングが有効になっている場合に親表内の行がエージング・アウトの候補になると、親行およびそのすべての子が削除されます。

エージング開始の制御

エージングの開始を制御するには、ttAgingScheduleNow組込みプロシージャを使用します。ttAgingScheduleNowをコールすると、状態がON(有効)またはOFF(無効)のいずれであるかに関係なく、エージング・プロセスがすぐに開始されます。エージング・プロセスは、ttAgingScheduleNowをコールした結果として1回のみ行われます。このプロセスでは、以前設定された属性は変更されません。

エージングがすでに有効になっている場合は、ttAgingScheduleNowがコールされた時間に基づいて、ttAgingScheduleNowによってエージング・サイクルがリセットされます。

ALTER TABLE ... SET AGING OFFを使用してエージングを無効にすると、外部でエージングを制御できます。その後、ttAgingScheduleNowを使用して、目的の時間にエージングを開始します。

ttAgingScheduleNowを使用すると、このプロシージャをコールするときに個々の表の名前を指定することによって、表のエージング・ポリシーを制御できます。表名を指定しない場合は、ttAgingScheduleNowによって、エージングが定義されているデータ・ストア内のすべての表のエージングが開始またはリセットされます。

エージングおよびレプリケーション

アクティブなスタンバイ・ペアの場合は、アクティブなマスター・データ・ストアにエージングを実装します。エージングの結果として行われる削除は、スタンバイ・マスター・データ・ストアおよび読取り専用サブスクライバにレプリケートされます。スタンバイ・マスター・データ・ストアに対してフェイルオーバーが行われると、エージングは、ロールがACTIVEに変更された後でそのデータ・ストアに対して有効になります。

他のすべてのタイプのレプリケーション・スキームの場合は、ノードごとに個別にエージングを実装します。エージング・ポリシーは、すべてのノードで同じである必要があります。

ホット・スタンバイとして使用されるマルチマスター・レプリケーション・スキームにLRUエージングを実装すると、LRUエージングで予期しない結果が発生する可能性があります。エージングがローカルで行われるため、フェイルオーバー後に必要なデータの一部が失われる場合があります。