目前我正在尝试了解有关数据库的更多信息, 现在我在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秒?
有人能回答我的困惑吗?
答案 0 :(得分:0)
原来是我对锁定时间的理解是错误的。 运行时间超过锁定时间的事务是可能的,因为锁定超时将导致等待时间超过此参数中的时间的事务,而不是持有锁定的事务。