![]() |
#12 |
Участник
|
Цитата:
Но даже если и без - Locktable на резервировании будет мешать снятие резервов. Вывод - при одновременном учете и резервировании вероятность блокировать увеличивается. Цитата:
Сообщение от RedFox
![]() Ну возможно вообще создать временную таблицу со строками, связанными с 37, 5740 и просто заносить туда строки с товарами,
которые еще можно продавать. И при этом производить сравнение наличия и резерва. А потом уже, отдельным процессом все скопом резервировать.. Можно еще много чего придумать под требования. Интересное решение ![]() ![]() Или есть способ юзеру залесть во временную таблицу другого юзера? В противном случае чем Ваше предложение отличается 32 таблицы (Positive=true - товар которые еще можно продавать) + 337 - резервы на эти товары? [quote=RedFox;364169] А зачем разделять там по диапазонам, если там все под Заказы и так разделяется? [quote=RedFox;364169] К сожалению (или счастью?) номера документа не включен в PK 337 таблицы. Напоминаю тему обсуждения - уменьшить вероятность блокировок. Поясняю свою мысль: 1. Принимаем решение - разделяем 337 на диапазоны по филиалам А - 0..1000000 Б - 10000000..20000000 2. Везде в резервировании заменяем код поиска последнего Entry No. с одновременной блокировкой таблицы (LockTable; Find('+); ) на примерно след. (setfilter("Entry No.", GetFilialFilter); :Locktable; Find('+')); Что получили А и Б одновременно резервируют A: setfilter(0..1000000); find('+'); последняя запись 300 (только ее и (или) на Сиквеле экстент залочит сервер) Б: setfilter(1000000..2000000); find('+'); последняя запись 10000500 (только ее и (или) на Сиквеле экстент залочит сервер) А и Б мешать друг другу не будут. Заметьте - другие пользователи из филиалов буду ждать освобождения своих диапазонов. Вывод: У каждого филиала 337 таблица будет залочена только в своем диапазоне (кроме случаев когда последние записи 2 филиалов будут в одном экстенте - такое будет только при небольшом числе записей в 337, обойти можно также вставив пустышки) и возможно одновременное резервирование Ремарка про склад - locktable все же хорошая функция, позволяет не зарезервировать 2 раза один и тот же товар. |
|