![]() |
|
Кто знает совместимы ли чтения из двух сеансов в транзакции? | ☑ | ||
---|---|---|---|---|
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) версионник
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |