Как (технически) работает метод "заблокировать" #698726


#0 by vasbur
У объектов типа СправочникОбъект, ДокуменОбъект есть метод "Заблокировать" Как он технически реализован? Где 1С хранит информацию о блокировках? Создает ли использование этого метода транзакционную нагрузку на СУБД?
#1 by Господин ПЖ
>Где 1С хранит информацию о блокировках? если вкл. упр. блокировки - на сервере приложений
#2 by vasbur
А если там кластер?
#3 by Господин ПЖ
>Создает ли использование этого метода транзакционную нагрузку на СУБД? в зависимости от пользуемого режима блокировок в конфе/объекте
#4 by Господин ПЖ
насколько помню там роли выделяют кто за что отвечает
#5 by vasbur
помоему, метод "заблокировать" у документа не имеет отношения к упр блокировкам.
#6 by Reaper_1c
Объектные блокировки всегда живут на сервере приложений
#7 by vasbur
А что происходит, когда серверов придожений несколько?
#8 by Господин ПЖ
>А что происходит, когда серверов придожений несколько? кластер из нескольких серверов? один из них становится менеджером блокировок
#9 by vasbur
Прикольное понимание кластера
#10 by vasbur
В смысле - у 1С прикольное понимание, что такое кластер
#11 by Jaap Vduul
Как правильно заметили в с управляемыми блокировками этот метод никак не связан. В базе данных его вызов также никаких изменений не производит. Данные о блокировке хранятся либо на сервере приложений , либо в файле *.1cl (для файловых баз 1цэ)
#12 by Господин ПЖ
во что нашел из старой ветки Смысл метода Заблокировать в следующем. 1.У каждого объекта в базе есть поле Версия (просто число). 2.При каждой записи объекта это число увеличивается в транзакции записи. 3.При чтении объекта из базы его версия тоже читается. 4.А при записи объекта, в транзакции записи всегда проверяется  соответствует ли версия в базе, версии объекта в памяти (ранее прочитанного). Если не соответствует, то происходит исключение. Т.о. платформа проверяет не записал ли какой нить другой пользователь объект в период времени между того момента когда его читали (ПолучитьОбъект) и сейчас, когда его записывают. Если объект уже успел кто-то записать, то вероятно он мог изменить какие-то его реквизиты, и т.о. в памяти сейчас лежит неактуальная его версия, и писать эту версию в базу нельзя. 5.Метод Заблокировать просто увеличивает версию на 1, и записывает это значение в базу (и память своего объекта конечно). Конечно же проверяя перед этим не изменился ли объект в базе уже сейчас, в момент выполнения Заблокировать в и наврал
#13 by TormozIT
Метод Заблокировать устанавливает пессимистичную объектную блокировку, хранимую в менеджере кластера либо файле объектных блокировок файловой базы. Он не связан с реквизитом ВерсияДанных. Реквизит ВерсияДанных используется при оптимистичной объектной блокировке.
#14 by Господин ПЖ
значит ДимаО тоже наврал...
#15 by Reaper_1c
В рамках кластера есть сервисы. Блокировки хранят узлы кластера с развернутым сервисом блокировок объектов. Репликацией данных об объектных блокировках сервер занимается самостоятельно.
#16 by vasbur
"Сервис блокировок" - они на одном узле кластера развернут или на нескольких?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С