表領域の変更ログ表の最適化

自動リフレッシュを使用したキャッシュ・グループの変更ログ表を長期間にわたって使用したり過度なワークロードを与えたりすると、表領域が断片化する場合があります。

表領域が劣化して変更ログ表が断片化するのを防ぐために、TimesTenは、領域の合計サイズに対する使用済の領域の割合として、変更ログ表の断片化の比率を計算します。この比率が定義されたしきい値を下回ると、TimesTenは、メッセージをログに記録して変更ログ表の最適化が必要であることを示すアラートを通知します。デフォルトでは、このしきい値は40%に設定されています。

ttCacheConfig組込みプロシージャにより設定する断片化しきい値を構成できます。

ノート:

メッセージは、ユーザーおよびサポート・エラー・ログに記録されます。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「エラー、警告および情報メッセージ」を参照してください。

断片化しきい値を設定するには、Oracleデータベースのデータをキャッシュする任意のTimesTenデータベースから、TimesTenキャッシュ管理ユーザーとしてttCacheConfig組込みプロシージャをコールします。AutoRefreshLogFragmentationWarningPCT文字列をParamパラメータに渡し、しきい値設定を数値文字列としてValueパラメータに渡します。

断片化の比率を計算する頻度の時間間隔を設定するには、Oracleデータベースのデータをキャッシュする任意のTimesTenデータベースから、TimesTenキャッシュ管理ユーザーとしてttCacheConfig組込みプロシージャをコールします。AutorefreshLogMonitorInterval文字列をParamパラメータに、時間間隔(秒単位)を数値文字列としてValueパラメータに渡します。

ノート:

断片化しきい値またはしきい値計算のための時間間隔の設定にはtblOwnerパラメータおよびtblNameパラメータを適用できないため、これらのパラメータには値を渡さないでください。

次の例では、断片化しきい値は50%に設定され、断片化しきい値を計算するための時間間隔は3600秒に設定されています。

% ttIsql "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
Command> CALL ttCacheConfig('AutoRefreshLogFragmentationWarningPCT',,,'50');
< AutoRefreshLogFragmentationWarningPCT, <NULL>, <NULL>, 50 >
1 row found.
Command> CALL ttCacheConfig('AutorefreshLogMonitorInterval',,,'3600');
< AutorefreshLogMonitorInterval, <NULL>, <NULL>, 3600 >
1 row found.

現在の断片化しきい値の設定を確認するには、AutoRefreshLogFragmentationWarningPCT文字列をParamパラメータに渡してttCacheConfigをコールします。

Command> CALL ttCacheConfig('AutoRefreshLogFragmentationWarningPCT');
< AutoRefreshLogFragmentationWarningPCT, <NULL>, <NULL>, 50 >

最適化を手動で開始することも、自動的に最適化するようにTimesTenを構成することもできます。前述の割合が断片化しきい値を下回ったときに実行するアクションを構成するには、次のようにして、AutoRefreshLogDeFragmentAction文字列をParamパラメータに渡し、該当するアクションをValueパラメータで指定してttCacheConfig組込みプロシージャをコールします。

ノート:

最適化アクションの設定にはtblOwnerパラメータおよびtblNameパラメータを適用できないため、これらのパラメータには値を渡さないでください。

  • Manual。これがデフォルトです。変更ログ表を最適化するためのアクションは実行されません。ttCacheAutoRefreshLogDeFrag組込みプロシージャを実行して、手動で最適化を行う必要があります。「自動リフレッシュを使用したキャッシュ・グループ用の変更ログ表の手動による最適化」を参照してください。

  • Compact: TimesTenが変更ログ表をデフラグします。

  • CompactAndReclaim: TimesTenが変更ログ表を最適化し、領域を再生します。

    ノート:

    領域を再生すると変更ログ表が短時間ロックされ、実表への書込みが一時的に停止されます。

次の例では、アクションがCompactAndReclaimに設定されているため、断片化の割合がしきい値を下回ったときに、TimesTenは変更ログ表を最適化して領域を再生します。

% ttIsql "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
Command> CALL ttCacheConfig('AutoRefreshLogDeFragmentAction',,,'CompactAndReclaim');
< AutoRefreshLogDeFragmentAction, <NULL>, <NULL>, compactandreclaim >
1 row found.

現在の断片化しきい値の設定を確認するには、AutoRefreshLogDeFragmentAction文字列をParamパラメータに渡してttCacheConfigをコールします。

Command> CALL ttCacheConfig('AutoRefreshLogDeFragmentAction');
< AutoRefreshLogDeFragmentAction , <NULL>, <NULL>, compactandreclaim >

表領域の断片化の比率およびttCacheAutorefreshStatsGet組込みプロシージャから次の列が返される最適化処理が最後に実行されたタイミングを確認できます。

  • AutoRefreshLogFragmentationPCT: 表領域の現在の断片化の比率。

  • AutoRefreshLogFragmentationTS: 断片化の比率が最後に計算されたときのタイムスタンプ。

  • autorefLogDeFragCnt: この特定のキャッシュ・グループの表が最適化された回数。

『Oracle TimesTen In-Memory Databaseリファレンス』「ttCacheConfig」および「ttCacheAutorefreshStatsGet」を参照してください。