|
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 поведение не изменилось. Похоже все таки признали такое поведение не оптимальным. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |