Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Кто знает совместимы ли чтения из двух сеансов в транзакции?

Кто знает совместимы ли чтения из двух сеансов в транзакции?
Я
   Gorr
 
29.01.20 - 11:47
Совместимы ли операции чтения из двух разныз сеансов в двух разных транзакциях при условии, что режим блокировок управляемый?
 
 
   H A D G E H O G s
 
1 - 29.01.20 - 11:53
Да
   pechkin
 
2 - 29.01.20 - 11:53
если блокировка исключительная, то нет
   pechkin
 
3 - 29.01.20 - 11:54
если блокировок не ставил, то с чего бы они были не совместимы
   fisher
 
4 - 29.01.20 - 12:04
(0) Даже в автоматическом режиме блокировок совместимы, если в запросе не используется ключевое слово "ДЛЯ ИЗМЕНЕНИЯ"
   fisher
 
5 - 29.01.20 - 12:07
Основная плюшка управляемых блокировок - возможность максимально параллельно писать.
   DrWatson
 
6 - 29.01.20 - 12:07
В управляемом режиме чтение даже с записью могут быть совместимы, если не файловая.
   Gorr
 
7 - 29.01.20 - 12:15
Поправлю вопрос совместимы ли чтение и запись из разных транзакций?
Например, первая транзакция прочитала, вторая прочитала.
Сможет ли после этого первая выполнить запись обе транзакции не завершились?
Насколько знаю в автоматическом режиме такое невозможно.
   pechkin
 
8 - 29.01.20 - 12:16
чтение не накладывает блокировки до конца транзакции
   pechkin
 
9 - 29.01.20 - 12:17
поэтому если движения зависят от прочитанных данных, то ВНАЧАЛЕ ставят исключительную блокировку
   pechkin
 
10 - 29.01.20 - 12:17
до чтения
   DrWatson
 
11 - 29.01.20 - 12:20
(7) клиент-сервер - да. Файловая - нет.
   Жан Пердежон
 
12 - 29.01.20 - 12:28
(7) сможет, если вторая не наложила блокировку на тот же самый объект данных
   fisher
 
13 - 29.01.20 - 13:20
(7) В автоматическом - да, невозможно. Там используется максимальный уровень изоляции транзакций СУБД, который это не позволит.
В управляемом режиме - возможно. В нем используется уровень изоляции транзакций READ COMMITED в СУБД, в котором чтение данных не мешает записи этих данных в параллельной транзакций.
А вот обратная ситуация хитрее. Если в СУБД применяется MVCC (версионирование при записи), то и запись данных в одной транзакции не мешает их чтению в другой транзакции (будет прочитана старая версия данных).
А вот если СУБД работает в режиме "блокировочника", то после записи в одной транзакции прочитать их в другой транзакции уже не получится.
Но для последних версий платформы и MSSQL база работает в режиме MVCC, а в постгресе оно из коробки. Так что эта экзотика в 1С остается разве что для IBM DB2
   fisher
 
14 - 29.01.20 - 13:26
Про оракл забыл. Про него точно не скажу. Но он вроде давно гибридным был, так что наверное там тоже для 1С сейчас MVCC используется.
   Gorr
 
15 - 29.01.20 - 14:04
(14) версионник

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.