QUERYACCELERATION 绑定选项

QUERYACCELERATION绑定选项用于指定是否对静态SQL查询进行加速绑定,如果是,则指定行为。 如果指定了绑定选项,它还为用于动态查询的当前查询加速度特殊寄存器提供初始值,前提是尚未为特殊寄存器发出SET语句。

当使用此绑定选项的包运行时,QUERYACCELERATION值(而非QUERY_ACCELERATION子系统参数)将为CURRENT QUERY ACCELERATION特殊寄存器提供初始值。 CURRENT QUERY ACCELERATION特殊寄存器指定动态SQL查询的加速行为。 因此,通过将应用程序包与QUERYACCELERATION绑定选项重新绑定,您还可以加速应用程序中的动态SQL查询。 您可以指定此绑定选项,而不是修改应用程序以添加明确的 SET CURRENT QUERY ACCELERATION 语句或设置 QUERY_ACCELERATION 子系统参数。 对于包中的动态 SQL 查询,您指定的绑定选项值将覆盖 QUERY_ACCELERATION 子系统参数。 此绑定选项没有默认值,因此,如果您不指定此绑定选项,QUERY_ACCELERATION子系统参数将初始化特殊寄存器。

限制 :QUERYACCELERATION绑定选项仅适用于游标查询、SQL INSERT from SELECT语句的SELECT部分以及本地运行的静态SQL SELECT INTO语句。 如果静态 SQL SELECT INTO 语句被绑定为加速,但远程运行,则 Db2 会在运行时失败并返回负 SQL 代码。
命令选项 选项价值 搭配
queryAcceleration
  • (NONE)
  • (ENABLE)
  • (ENABLEWITHFAILBACK)
  • (ELIGIBLE)
  • (ALL)
注:
  1. QUERYACCELERATION绑定选项不适用于本地SQL程序包高级触发器的 REBIND。

选项说明 QUERYACCELERATION

QUERYACCELERATION(NONE)
指定应用程序中的静态SQL查询不会绑定加速,也不会在应用程序运行时加速。
QUERYACCELERATION(ENABLE)
指定静态SQL查询在满足加速条件(包括成本和启发式条件)时进行加速。 当应用程序运行时,查询将发送至加速器。 否则,如果静态查询不符合加速条件,则查询将在 Db2 中执行。

如果在应用程序运行时执行加速静态查询时出现错误情况(例如以下示例中的情况), Db2 将失败,并向应用程序返回负SQL代码:

  • 在加速器上运行静态查询时出现故障。
  • 查询时,加速器返回错误。
  • 加速器未启动, Db2 无法将静态查询路由到加速器执行。
QUERYACCELERATION(ENABLEWITHFAILBACK)
结果与ENABLE 相同,除非在应用程序运行时,加速静态查询首次打开时出现错误条件。 在这种情况下, Db2 不会让静态查询失败并向应用程序返回负面的SQL代码,而是对查询执行临时语句级增量绑定,并在 Db2 中运行查询。 应用程序没有发现加速故障。 当应用程序成功打开加速器查询后,无法再发送电子邮件至 Db2
限制: 更改开始 FL 504 如果查询包含仅传递表达式, Db2 返回错误并且不会加速查询,即使存在匹配的用户定义函数。 有关仅传递表达式的更多信息,请参阅使用仅传递表达式加速查询更改结束
QUERYACCELERATION(ELIGIBLE)
指定如果静态SQL查询满足基本加速条件,则无论代价或启发式条件如何,都将加速该查询。 当应用程序运行时,查询将发送至加速器。

与ENABLE 的行为一样,如果在应用程序运行时执行加速静态查询时出现错误, Db2 将失败,并向应用程序返回负SQL代码。

QUERYACCELERATION(ALL)
指定应用程序中的所有静态SQL查询在应用程序运行时绑定到加速器并路由到加速器。 如果 Db2 确定静态查询无法绑定到加速器上运行,并且查询引用了用户基础表或视图,则BIND或REBIND PACKAGE操作将失败,并显示该查询的错误消息。 (已声明的全局临时表(DGTT)和已创建的全局临时表(CGTT)除外,因为这些表无法加速。)

与ENABLE 的行为一样,如果在应用程序运行时执行加速静态查询时出现错误, Db2 将失败,并向应用程序返回负SQL代码。

Db2 目录表 SYSIBM.SYSPACKSTMT 中,用于加速的静态SQL查询的STATUS列值为 “O ”。 对于基于游标的静态查询,DECLARE CURSOR、OPEN、FETCH和CLOSE语句的 SYSPACKSTMT.STATUS 列值均为 “O ”。 对于SELECT语句中的静态INSERT,如果SELECT语句已绑定加速,则 SYSPACKSTMT.STATUS 列的值也是 “O ”。

默认值 QUERYACCELERATION

进程 缺省值
绑定程序包 NONE
重新绑定程序包 NONE

此绑定选项没有默认值。 QUERYACCELERATION绑定选项不会继承QUERY_ACCELERATION子系统参数的设置。