[执行选择查询时的DB2性能问题

问题描述 投票:0回答:1

我有这个查询:

SELECT INVOICE_NUMBER, INVOICE_SEQ_NUMBER, FILE_NUMBER, MAX(INVOICE_SEQ_NUMBER) OVER (PARTITION BY INVOICE_NUMBER) AS MAX_INV_SEQ_NUM
FROM (SELECT A.INVOICE_NUMBER, A.INVOICE_SEQ_NUMBER, B.FILE_NUMBER,
             DENSE_RANK() OVER (ORDER BY A.INVOICE_NUMBER) as seqnum
      FROM TABLE1 A JOIN
           TABLE2 B 
           ON A.INVOICE_NUMBER = B.INVOICE_NUMBER AND 
              A.INVOICE_SEQ_NUMBER = B.INVOICE_SEQ_NUMBER
     ) t
WHERE seqnum <= 500;

它在表中有10000条记录时工作正常,但是今天我们增加了更多(+ 30k),并计划在表中增加更多(+ 250-300k)。现在我收到此错误:

DB2 SQL Error: SQLCODE=-905, SQLSTATE=57014, SQLERRMC=ASUTIME;000000000007;000000009000;SYSTEM PARAMETER, DRIVER=3.65.77

查询是否正确或是否针对具有大量记录的表进行了优化?我们应该如何处理呢?为某些列编制索引或重组查询?

更新:显然,我对添加到表中的记录数量有误,目前在TABLE1中有200万条记录,在TABLE2中有400万条记录,而不是我最初提到的30k。

db2 query-performance db2-zos
1个回答
0
投票

SQL0905N, ASUTIME resource limit exceeded for query against mainframe

您遇到了资源限制问题。

问题

本文档提供了有关您何时应用程序针对DB2 UDB for z / OS数据库运行查询,并且遇到错误:SQL0905N由于资源原因执行失败超出限制。资源名称=“ ASUTIME” ...

原因

超出的资源是在DB2®中找到的ASUTIME参数适用于z /OS®表SYSIBM.DSNRLST01的Universal Database™(DB2 UDB)。ASUTIME指定了每个允许的最大处理器服务单元动态SQL语句(例如SELECT,UPDATE,INSERT或DELETE)。

问题详细信息完整错误消息的示例如下:

COM.ibm.db2.jdbc.DB2Exception:[IBM] [CLI驱动程序] [DB2] SQL0905N由于超出了资源限制,执行失败。资源资源名称=“ ASUTIME”,限制=“ 000000000184” CPU秒(“ 000005206074”服务单元)源自“ SYSIBM.DSNRLST01”。 SQLSTATE = 57014

答案

重写复杂的查询,以便减少处理器服务单元消耗或增加了ASUTIME参数。 ASUTIME参数除动态SQL外,还适用于存储过程。

© www.soinside.com 2019 - 2024. All rights reserved.