#0
by snowmanual
Вечер добрый! Наткнулся на следующую проблему. Одновременно выполняется 2 сеанса. Оба устанавливают управляемые блокировки по одному регистру сведений, но по разным полям, по конкретному значению. При этом один сеанс блокирует другой, хотя по логике этого быть не должно. Кто знает в чём дело? Пример кода сеанса 1. НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый); Пример кода сеанса 2. НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
#2
by ptiz
Дело в твоем понимании работы блокировок. У тебя в записях с Измерение1="1" встречаются такие, где Измерение2 = "2"
#4
by Cyberhawk
Может, транзакция открывается внутри другой транзакции (в т.ч. неявной), у которой режим блокировки автоматический?
#6
by Cyberhawk
Ну и у свойства конфигурации "Режим управления блокировкой данных" выбрано какое значение&
#7
by snowmanual
Нет, вложенных нет. Выполняется только код указанный выше. Конфигурация полностью на управляемом режиме. Автоматического нет.
#9
by snowmanual
Попробуйте на пустом регистре.Я думаю управляемые блокировки не оперируют конкретными данными. При установке блокировки проверяются, уже существующие и если они пересекаются, то вызывается ожидание. Но что делать когда заранее нельзя определить пересекаются они или нет? Так блокировка ставиться по разным полям.
#11
by Гёдза
мне кажется блокировка по измерению1 = 1, блокирует по данному измерению и ПО ВСЕМ другим измерениям
#14
by snowmanual
Возможно вы правы. Я тоже об этом думаю. Но в документации ничего подобного не встречал.
#15
by ЧеловекДуши
На каком наборе данных тестировали? Измерение1 и Измерение2 Как разные Измерения одного и того же регистра. Почему вы так уверены, что при блокировки "Измерение1", то что вы не содержите значения по "Измерение2". Больше склонен думать, что все же дело в отражена суть. И в дан правильный ответ. И логичный. Нам тут трудно видеть, что у вас там на заведено :)
#17
by Cyberhawk
Я думаю, происходит эскалация блокировки, т.к. диапазон записей, которые попадают в блокировку при блокировании по одному измерению, приближается к общему кол-ву записей в таблице. В ТЖ, к сожалению, событие эксалации не пишется... Для эксперимента попробуй накидать в регистр много больше записей с измерениями "3" и "4" и проверь опять взаимоблокировку на "1" и "2"
#18
by snowmanual
Эскалация происходит не из-за большого кол-ва записей в таблице, а из-за количества самих блокировок на одно пространство. Цитата с документации: "Следует помнить, что если на одно пространство накладывается более 100 000 блокировок, то может произойти эскалация блокировки."
#20
by Cyberhawk
А, точно, попутал с ситуацией, когда записываются много записей в транзакции через менеджер записи - тогда там для каждой записи менеджера записей будет добавляться неявный элемент блокировки
#21
by snowmanual
Делаю вывод, о том как работают управляемые блокировки: 1) Управляемые блокировки не оперируют данными СУБД. Представьте, если бы в таблице были бы миллионы записей. Сколько бы времени уходило на установку блокировки. Даже если поля были бы проиндексированы. 2) При установке управляемой блокировки, в памяти какого-нибудь менеджера кластера сохраняются параметры этой самой блокировки. При этом проверяется, не установлена ли уже блокировка пересекающаяся с указанным диапазоном. Если установлена, то блокировка встаёт в очередь и ждёт. 3) Когда устанавливаются управляемые блокировки по различным полям, сервер не в состоянии однозначно определить, пересекаются они или нет, поэтому исходит из позиции, что они могут пересекаться. И соответственно ставит нашу блокировку в очередь.
#22
by snowmanual
Значит при проектировании системы, необходимо более детально устанавливать блокировки. Возможно вводить какие-нибудь ключевые измерения... Например есть 3 измерения: Изм1, Изм2, Изм3. Можно блокировать диапазон по Изм1. Если хотим по Изм2, то обязательно устанавливаем еще и Изм1. А если хотим еще и Изм3, то дополнительно указываем Изм1, Изм2.
#23
by ЧеловекДуши
Чет ваши выводы не утешительны... Сдается мне, что не стоит пренебрегать измерениями... ...Если лочите первое, то и лочте его везде :)
#28
by Мэс33
А для MS SQL актуальны ли управляемые блокировки? Я с ними манался при работе с Oracle. Там блокировка на уровне таблиц.
#29
by snowmanual
Да, дело не в детализации. Возможно надо было по другому выразиться. Пример с 3 измерениями лучше объясняет то , что я имел ввиду)
#30
by snowmanual
Актуальны, в случае когда нужна согласованность данных при одновременной работе пользователей.
#31
by Мэс33
Ахха... освежил свои знания насчет READ COMMITED, REPEATABLE READ и SERIALIZABLE . Сорри.
#32
by snowmanual
Например Васе и Пете нужно положить яблоко в коробку, а в коробке место только под одно яблоко =) Нужно блокировать эту коробку, чтобы одновременно они туда свои яблоки не положили =)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Конфликт блокировок при выполнении транзакции
- Регистр бухгалтерии: управляемые блокировки
- Управляемые блокировки в УПП
- Управляемые блокировки
- И снова про управляемые блокировки транзакций
- Управляемые блокировки регистра бухгалтерии
- УПП и управляемые блокировки
- Где правильнее поставить управляемые блокировки
- Управляемые формы
- УТ 11 управляемые формы - добавить в таб часть колонку с остатками
- получить форму во внешней обработке (8.2 управляемые формы)
- Конфликт блокировок при выполнении транзакции
В этой группе 1С
- Подключение к 7.7 выдает ошибку
- Передача значения реквизита формы док-та в модуль менеджера.
- runtime error 1cv8.exe при выгрузке базы (Решено)
- Сканер ШК переходит в режим USB клавиатуры из режима эмуляции COM порта
- Конвертация 2.0 Правило регистрации из Бух 3.0 в УТ 10.3
- СКД поля группировки
- При отработке скрипта 1С выдает ошибку.
- ERP 2.1 Печать этикеток и ценников в формате А4
- v7: Как получить все значения периодического реквизита за период?
- Ошибка при выборе параметра
- 1с УТ11-БП30 отменил регистрацию доков по банку в УТ, а они все равно грузятся?
- Дополнительные реквизиты в документообороте
- Метод объекта не обнаружен (SaveAs)
- Как указать несколько адресов доставки , если ругается что Запись с такими ключе
- Консоль кластера серверов 8.3 под разными пользователями
- Обновление нетиповой БП2 на БП3 пропадают данные в регистрах бухгалтерии
- v7: Как перебрать все реквизиты формы внешней обработки 1с 7.7
- Округление веса на весах Mettler Toledo
- Временная таблица уже существует (8.3)
- Форма выбора из внешнего отчета для поля в СКД