0

目前我正在尝试更多地了解数据库,现在我在 DB2 上,并且在 30 秒时设置了 locktimeout 来测试它,我同时运行了几千个事务来对服务器进行压力测试,并记录每个存储过程所花费的时间( SP) 调用。计时器在 SP 中的声明行之后开始,并且在它结束之前记录的结束时间。而且我发现交易花费的时间远远超过 30 秒(有时甚至接近 70 秒)。是不是我做错了什么(我只在 db cfg 中设置了 LOCKTIMEOUT 参数)或者是这样吗?

begin
//record the start time
//the actuan transaction
//record end time, and return the time as result sets
end

如果假设线程 1、2、3 同时进入,线程 1 持有锁 29 秒,线程 2 持有锁 29 秒,线程 3 会因为等待太久而被杀死吗?如果它没有在 10 秒内被杀死并完成任务,那么事务时间是 68 秒还是只有 10 秒?

谁能回答我的困惑?

4

1 回答 1

0

原来是我对锁定时间的理解是错误的。运行时间超过锁定时间的事务是可能的,因为锁定超时将杀死等待时间超过此参数时间的事务,而不是持有锁的事务。

于 2015-06-23T17:04:02.067 回答