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