mirror of
https://github.com/kuzyara/Lock1C-cheet-sheet.git
synced 2025-02-14 22:23:05 +02:00
Update README.md
This commit is contained in:
parent
e318bf34b1
commit
5bab118237
84
README.md
84
README.md
@ -30,19 +30,91 @@
|
||||
* BU = Блокировка массового обновления. Используется для массовых операций;
|
||||
|
||||

|
||||
|
||||
### Объектная техника
|
||||
--------------------------------------------------
|
||||
# Какие бывают блокировки
|
||||
|
||||
> Теория: способы доступа к данным
|
||||
>
|
||||
> Система «1С:Предприятие» поддерживает два способа доступа к данным, хранящимся в базе данных:
|
||||
> * объектный (для чтения и записи);
|
||||
> * табличный (для чтения).
|
||||
>
|
||||
> __Объектный способ__ доступа к данным реализован посредством использования объектов __встроенного языка__.
|
||||
> Важной особенностью объектного способа доступа к данным является то, что, обращаясь к какому-либо объекту встроенного языка, мы обращаемся к некоторой совокупности данных, находящихся в базе данных, как к единому целому.
|
||||
> Например, объект ДокументОбъект.ОказаниеУслуги будет содержать значения всех реквизитов документа Оказание услуги и всех его табличных частей.
|
||||
> Объектная техника обеспечивает сохранение целостности объектов, кеширование объектов, вызов соответствующих обработчиков событий и т. д.
|
||||
>
|
||||
> __Табличный доступ__ к данным в «1С:Предприятии» реализован с помощью __запросов к базе данных__, которые составляются на языке запросов.
|
||||
> В этой технике разработчик получает возможность оперировать отдельными полями таблиц базы данных, в которых хранятся те или иные данные.
|
||||
> Табличная техника предназначена для получения информации из базы данных по некоторым условиям (отбор, группировка, сортировка, объединение нескольких выборок, расчет итогов и т. д.). Табличная техника оптимизирована для обработки больших объемов информации, расположенной в базе данных, и получения данных, отвечающих заданным критериям.
|
||||
|
||||
Чтение наборов записей регистров через объектную модель приводит к наложению управляемой блокировки. _Пояснение: происходит неявная транзакция_
|
||||
|
||||
Получение прикладного объекта через `ПолучитьОбъект()` всегда происходит с использованием объектной блокировки. _Пояснение: см. [Какие бывают блокировки](#какие-бывают-блокировки)_
|
||||
|
||||
Платформа НЕ устанавливает блокировок при чтении в объектной технике как минимум следующих объектов:
|
||||
- констант и наборов констант;
|
||||
- справочников (например, используя методы Справочники.ИмяСправочника.Выбрать(), СправочникВыборка.Следующий(), СправочникВыборка.ПолучитьОбъект(), СправочникСсылка.ПолучитьОбъект() и т.д.);
|
||||
- документов (аналогично справочникам);
|
||||
- других объектов (планов видов характеристик, планов счетов и т.д.
|
||||
|
||||
_Чтение в объектной технике обладает еще одной особенностью: оно в ряде случаев выполняется в неявной транзакции._
|
||||
|
||||
> 3.15. Особенности чтения в объектной модели
|
||||
>
|
||||
> У чтения в объектной модели есть три особенности.
|
||||
> 1. Иногда ставятся управляемые блокировки.
|
||||
> 2. Иногда чтение происходит в неявной транзакции.
|
||||
> 3. Считываются все данные.
|
||||
> Разберем их по очереди
|
||||
>
|
||||
> ### 1. Иногда ставятся управляемые блокировки.
|
||||
>
|
||||
> Платформой устанавливаются управляемые разделяемые блокировки при чтении в объектной технике следующих видов объектов:
|
||||
> - набор записей регистра сведений,
|
||||
> - набор записей регистра накопления,
|
||||
> - набор записей регистра бухгалтерии,
|
||||
> - набор записей регистра расчета,
|
||||
> - набор записей перерасчета,
|
||||
> - набор записей последовательности.
|
||||
>
|
||||
> ### 2. Иногда чтение происходит в неявной транзакции.
|
||||
> Чтение в объектной технике объектов, имеющих табличные части\*, будет выполняться в неявной транзакции. Например, запрос
|
||||
> `ДокументПроведен = ДокументСсылка.Проведен;` выполнится в транзакции, если для документа данного типа в конфигураторе определена
|
||||
> табличная часть, но этот же запрос будет выполняться вне транзакции, если табличных частей у документа нет.
|
||||
>
|
||||
> \* _Анонсирован отказ от использования транзакций для этих целей в будущем, но есть ожидания,
|
||||
> что на многих продуктивных системах еще на какое-то время сохранится существующее
|
||||
> положение дел._
|
||||
>
|
||||
> ### 3. Считываются все данные.
|
||||
> Если посмотреть с помощью замера на отладчике, как выполняется следующий код, то можно увидеть, что основное время
|
||||
> всегда тратится на выполнение первой строки:
|
||||
> ```
|
||||
> ДокументПроведен = ДокументСсылка.Проведен;
|
||||
> ДокументДата = ДокументСсылка.Дата;
|
||||
> ДокументНомер = ДокументСсылка.Номер;
|
||||
> ```
|
||||
> Если пройти код пошагово отладчиком и при этом посмотреть трассировку в профайлере SQL Server, можно увидеть, что запрос (если есть еще и табличная
|
||||
> часть, то несколько запросов в транзакции) выполняется только на первой строке, при этом тексты запросов содержат имена всех реквизитов и все табличные части.
|
||||
> На второй и на третьей строке запросы к базе уже не выполняются.
|
||||
|
||||
Источник: Филлипов Е.В., Настольная книга Эксперта по технологическим вопросам, 2-е издание, стр. 56-57
|
||||
|
||||
--------------------------------------------------
|
||||
## Какие бывают блокировки
|
||||
* Объектные блокировки: https://infostart.ru/public/543218/
|
||||
* Пессимистические (явные и неявные)
|
||||
* Оптимистические
|
||||
|
||||
## Объектная оптимистическая блокировка
|
||||
### Объектная оптимистическая блокировка
|
||||
Оптимистическая блокировка представляет собой проверку, которая выполняется перед записью объекта в базу данных. У объекта есть свойство «ВерсияДанных», которая вместе с объектом считывается из базы данных. Оптимистическая блокировка производит перед записью производит сравнение значения свойства «ВерсияДанных» объекта, который находится в оперативной памяти с значением свойства «ВерсияДанных» объекта находящийся в базе данных. Если значения свойства «ВерсияДанных» у объектов отличается, то оптимистическая блокировка запрещает запись объекта в базу данных и выдает сообщение об ошибке.
|
||||
|
||||
## Объектная пессимистическая блокировка (неявная, в форме)
|
||||
### Объектная пессимистическая блокировка (неявная, в форме)
|
||||
Пессимистическая объектная блокировка предназначена для запрета изменений данных объекта, пока блокировка не будет снята. Система (с помощью соответствующих расширений формы объекта) автоматически устанавливает пессимистическую блокировку, в момент, когда пользователь пытается произвести изменение данных объекта. Если после этого другой пользователь, например, попытается выполнить редактирование того же объекта, ему будет выдано сообщение о том, что не удалось заблокировать объект.
|
||||
|
||||
## Объектная пессимистическая блокировка (явная, в коде)
|
||||
### Объектная пессимистическая блокировка (явная, в коде)
|
||||
* Без формы (обычные формы)
|
||||
Методы «Заблокировать()», «Разблокировать()» и «Заблокирован()», используются для объектов базы данных, существуют только на сервере. Метод «Заблокирован()» не может быть использован для проверки, заблокирован ли вообще объект базы данных, например, другими пользователями. Для этого следует использовать метод «Заблокировать()» в попытке.
|
||||
* Управляемы формы
|
||||
@ -71,7 +143,7 @@
|
||||
* на сервере 1с
|
||||
* на сервере субд
|
||||
--------------------------------------------------
|
||||
## Эскалация блокировок в ТЖ
|
||||
### Эскалация блокировок в ТЖ
|
||||
|
||||
* В mssql\
|
||||
события Lock:Escalation. Укрупнение происходит в случае, если количество блокировок в определенном просмотре превышает 5000 http://www.gilev.ru/escalation/
|
||||
@ -79,5 +151,5 @@
|
||||
событие Locks без указания конкретных полей и значений. для 8.2 - более 20 тыс. на одно пространство, для 8.3 - более 100тыс. на одно пространство https://курсы-по-1с.рф/news/2017-12-22-optimization-1c-escalation-of-locks/
|
||||

|
||||
|
||||
## Ссылки
|
||||
### Ссылки
|
||||
* https://www.youtube.com/watch?v=BsZAhSxUh9k - Избыточные блокировки. Подготовка к сдаче экзамена 1С:Эксперт
|
||||
|
Loading…
x
Reference in New Issue
Block a user