SET CURRENT REFRESH AGE 语句
SET CURRENT REFRESH AGE 语句可更改 CURRENT REFRESH AGE 专用寄存器的值。
此语句不受事务控制。
调用
此语句可嵌入应用程序中或者以交互方式发出。 它是可动态准备的可执行语句。
权限
不需要执行任何操作。
语法
描述
- numeric-constant
- 表示时间戳记 duration.The 值必须是 0-9999999999999999 或该范围内的有效时间戳记。 范围的有效格式为 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 参数设置为空值。 如果主机变量具有关联的指示符变量,那么该指示符变量的值不能指示空值 (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;
