我有这个查询:
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
查询是否正确或是否针对具有大量记录的表进行了优化?我们应该如何处理呢?为某些列编制索引或重组查询?
更新:显然,我对添加到表中的记录数有误,目前,表1中有200万条记录,表2中有400万条记录,而不是我最初提到的30k。
答案 0 :(得分: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外,它还适用于存储过程。