Транзакция длилась дольше тайм-аута блокировки
В настоящее время я пытаюсь узнать больше о базе данных, сейчас я нахожусь в DB2, и у меня есть настройка времени ожидания 30 секунд, чтобы протестировать ее, я выполнил несколько тысяч транзакций одновременно, чтобы провести стресс-тестирование сервера и записать время, необходимое для каждой хранимой процедуры (ИП) называется. таймер запускается после объявления строки в SP, а время окончания записывается непосредственно перед его окончанием. И я обнаружил, что транзакция заняла гораздо больше времени, чем 30 секунд (в какой-то момент даже близко к 70 секундам). Есть ли что-то, что я сделал неправильно (я только установил параметр LOCKTIMEOUT в db cfg) или это так?
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 секунд?
Кто-нибудь может ответить на мое замешательство?
1 ответ
Оказалось, что мое понимание о времени блокировки неверно. транзакция, которая выполнялась дольше, чем время блокировки, возможна из-за истечения времени блокировки, что приведет к уничтожению транзакции, которая ожидает дольше, чем время в этом параметре, а не та, которая удерживает блокировку.