启用查询并行

除非启用并行处理,否则查询无法利用并行处理的优势。

准备工作

Db2 如果您将游标声明为“WITH HOLD”,并将应用程序绑定为“RR”或“RS”隔离,则不会考虑使用CP并行。

过程

启用并行处理:

  • 对于静态SQL,请在绑定或重新绑定时指定DEGREE(ANY)。
    此绑定选项仅影响静态 SQL,不会为动态语句启用并行处理。
  • 对于动态 SQL,将 CURRENT DEGREE 特殊寄存器设置为“ANY”。
    • 开始通用编程接口信息。您可以使用以下SQL语句设置特殊寄存器:
      SET CURRENT DEGREE='ANY';
      通用编程接口信息结束。
    • 您还可以通过修改CDSSRDEF子系统参数的值,将整个 Db2 子系统的特殊寄存器默认值从1更改为ANY。
    设置特殊寄存器仅影响动态语句。 它对静态SQL语句没有影响。 您还必须确保在RLST中,您的计划、软件包或授权ID的并行性没有被禁用。
  • 如果与孤立CS绑定,请尽可能选择选项CURRENTDATA(NO)。
    此选项可以提高整体性能,同时确保 Db2 考虑模糊游标的并行性。 如果用 CURRENTDATA(YES) 绑定,并且 Db2 无法判断光标是否为只读,则 Db2 不会考虑并行性。 当光标为只读时,最好明确指出光标为只读。 您可以在DECLARE CURSOR语句中使用FOR FETCH ONLY或FOR READ ONLY子句。
  • 指定一个虚拟缓冲池并行顺序阈值(VPPSEQT)值,该值应足够大,以便为并行处理提供足够的缓冲池空间。
    如果启用并行处理,当 Db2 估计可以缩短运行时间时,可以启动多个并行任务。
  • 对于并行排序,分配足够的工作文件以保持性能。
    Db2 如果您声明游标为“保持”状态,并使用隔离“RR”或“RS”进行绑定,则仅考虑并行I/O操作。
  • 对于复杂的查询,可在数据共享组成员中并行运行查询。
  • 限制平行度。 您可以通过以下方法限制 Db2 生成的并行任务的最大数量: