Показать сообщение отдельно
Старый 13.09.2012, 17:22   #11  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Ааа - в общем это они так подправили ошибку, которую я репортил. (Я в принципе про это в блоге писал). В старой версии у них там использовался неслабый такой update_recordset. А проблема оператора update состоит в том что он блокирует от записи другим процессом не только те записи, которые обновил, но и те записи которые прочитал . То есть - если план исполнения простенький, то он блокирует записи на страничке, читает, обновляет, разблокирует все кроме обновленных. А вот если план исполнения сложный, то он блокирует, читает,читает другую таблицу, джойнит, джойнит по хэшу,сортирует и тп и только потом в конце обновляет и разблокирует. В итоге update_recordset в версии из RU7 тупо блокировал всех пользователей (точнее почти всех - всех кто с inventTrans по записи может работать) одного турецкого клиента минимум минут на 5 (это если повезло и сиквел выбрал более или менее приличный план исполнения), а максимум минут на 40. В новой версии класса они сначала делают select recId в квазивременную таблицу, а потом запускают update_recordset только по тем записям которые в эту табличку попали...
Так что обновление в целом полезно, но забавно что они забыли саму табличку вложить в RU8. Возможно это на российской части partnersource выложили RU8 с включением пары позднейших хотфиксов..

Последний раз редактировалось fed; 13.09.2012 в 17:27.
За это сообщение автора поблагодарили: AlGol (1), S.Kuskov (1).