在DB2中设置最大事务持续时间

时间:2017-04-21 16:15:25

标签: transactions db2

有没有办法为DB2 10.1中的事务设置最大持续时间?

我的应用程序在数据库上进行大约10分钟的查询。我的应用程序虽然只等待240秒的答案,所以在此之后交易将超时。 但是在我的数据库监视器上,我看到查询仍在运行,并且正在使用大量CPU。 我也想停止该查询,因为我的应用程序无论如何都不会看到结果(使用当前配置)。有没有办法配置DB2来停止这种长时间运行的查询?

在我的应用程序中,我执行此操作:

List<MyData> result = query.getResultList();

在我的SystemOut.log中,我最终得到了这个:

0000000b TimeoutManage I   WTRN0124I: When the timeout occurred the thread with which the transaction is, or was most recently, associated was Thread[WebContainer : 305,5,main]. The stack trace of this thread when the timeout occurred was: 
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:140)

查询命令虽然没有中断,但等到db完成后才会出现事务异常。所以连接仍然完好无损,但我的交易之前已超时。 (该应用程序在WAS 8.0上运行)

1 个答案:

答案 0 :(得分:0)

我想继续执行查询的原因是,当运行它的连接返回到池时,它没有被关闭。

DB2 for LUW包含Workload Manager功能,允许您为特定的可识别工作负载定义各种阈值,并在超过阈值时执行某些操作,包括停止正在运行的活动。您将在手册中找到examples of how to define a threshold and the associated work action

请注意,大多数Workload Manager功能都需要DB2的Advanced Enterprise Edition许可证。