SET CURRENT REFRESH AGE ステートメント

SET CURRENT REFRESH AGE ステートメントは、 CURRENT REFRESH AGE 特殊レジスターの値を変更します。

このステートメントは、トランザクションの制御下にありません。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 このステートメントは、動的に作成できる実行可能ステートメントです。

許可

必要ありません。

構文

Read syntax diagramSkip visual syntax diagramSETCURRENT REFRESH AGE=numeric-constantANYhost-variable

説明

数値定数
タイム・スタンプの 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 は小数秒数です。 値の小数秒部分は無視されるので、任意の値にすることができます。
値全体の先行ゼロや後続小数秒を含める必要はありません。 ただし個々の要素については、その左側に別の要素がある場合、ゼロを含める必要があります。 例えば、1 時間 7 分 5 秒を表すには、10705 を使用します。

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;