AXForum  
Вернуться   AXForum > Прочие обсуждения > Детская
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 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 на прикладном уровне (и по идее быстрее).

Блокировок при этом не будет (в этом собственно и смысл версионного режима).
Старый 09.10.2019, 12:12   #42  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Еще одна версия, почему так сделано - версионный режим потребляет больше ресурсов и работает медленнее. Возможно это тоже сказалось.
Старый 09.10.2019, 12:28   #43  
NitroJunkie is offline
NitroJunkie
Участник
 
19 / 28 (1) +++
Регистрация: 03.10.2019
Цитата:
Сообщение от Logger Посмотреть сообщение
Еще одна версия, почему так сделано - версионный режим потребляет больше ресурсов и работает медленнее. Возможно это тоже сказалось.
Тут да, есть нюанс что в MS SQL такой режим реализован не нативно. Но уровень изоляции READ_COMMITED_SNAPSHOT то используется (это тот же SNAPSHOT но на одной команде). Ну и вряд ли это медленнее, чем обеспечивать версионность на прикладном уровне.
Старый 09.10.2019, 17:20   #44  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от NitroJunkie Посмотреть сообщение
То есть можно включить уровень изоляции SNAPSHOT и MS SQL сам будет проверять версии записей и кидать update conflict'ы. И это будет по идее ровно то что делает Axapta на прикладном уровне (и по идее быстрее).

Блокировок при этом не будет (в этом собственно и смысл версионного режима).
О режимах изоляции в MS SQL имеет смысл говорить только в рамках открытой транзакции. Если транзакции нет, то и разговаривать не о чем

В этом свете Ваше предположение означает, что необходимо открыть транзакцию в момент выборки. А потом долго ждать, пока пользователь надумает внести какие-то изменения. А когда наконец дождались, то, поскольку транзакцию закрыли, придется заново сделать перезапрос всех данных для актуализации снимка.

Да и разрешение конфликта - это тоже перезапрос. При этом не конкретной записи, а вообще всего снимка. Т.е. вообще всех отображенных данных.

Как-то это все слишком накладно получается...


Режим изоляции - это не есть глобальный режим работы SQL. Это "ситуационная" (сиюминутная) настройка. Даже не соединения, а одной конкретной транзакции. Может быть изменена в рамках одной процедуры несколько раз.

Да, возможна настройка по умолчанию. Но! По прежнему в рамках транзакции. А приложение так не работает. Операция чтения, как правило, сильно отдалена от операции записи по времени. По этой причине включить их в одну транзакцию просто невозможно.

Можно, конечно, использовать этот прием именно в процедурах. Но стоит ли реализовывать два принципиально разных механизма разрешения конфликтов совместного доступа в рамках одного приложения?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: sukhanchik (3).
Теги
1c

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Почти про 1С, а вообще про ПК, Пользователей и ИТ-шников. Lemming Курилка 0 26.02.2005 14:57

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:03.