目前我正在尝试更多地了解数据库,现在我在 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 秒?
谁能回答我的困惑?