使用 IMPLICIT_PDQ 会话环境选项来允许数据库服务器决定分配给查询的内存数量。除非也设置 BOUND_IMPL_PDQ,当 IMPLICIT_PDQ 设置为 ON 或 100 时,数据库服务器不理会 PDQPRIORITY 环境变量的当前显式设置。
在缺省情况下,IMPLICIT_PDQ 是禁用的。当 IMPLICIT_PDQ 设置为 OFF 时,不论是显式地还是在缺省情况下,当为查询分配资源时,数据库服务器不覆盖当前的 PDQPRIORITY 设置。
仅在支持 PDQPRIORITY 的系统上,IMPLICIT_PDQ 会话环境选项是可用的。
如果您设置 value 介于 1 与 100 之间,则数据库服务器根据指定的值调节它的估计值。如果您设置低值,则减少分配给查询的内存数量,这可能增加查询运算符溢出的风险。
SET ENVIRONMENT IMPLICIT_PDQ ON;
要要求数据库服务器来使用显式的 PDQPRIORITY 设置作为上限和它授权给查询的可选的较低限,请设置 BOUND_IMPL_PDQ 会话环境选项。
星型连接查询执行计划需要设置 PDQ 优先级。将 IMPLICIT_PDQ 会话环境选项设置为启用隐式的 PDQ 提供一种替代。如果对于该会话将 IMPLICIT_PDQ 设置为 ON,则星型连接执行计划会考虑不带有显式的设置 PDQPRIORITY。可通过 sysdbopen 过程来发出 SET ENVIRONMENT IMPLICIT_PDQ ON 语句,以便当用户打开数据库时自动地启用隐式的 PDQ。在此情况下,查询优化器自动地考虑不带有由用户设置的显式的 PDQPRIORITY 的星型连接。
查询的 IMPLICIT_PDQ 功能在该查询中的所有表要求至少 LOW 级别统计。如果在该查询中分发统计遗失一个或多个表,则 IMPLICIT_PDQ 设置不起作用。此限制还适用于星型连接查询,在遗失统计的情况下,不支持它。
要获取关于创建 sysdbopen 过程和关于指定其会话会受影响的用户的信息,请参阅主题 使用 SYSDBOPEN 和 SYSDBCLOSE 过程。要获取关于 PDQPRIORITY 环境变量的信息,请参阅 GBase 8s SQL 参考指南。要获取关于 DS_TOTAL_MEMORY 和 MAX_PDQPRIORITY 配置参数的信息,请参阅 GBase 8s 管理员参考手册。