DB2 V9.7 for Linux, UNIX, and Windows

确定 SQL 性能下降的范围

确定 SQL 性能下降是会影响所有工作负载还是影响大多数工作负载,或者性能下降问题是否仅限于从特定连接、工作负载或服务类发出的 SQL 语句。还有可能性能下降仅限于特定数据库成员。

关于此任务

使用“摘要”报告中的信息来确认是否发生了 SQL 性能下降问题。如果确实发生了此问题,那么使用此信息来确定它是会影响所有工作负载还是影响大多数工作负载,或者性能下降问题是否仅限于特定连接、工作负载、DB2® 服务类或数据库成员。

过程

要确定 SQL 语句涉及到的范围,请执行下列操作:

  1. 确定问题类别任务中所述来生成“摘要”报告。
  2. 检查表 1 表中所列示的下列一项或多项的度量值:每个连接、每个 DB2 服务类和每个 DB2 工作负载。

    将计算值与它们的正常历史值进行比较。

    在“摘要”报告的“第 2 部分 - 应用程序性能向下追溯”部分,复查下列部分:
    • “按连接提供的应用程序性能”
    • “按服务类提供的应用程序性能”
    • “按工作负载提供的应用程序性能”

    如果一个连接或少数连接(或者工作负载或服务类)的度量值比正常值更差,那么性能下降仅限于该特定源中的语句。应当着重对该 SQL 语句子集进一步进行调查。

    如果大多数连接或所有连接(或者 DB2 服务类或 DB2 工作负载)的度量值都较差,那么存在的问题是系统的总体性能下降。很可能无法通过收集并分析各个 SQL 语句来进一步诊断系统的总体性能下降的问题。

  3. 请参阅“摘要”报告的“第 3 部分 - 成员级别的信息”,并使用此信息来计算每个数据库成员的下列度量值:
    表 1. 用来确定 SQL 性能下降的范围的监视元素
    度量值 对异常结果的解释
    TOTAL_APP_COMMITS 客户机应用程序发出的 commit 语句数是吞吐量的最常见度量。可以从已经收集度量值开始度量此数目;如果您为报告指定了时间间隔,那么在该时间间隔内度量此数目。如果值低于正常值,那么这明确表示用户遇到了性能下降问题。此表中的其他度量值对问题的性质提供了确认以及一些指示。

    每个请求的 TOTAL_CPU_TIME
    TOTAL_CPU_TIME /APP_RQSTS_COMPLETED_TOTAL

    TOTAL_WAIT_TIME 百分比
    (TOTAL_WAIT_TIME / TOTAL_RQST_TIME) * 100

    在数据服务器中发生的性能下降问题通常具有下面的一种或两种症状:
    • 处理资源使用量更大
    • 等待时间所占的百分比更高
    ROWS_READ + ROWS_MODIFIED 通过读取操作和更新操作处理的行所占用的容量,可以很方便地度量数据服务器执行的工作量(但这是一个大致的度量)。如果值大于正常值,那么表示存取方案将消耗更多资源,并且执行这些存取方案的成本更高。

    每个请求的 TOTAL_CPU_TIME
    TOTAL_CPU_TIME/RQSTS_COMPLETED_TOTAL

    处理各个请求的成本将更高,这可能是所调查的性能下降问题的原因。
    RQSTS_COMPLETED_TOTAL 此成员正在更加努力地工作,因为它要处理更多请求。

    TOTAL_WAIT_TIME %
    (TOTAL_WAIT_TIME / TOTAL_RQST_TIME) * 100

    在可以继续进行处理之前,针对此成员的请求要花更多时间来等待所需要的资源。

    监视活动时间间隔的
    (POOL_READ_TIME + POOL_WRITE_TIME + DIRECT_READ_TIME + DIRECT_WRITE_TIME) /  seconds 输入等待时间和输出等待时间

    针对此成员的请求要花更多时间来等待输入请求和输出请求。
  4. 将每个数据库成员的计算度量值与每个数据库成员的计算度量值的历史值进行比较。

    如果特定数据库成员的度量值比正常值更差,那么这些数据库成员很可能受到了性能下降问题的影响。