创建附加工作文件表空间以减少争用

在某些情况下,您可以通过创建额外的工作文件表空间来减少I/O争用。

关于本任务

对于单个查询,建议的工作文件磁盘卷数量为最大数据分区数量的五分之一,最小为5,最大为50。 对于并发查询,请将此值乘以并发查询的数量。 根据餐桌数量和同时进行的活动数量,性能可能会有所不同。 一般来说,增加表格空间可以提高性能。

过程

要微调工作文件数据库中不同表格的组合,请使用以下方法:

  • 在查询并行环境中,确保工作文件磁盘卷的数量至少等于给定工作负载中查询使用的并行操作的最大数量,将这些卷放在不同的通道或控制单元路径上,并监控工作文件表空间的I/O活动。
    1. 将音量设置在不同的通道或控制单元路径上。
    2. 监控工作文件表空间I/O活动。
      您可能需要进一步分离工作文件活动,以避免冲突。
    3. 随着工作文件活动量的增加,请考虑增加工作文件缓冲池的大小,以便更高效地支持并发活动。
      对于工作文件缓冲池,一般建议增大其大小,以调整以下缓冲池统计信息:
      • MERGE PASSES DEGRADED,应小于MERGE PASS REQUESTED.
      • WORKFILE REQUESTS REJECTED,应小于WORKFILE REQUEST ALL MERGE PASSES.
      • 同步读取I/O,应小于预读取的页面数的1%
      • 顺序预取数量应为:
        • 8个用于4 KB工作文件缓冲池
        • 2个用于 32KB 工作文件缓冲池
        您可以将顺序预取读取的页数(QBSTSPP)除以顺序预取读取的页数(QBSTPIO),从而计算出顺序预取的数量。
  • 如果您的应用程序需要大量使用临时对象或可在跨多个表空间的工作文件中处理的操作,则应在工作文件数据库中定义多个具有首选属性的表空间。

    下表显示了 Db2 如何选择首选属性:

    工作文件操作 首选表格空间属性
    DGTT工作
    1. 一个由 Db2 管理的(STOGROUP)分区增长(PBG)表空间(任何SECQTY值)
    2. 分段(非UTS)表空间,SECQTY值不为零
    分类工作
    1. Db2 管理的分段(非 UTS)表空间,SECQTY 值为零
    2. 用户管理的表空间,与辅助空间分配无关

    对于可能跨越多个表空间的处理, Db2 倾向于在具有首选属性的表空间中为工作文件分配空间。 通过创建具有这些属性的多个工作文件表空间,您可以支持工作文件的高效并发读写 I/O。

    当工作文件数据库中的表格空间存储在用户管理的数据集中时, Db2 无法检测是否存在任何二次分配。 因此,此类表格空间与具有首选属性的表格空间享有同等优先级,即使该表格空间具有次要分配。

    使用工作文件且可跨越多个表空间的处理包括以下对象和操作:

    • 同时进行的大规模分类和单一的大规模分类
    • 已创建临时表
    • 有些合并、星形连接和外部连接
    • 非相关子查询
    • 具体化视图
    • 嵌套表表达式
    • 带有过渡变量的触发器
  • 如果您的应用程序需要大量使用只能在单个表空间中处理的临时对象或操作,请在工作文件数据库中定义一些具有以下首选属性的表空间:
    • 按增长分区(不考虑SECQTY值)或分段(非UTS)表空间,这些表空间未分区且SECQTY值不为零。
    • 存储在 Db2 管理的数据集中。

    Db2 优先处理不能跨越多个表空间的数据,而将数据处理到具有首选属性的表空间中。 具有首选属性的表空间有助于减少临时对象或操作之间的空间争用,这些对象或操作可以跨越多个表空间,也可以不跨越。

    使用工作文件且仅限于单个表空间的处理包括对象和操作,例如:

    • 已声明的全局临时表
    • 可滚动光标
    • SQL MERGE语句
  • 在创建已声明的全局临时表之前,请确保工作文件数据库中至少有一个32 KB的页面大小表空间。
    声明的全局临时表位于工作文件数据库的表空间中, Db2 不会为声明的全局临时表创建隐式表空间。
  • 为了进一步提高性能,请考虑分配更多的32KB数据集。
    Db2 当工作文件总记录大小(包括记录开销)超过100字节时,使用32 KB的工作文件数据集,从而在某些情况下提高性能,减少工作文件缓冲池和磁盘空间的使用。

示例

开始通用编程接口信息。创建新的工作文件表空间:

  1. 使用VSAM DEFINE CLUSTER语句定义所需的数据集。 您可以将编辑后的DSNTIJTM安装作业中的定义作为模板。
  2. 通过输入以下SQL语句创建工作文件表空间(如果您使用的是 Db2 管理数据集,请跳过此步骤):
    CREATE TABLESPACE xyz IN DSNDB07
       BUFFERPOOL BP7
       CLOSE NO
       USING VCAT DSNC111;
    通用编程接口信息结束。