DB2 V9.7 for Linux, UNIX, and Windows

解决有关耗用 CPU 时间较长的 SQL 语句的问题

当您诊断有关耗用 CPU 时间较长的 SQL 语句的问题时,下一步就是尝试解决此问题。此处提供的准则可帮助您解决此问题,并且在适用时可帮助您防止将来发生此类事件。

关于此任务

按照这些准则可帮助您解决所遇到的处理器瓶颈问题,并且可以帮助您防止将来发生此类事件。

开始之前

通过针对处理器瓶颈执行必需的诊断步骤(在诊断和解决处理器瓶颈中对此进行了概述),从而确认您遇到了有关耗用 CPU 时间较长的 SQL 语句的问题。

过程

请执行下列步骤来诊断有关耗用 CPU 时间较长的 SQL 语句的问题的原因并应用补救措施:

  1. 从操作系统、事件监视器或表函数获取有关明确导致耗用 CPU 时间较长的 SQL 语句的信息。
  2. 使用所收集的 SQL 语句信息来决定如何解决此问题。 有许多准则可帮助减少所使用的 CPU 时间。请考虑下列选项:
    • 对于在缓冲池中频繁运行表扫描的情况,您作出的响应可以是创建索引供优化器使用,以代替执行表扫描操作。查询可能已指明了适当的索引定义,但如果情况并非如此,设计顾问程序可以为您提供帮助。
    • 当 SQL 语句仅使用该语句生成的一部分行时,请使用 OPTIMIZE FOR n ROWS (OFnR) 或者 FETCH FIRST n ROWS ONLY (FFnRO) 子句来减少所有类型的资源耗用(其中包括处理器)。尤其是,OFnR 和 FFnRO 可以帮助优化 SQL 访问方案,以便最高效率地返回结果集的最初几行,而不是为了将该结果集中所有各行都返回给调用应用程序而进行优化。如果只使用 OFnR,那么在运行时可以超出 n;但是,FFnRO 将禁止所返回的行数超过 n,即使应用程序进行此尝试亦如此。
    • 如果您正在使用从文化角度而言正确的整理顺序和 Unicode 代码页,并且您减少语句所执行的比较次数,那么可以降低其处理器使用率。通常,可以通过鼓励将索引用于谓词求值和结果集排序来减少比较次数。在设计适当的索引以便最大程度地减少扫描和排序操作方面,设计顾问程序可以为您提供很大的帮助。
    • 如果获取了许多锁定,随后又将其释放,那么可以使用表级别的锁定来实现必需级别的隔离,这将缩短耗用的 CPU 时间。

下一步做什么

请重新运行应用程序,然后通过检查操作系统以及活动事件监视器或表函数数据来确保已消除有关耗用 CPU 时间较长的 SQL 语句的问题。