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 |
|
- QUERYACCELERATION绑定选项不适用于本地SQL程序包或高级触发器的 REBIND。
选项说明 QUERYACCELERATION
- QUERYACCELERATION(NONE)
- 指定应用程序中的静态SQL查询不会绑定加速,也不会在应用程序运行时加速。
- QUERYACCELERATION(ENABLE)
- 指定静态SQL查询在满足加速条件(包括成本和启发式条件)时进行加速。 当应用程序运行时,查询将发送至加速器。 否则,如果静态查询不符合加速条件,则查询将在 Db2 中执行。
如果在应用程序运行时执行加速静态查询时出现错误情况(例如以下示例中的情况), Db2 将失败,并向应用程序返回负SQL代码:
- 在加速器上运行静态查询时出现故障。
- 查询时,加速器返回错误。
- 加速器未启动, Db2 无法将静态查询路由到加速器执行。
- QUERYACCELERATION(ENABLEWITHFAILBACK)
- 结果与ENABLE 相同,除非在应用程序运行时,加速静态查询首次打开时出现错误条件。 在这种情况下, Db2 不会让静态查询失败并向应用程序返回负面的SQL代码,而是对查询执行临时语句级增量绑定,并在 Db2 中运行查询。 应用程序没有发现加速故障。 当应用程序成功打开加速器查询后,无法再发送电子邮件至 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子系统参数的设置。
