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



我有此查询:

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。

sql0905n,针对大型机的查询超出了asutime资源限制

您遇到了资源限制问题。

问题

本文档为您的何时提供故障排除信息 应用程序针对Z/OS数据库的DB2 UDB运行查询,并且 遇到错误:由于资源而导致的SQL0905N执行失败 超过限制。资源名称=" asutime" ...

原因

超过的资源是在DB2®中找到的ASUTIME参数 Z/OS®表sysibm.dsnrlst01的通用数据库™(DB2 UDB(。 Asutime指定最大处理器服务单元 动态SQL语句(例如,选择,更新,插入或删除(。

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

com.ibm.db2.jdbc.db2 exception:[ibm] [CLI驱动程序] [DB2] SQL0905N 由于资源限制超出了未成功的执行。资源 name =" asutime",limit =" 000000000184" CPU秒(" 000005206074" 服务单位(源自" sysibm.dsnrlst01"。sqlstate = 57014

答案

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

我用DB2查询访问了这一点,该查询只是返回记录计数。我可以运行SELECT语句,但不能以相同的连接来计数。这是一个简单的查询,只有几个连接。我能够使用其他DB2驱动程序运行相同的查询。

相关内容

  • 没有找到相关文章

最新更新