DBQLとTDWMのディクショナリ テーブルは、Teradata Databaseがそれらのテーブルごとに保持しているキャッシュに基づいて更新されます。FLUSH QUERY LOGGINGを使用しない場合、Teradata Databaseは、フラッシュのタイマーに基づいてキャッシュをフラッシュするか、満杯になった時点でフラッシュします(デフォルトでは、フラッシュのタイマーは10分ごとに設定されています)。
この方法でそれらのログを更新すると、データの不整合がいろいろな形で発生する可能性があります。例えば、DBQLObjTblキャッシュがDBQLogTblキャッシュの前にフラッシュされると、DBQLObjTblの行が孤立しているように見えることがあります。Teradata Databaseは、DBQLogTblキャッシュの対応する行をいずれはフラッシュするとしても、10分間はフラッシュしない可能性があります。DBS制御フラグDBQLFlushRateを調整してフラッシュ間隔を小さな値に変更することもできますが、ロギング キャッシュをフラッシュする頻度を多くするとシステムのパフォーマンスが低下することがあるため、通常、そのような調整をするのは望ましいことではありません。
FLUSH QUERY LOGGINGリクエストを使用して手動でロギング キャッシュをフラッシュする操作には、関連するディクショナリ テーブルの更新に関する余分のタスクをAMPに負担させるというオーバーヘッドが伴います。クエリー ログ キャッシュを手動でフラッシュするときには、この余分のオーバーヘッドを常に自覚し、責任を持って操作を実行するようにしてください。
処理の負荷が非常に大きいシステムでFLUSH QUERY LOGGINGリクエストを頻繁に使用することはお勧めできません。処理の負荷が大きいシステムでDBQLとTDWMのいずれかまたは両方が有効になっている場合は、それぞれのキャッシュが満杯になるたびにログ テーブルが頻繁に更新されます。そのような動作は、デフォルトの10分間隔のタイマーの設定時間が来る前に頻繁に発生する可能性があります。したがって、Teradata Databaseによってキャッシュが頻繁にフラッシュされず、データの不整合が生じない場合に限って、FLUSH QUERY LOGGINGリクエストを使用するというのが最適な方法です。