Показать сообщение отдельно
Старый 09.10.2019, 12:03   #41  
NitroJunkie is offline
NitroJunkie
Участник
 
19 / 28 (1) +++
Регистрация: 03.10.2019
Цитата:
Сообщение от trud Посмотреть сообщение
REPEATABLE READ вполне так даст вам блокировки в SQL Server
https://docs.microsoft.com/en-us/sql...ql-server-2017

Еще раз - мы хотим получить систему без блокировок в общем случае. На чтении это дает только READ_COMMITTED_SNAPSHOT(ON). Но он будет давать блокировки при записи(что как-бы тоже плохо). Поэтому запись сделали в 2 этапа, что потребовало добавление в каждую таблицу столбца RecVersion. (Ну и плюс RecId - уникальный идентификатор записи)
Я знаю что REPEATABLE_READ дает блокировки (так как MS SQL по умолчанию блокировочник). Но в MS SQL уже давно сделали версионный режим и соответствующий уровень изоляции - SNAPSHOT, который соответствует REPEATABLE_READ в PostgreSQL, и SERIALIZABLE в Oracle. То есть можно включить уровень изоляции SNAPSHOT и MS SQL сам будет проверять версии записей и кидать update conflict'ы. И это будет по идее ровно то что делает Axapta на прикладном уровне (и по идее быстрее).

Блокировок при этом не будет (в этом собственно и смысл версионного режима).