表領域の変更ログ表の最適化
自動リフレッシュを使用したキャッシュ・グループの変更ログ表を長期間にわたって使用したり過度なワークロードを与えたりすると、表領域が断片化する場合があります。
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」を参照してください。