Почему блокируются не 2 соседние записи на границе диапазона индекса, а только 1?

1. Andreynikus 1377 12.09.13 10:52 Сейчас в теме
В многих источниках, в частности в книге «Профессиональная разработка в системе «1С:Предприятие 8», написано что при блокировке необъектных сущностей будет накладываться блокировка на диапазон + 2 соседние записи «вокруг» диапазона (одна сверху и одна снизу).
Т.е. если имеем регистр с записями
А
Б
В
Г
Д

И выполним запрос в транзакции с условием МЕЖДУ «В» И «Г» по идее должны заблокироваться записи «Б, В, Г,Д». Соседние записи в данном случае Б и Д.
Но на практике этого не происходит, блокируется только одна соседняя запись снизу (в данном случае «Д»), запись сверху не блокируется.
И судя по документации MS SQL это правильно, везде написано, что будет заблокирована N+1 строка, где N число строк удовлетворяющих условию. Но почему тогда в 1С считают, что будет блокироваться 2 строки?

Вот ссылки подтверждающие что блокируется N+1 строка:
http://technet.microsoft.com/ru-ru/library/ms191272(v=sql.105).aspx
http://yrushka.com/index.php/performance-tunning/key-range-locking-types-in-serializable-isolation-level/

В связи с этим у меня назрел когнитивный диссонанс, в реальной жизни и в документации Microsoft получается одно, и почему-то только в документации 1С написано другое.

Вопрос знатокам: какой опыт нужно провести, что бы увидеть что блокировка ставится на 2 соседние записи, а не на одну как это происходит сейчас?

P.S. Я прекрасно понимаю что в управляемом режиме другой уровень изоляции транзакции. Вопрос именно про автоматический режим.
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот