启用查询并行
除非启用并行处理,否则查询无法利用并行处理的优势。
准备工作
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 生成的并行任务的最大数量:
- 对于大多数形式的并行,请设置PARAMDEG子系统参数的值。 如果系统资源有限,PARAMDEG的最佳值是在线CPU数量的1-2倍。 但是,不要更改PARAMDEG值来禁用并行。 请使用DEGREE绑定参数或CURRENT DEGREE特殊寄存器来禁用并行。 更多信息,请参阅最大程度字段(PARAMDEG子系统参数 )。
- 对于DPSI平行度,请设置PARAMDEG_DPSI参数的值。 更多信息,请参阅 “DPSI的最大值”字段(子系统参数PARAMDEG_DPSI )。