我有这样的疑问:
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万条记录,而不是我最初提到的30 k。
2条答案
按热度按时间u91tlkcl1#
SQL0905N, ASUTIME resource limit exceeded for query against mainframe
遇到资源限制问题。
问题
本文档提供了应用程序在对DB2 UDB for z/OS数据库运行查询时遇到以下错误的故障排除信息:SQL 0905 N由于超出资源限制而导致执行失败。资源名称=“ASUTIME”...
"原因"
被超过的资源是在z/OS®表SYSIBM.DSNRLST01的DB2® Universal Database™(DB2 UDB)中找到的ASUTIME参数。ASUTIME指定每个动态SQL语句(例如SELECT、UPDATE、INSERT或DELETE)允许的最大处理器服务单元。
问题详细信息完整的错误消息示例如下:
COM.ibm.db2.jdbc.DB2Exception:[IBM][CLI驱动程序][DB2] SQL 0905 N由于超出资源限制而执行不成功。资源名称=“ASUTIME”,限制=“00000000184”CPU秒数(“000005206074”服务单位)派生自“SYSIBM.DSNRLST01”。SQLSTATE=57014
请回答
重写复杂查询以使用较少的处理器服务单位,或增大ASUTIME参数。ASUTIME参数除了适用于动态SQL之外,还适用于存储过程。
fhg3lkii2#
我在一个DB2查询中遇到了这种情况,该查询只是返回一个记录计数。我可以运行select语句,但不能运行具有相同连接的计数。这是一个只有几个连接的简单查询。我可以使用不同的DB2驱动程序运行相同的查询。