SET CURRENT REFRESH AGE ステートメント
SET CURRENT REFRESH AGE ステートメントは、 CURRENT REFRESH AGE 特殊レジスターの値を変更します。
このステートメントは、トランザクションの制御下にありません。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 このステートメントは、動的に作成できる実行可能ステートメントです。
許可
必要ありません。
構文
説明
- 数値定数
- タイム・スタンプの duration.The 値は 0 から 99999999999999、またはその範囲内の有効なタイム・スタンプでなければなりません。 範囲の有効な形式は、yyyymmddhhmmss.nnnnnn です。それぞれの意味は次のとおりです。
- yyyy は年数であり、0 から 9999 までの範囲の値を使用できます。
- mm は月数であり、0 から 11 までの範囲の値を使用できます。
- dd は日数であり、0 から 30 までの範囲の値を使用できます。
- hh は時間数であり、0 から 23 までの範囲の値を使用できます。
- mm は分数であり、0 から 59 までの範囲の値を使用できます。
- ss は秒数であり、0 から 59 までの範囲の値を使用できます。
- nnnnnn は小数秒数です。 値の小数秒部分は無視されるので、任意の値にすることができます。
CURRENT REFRESH AGE 特殊レジスターの影響を受けるマテリアライズ照会表は、USER、SYSTEM、または FEDERATED_TOOL によって保守され、有効な数値は 0 と 99999999999999 のみです。 詳しくは、
『注』
のセクションを参照してください。 - ANY
- 99999999999999 の短形式。 numeric-constant パラメーターの説明を参照してください。 ホスト変数 (host-variable)
- タイプ DECIMAL(20,6) の変数、または DECIMAL(20,6) に割り当て可能な他のタイプ。 host-variable パラメーターを NULL に設定することはできません。 ホスト変数が標識変数を伴っている場合、 その標識変数の値は NULL 値以外でなければなりません (SQLSTATE 42815)。 host-variable パラメーターは、numeric-constant パラメーターと同じ制約に従わなければなりません。
注
- CURRENT REFRESH AGE 特殊レジスターの初期値は、dft_refresh_age データベース構成パラメーター (デフォルト値は 0) によって決まります。
- CURRENT REFRESH AGE 特殊レジスターを 0 以外の値に設定するときは、注意してください。 CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION 特殊レジスターで指定された表タイプは、基礎となる基本表の値を表していない可能性があります。 そのような表を使用して照会の処理を最適化する場合、 照会結果は基礎表内のデータを正確に表していない可能性があります。 とはいえ、基礎データが変化していないことが分かっている場合、 あるいはキャッシュに入れられたデータに関する知識に基づいて照会結果のエラーの度合いを受け入れるつもりである場合、 これはさほど気になる問題にならないことがあります。
- タイム・スタンプの算術演算では、CURRENT REFRESH AGE 特殊レジスター値として 99999999999999 を使用することはできません。その場合は、結果が日付の有効範囲外になるからです (SQLSTATE 22008)。
- CURRENT REFRESH AGE 特殊レジスターは、REFRESH DEFERRED MAINTAINED BY USER、REFRESH DEFERRED MAINTAINED BY REPLICATION 、および REFRESH DEFERRED MAINTAINED BY SYSTEM として定義したマテリアライズ照会表に影響します。 これらのマテリアライズ照会表に、CURRENT REFRESH AGE 特殊レジスターは以下のように影響します。
- CURRENT REFRESH AGE 特殊レジスターの値が 0 の場合、マテリアライズ照会表は照会の処理の最適化に使用されません。
- CURRENT REFRESH AGE 特殊レジスターの値が 99999999999999 の場合は、次の基準が両方とも満たされていれば、マテリアライズ照会表を使用して、照会の処理の最適化を促進できます。
- それらの表が CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION 特殊レジスターの値に含まれている。
- CURRENT QUERY OPTIMIZATION 特殊レジスターの値が 2 であるか、5 以上の値である。
- CURRENT REFRESH AGE 特殊レジスターの値が 0 と 99999999999999 以外の値である場合は、この特殊レジスターの設定の影響を受けるシャドー表のみを使用して照会の処理を最適化できます。ただし、次の基準が両方とも満たされている場合のみです。
- CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION 特殊レジスターの値が REPLICATION である。
- CURRENT QUERY OPTIMIZATION 特殊レジスターの値が 2 であるか、5 以上の値である。
- CURRENT REFRESH AGE 特殊レジスターは、照会の処理の最適化に REFRESH IMMEDIATE MAINTAINED BY SYSTEM マテリアライズ照会表が使用されるか REFRESH DEFERRED MAINTAINED BY FEDERATED_TOOL マテリアライズ照会表が使用されるかに影響しません。
CURRENT QUERY OPTIMIZATION 特殊レジスターの値が 2 であるか、5 以上の値である場合は、照会の処理の最適化に REFRESH IMMEDIATE MAINTAINED BY SYSTEM マテリアライズ照会表を常に使用できます。
次の基準が両方とも満たされていれば、最適化に REFRESH DEFERRED MAINTAINED BY FEDERATED_TOOL マテリアライズ照会表が使用されます。- CURRENT QUERY OPTIMIZATION 特殊レジスターの値が 2 であるか、5 以上の値である。
- CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION 特殊レジスターの値が ALL であるか、FEDERATED_TOOL を含んでいる。
例
- 例 1: 以下のステートメントは、CURRENT REFRESH AGE 特殊レジスターを設定します。
SET CURRENT REFRESH AGE ANY
- 例 2: 以下のコマンドでは、
CURRENT REFRESH AGE 特殊レジスターの現行値を検索して CURMAXAGE という名前のホスト変数に入れます。
EXEC SQL VALUES (CURRENT REFRESH AGE) INTO :CURMAXAGE;