执行选择查询时出现DB2性能问题

9jyewag0  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(184)

我有这样的疑问:

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。

u91tlkcl

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之外,还适用于存储过程。

fhg3lkii

fhg3lkii2#

我在一个DB2查询中遇到了这种情况,该查询只是返回一个记录计数。我可以运行select语句,但不能运行具有相同连接的计数。这是一个只有几个连接的简单查询。我可以使用不同的DB2驱动程序运行相同的查询。

相关问题