Имя: Пароль:
1C
 
READ_COMMITTED_SNAPSHOT и автоматический режим блокировки данных
,
0 TormozIT
 
гуру
11.02.15
15:51
Исходя из того, что при включенном параметре базы MSSQL READ_COMMITTED_SNAPSHOT вне транзакций чтение происходит из версий (без грязного чтения), сделал следующее предположение.

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

Вот нашел косвенное подтверждение http://forum-mista.pro/topic.php?id=697431

Кто нибудь еще пробовал?
1 pescennius
 
11.02.15
15:53
И без SNAPSHOT чтенние тоже не будет грязным...
2 Гёдза
 
11.02.15
15:57
(1) даже в авто режиме?
3 pescennius
 
11.02.15
15:58
(2) А какая разница, при записи блокируются записи исключительной блокировкой и чтение будет ожидать...
4 pescennius
 
11.02.15
16:00
Фактически именно с SNAPSHOT можем получить грязное чтение, так как получив состояние базы до начала транзакции может возникнуть ситуация, когда алгоритм оперирует одними данными, а данные уже изменились (транзакция изменяющая данные завершилась успешно)
5 TormozIT
 
гуру
11.02.15
16:16
(4) Ну это уже искажение смысла понятия "грязное чтение", которое как раз заключается в возможности прочитать данные незафиксированных транзакций.
6 Spieluhr
 
11.02.15
16:17
(3) чтение вне транзакции ожидать не будет
7 H A D G E H O G s
 
11.02.15
16:21
(0) У что, у сервера ms sql есть режим

READ UNCOMMITTED SNAPSHOT ?
8 H A D G E H O G s
 
11.02.15
16:22
У что -> А что
9 H A D G E H O G s
 
11.02.15
16:25
Или речь про 8.3, которая так и читает вне транзакций?
10 H A D G E H O G s
 
11.02.15
16:27
Резюмирую:
1) 8.2 так делать не будет, так как она в любом режиме вне транзакций читает в режиме Read_Uncommited, что запросом, что в списках. Snapshot не поможет.
2) 8.3 так и делает, как сказал автор.
11 TormozIT
 
гуру
11.02.15
16:33
(10) Понятно. Сомнения у меня были именно про работу в автоматическом режиме.
12 H A D G E H O G s
 
11.02.15
16:34
(11) Ты счаст тоже зародил во мне сомнения по поводу авт. режима для 8.3 :-)  Но, скорее всего, так и есть. Но - мало ли! Проверить - стоит!
13 TormozIT
 
гуру
11.02.15
16:40
Проверил на 8.3. Сомнения подтвердились. READ_COMMITTED_SNAPSHOT проверяется 1Ской в режиме "Автоматический и управляемый" и "Управляемый", а в режиме "Автоматический" динамический список отображает незафиксированные изменения.
14 H A D G E H O G s
 
11.02.15
16:47
(13) Да, Read_Uncommited  (with nolock)
15 TormozIT
 
гуру
11.02.15
16:52
Интересно, почему так сделали. Ведь могли бы и для автоматического режима поддержать параметр READ_COMMITTED_SNAPSHOT.
16 H A D G E H O G s
 
11.02.15
16:55
(15) Спроси на семинаре, почему периодический РС при записи накладывает управляемую блокировку по всему диапазону периода.
17 H A D G E H O G s
 
11.02.15
16:55
ну и (15) спроси.
18 TormozIT
 
гуру
11.02.15
16:56
(16) Единственное объяснение, которое придумал - для защиты результатов виртуальных таблиц СрезПоследних и родственных.
19 TormozIT
 
гуру
11.02.15
17:01
(18) + По сути это похоже на блокирование таблицы остатков у остальных типов регистров при их записи, только ее здесь физически нет, но все равно защищается как бы виртуальные таблицы.
20 H A D G E H O G s
 
11.02.15
17:02
(19) Скорее всего оно. Я сам невдуплил.
21 Провинциальный 1сник
 
11.02.15
17:04
(15) Потому что декларируется поддержка SQL2000, а в нём нет снапшот-изоляции
22 TormozIT
 
гуру
11.02.15
17:06
(21) Тогда почему же для управляемого режима работает?
23 Жан Пердежон
 
11.02.15
17:25
(0) ну да, не изменится, был repeateble read/serialized, а стал read commited (точнее его аналогом)
24 floody
 
11.02.15
17:28
(0) прочитал 5 раз, не понял в чем вопрос. можете перефразировать для особо тупых?
25 Spieluhr
 
11.02.15
17:36
(24) ТС хотел добиться, чтобы в автоматическом режиме чтение вне транзакции осуществлялось в режиме Read Committed Snapshot.
Но 1С как ни крути читает с Read_Uncommited (with nolock)
26 floody
 
11.02.15
17:38
(25) а, понял, спасибо.
27 MM
 
11.02.15
17:45
(15)А не проще перевести конфигурацию в "Автоматический и управляемый", ведь Автоматический режим это устаревший?
(19) В 8.3 может быть и реальной таблицей, в новых версиях. Что, конечно, никак не влияет на идею блокировок.
(21) Если бы хотели, то эта функция могла бы включаться если её СУБД поддерживает.
28 TormozIT
 
гуру
11.02.15
19:27
(27) Перевести на режим "Автоматический и управляемый" теперь, когда я знаю такое важное отличие от "Автоматический", конечно здравое решение.
29 TormozIT
 
гуру
14.02.15
12:19
(16) Изменения в 8.3.6

Поле Период, установленное в отборе набора записей периодического регистра сведений, включается в набор полей, по которым устанавливается управляемая блокировка при чтении или записи набора записей.

В режиме совместимости с версией 8.3.5 поведение не изменилось.

Похоже все таки признали такое поведение не оптимальным.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.