Показать сообщение отдельно
Старый 02.03.2021, 18:49   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,894 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Потому что номерная серия используется многими пользователями, и если бы она обновлялась в рамках основной сессии (и основной транзакции), то запись бы блокировалась до окончания основной транзакции. (которая вполне может минут 10-15 длиться в тяжелом случае).
А проверка уровня транзакции 0, она с другим механизмом связана, с механизмом непрерывных номерных серий. Там кроме самой серии ведется табличка с выделенными номерами. Когда номер выделяется, он в это табличке помечается как Нерешенный. (поскольку до окончания основной транзакции невозможно сказать, будет этот номер использован или нет). В момент окончания или отката основной транзакции, запускается обработчик, который эти номера помечает как использованные или неиспользованные. Когда система пытается выделить новый номер, прежде чем увеличивать основной счетчик, система ищет в табличке уже выделенных значений, строки помеченные как Свободный.
Там еще есть механизм, который позволяет непрерывными номерными сериями пользоваться не из транзакции. Можно просто выделить номер и позже его через API пометить как используемый или неиспользуемый....
За это сообщение автора поблагодарили: Lemming (12).