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