|
07.06.2011, 15:27 | #1 |
Moderator
|
Не забывай что:
1. Кроме эскалации блокировок до уровня таблицы есть еще и эскалация блокировок до уровня страниц. Она как раз гораздо чаще случается. 2. Проблема в том, что да, каждый индивидуальный апдейт идет быстро ( секунд 10-15). Но, поскольку вся операция идет в одной транзакции, то после очередного апдейта записи (а скорее - страницы) остаются заблокироваными в то время пока система ждет доступности блокировок записей по очередной группе складских аналитик. Получается что мы можем заметную часть активных (не очень старых) записей в inventTrans заблокировать, а потом впасть в зависание потому что кто-то из пользователей почему-то заблокировал запись которую мы хотим обновить. В итоге - у нас куча записей (точнее страниц) заблокирована, а мы никого не пускаем и ждем пока какой-то отщепенец, работающий по ночам, освободит свою единственную обновленную запись. То есть - можно попробовать решить проблему просто заменив одну большую транзакцию на несколько не очень больших ( по одной транзакции для каждой группы складских аналитик). Конечно экскалации при этом остануться (и это по прежнему нехорошо), но ситуации когда мы какие-то записи (скорее страницы) мы заблокировали, и с заблокированными страницами чего-то ждем - удастся избежать... P.S. Привет AEGу Последний раз редактировалось fed; 07.06.2011 в 16:24. |
|
|
|