Показать сообщение отдельно
Старый 25.11.2003, 18:08   #7  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Подробности
Цитата:
- блокировка процесса другими процессами
------------------
блокировки будут не только на inventSum. При "активной работе пользователей" блокировки будут и на inventTrans
Действительно, при "активной работе пользователей" будут изменяться и добавляться провдки (InventTrans). Но так как оборотка, обычно, строится по историческим данным, то вероятность попадания такой записи в выборку очень мала (при стандартном подходе). Если строить от текущего состояния inventSum, то будут выбираться наисвежайшие данные, т.е. 99% попадется заблокированая проводка или остаток (InventSum).
Конечно, можно сделать NOLOCK, но это увеличит вероятность ошибочных результатов.

Цитата:
- некорректные кол-ва и суммы
---------------
Некорректных не будет, поскольку есть блокировки
Пример:
"Новая оборотка" получила данные из inventSum (PostedQty, PostedValue), потом стала отнимать исторические проводки.. в этот момент некий процесс (накладная) изменяет количество и сумму... Оборотка останавливается, дожидается окончания процесса.. накладная закрылась.. обротка "увидела новую проводку" и вычла ее из старого InventSum. (Проверено на практике)
Конечно, оборотка может попытаться заблокировать, то что считывает, но тогда см.п.1