Skip to main content

Элемент "Дерево блокировок"

Дерево блокировок - визуальный элемент, используемый для анализа конфликтов блокировок 1С. Дерево блокировок является вариантом диаграммы Ганта или диаграммы timeline ориентированных на отображение нескольких конфликтующих блокировок 1С.

Параметры

Дерево блокировок всегда выводится с блоком установки параметров визуализации.

ПараметрЗначение параметра
Учитывать отбор по периодуПараметр, определяющий влияние общего отбора по периоду на диаграмму. Возможны следующие значения:
- Нет - Временной интервал для отображения будет выбран автоматически по периодам блокировок, участвующих в конфликте.
- Да - Временной интервал для отображения будет точно соответствовать общему отбору по периоду.
Длительность интервалаДлительность минимального интервала на диаграмме. Возможны следующие значения:
- Авто - авто определение интервала.
- Миллисекунда - Длительность минимального интервала - миллисекунда.
- Секунда - Длительность минимального интервала - секунда.
- Минута - Длительность минимального интервала - минута.
- Час - Длительность минимального интервала - час.

Дерево блокировок

Скриншот №1!

1 - Область отображения периода

Временная шкала событий, отображаемых в дереве блокировок. Соответствует параметру "Длительность интервала".

2 - Серверный вызов блокировки

Информация о серверном вызове "родителе" блокировки. В области описания выводится имя пользователя и номер сеанса 1С. Если в конфликте блокировки задействовано несколько серверных вызовов из одного сеанса, они все выводятся в одной строке.

3 - Транзакция блокировки

Информация о транзакции, в которой установлена блокировка. В области описания выводится имя пользователя и номер сеанса 1С. Если в конфликте блокировки задействовано несколько транзакций из одного сеанса, они все выводятся в одной строке.

4 - Блокировка

Информация о блокировке. В области описания выводится имя пользователя, номер сеанса 1С и режим блокировки. Каждая блокировка выводится в отдельной строке.

5 - Конфликт блокировок

Стрелка указывает на конфликт блокировок. Начало стрелки - блокировка виновник, конец - блокировка жертва.

Цветовая индикация

Каждый интервал отображается в одном из четырёх цветов.

ЦветЗначение
ЗелёныйОперация выполнена успешно.
Серверный вызов завершен успешно, если в ТЖ для него не найдено связанное событие EXCPCNTX.
Транзакция завершена успешно, если по данным ТЖ она закрыта функцией CommitTransaction.
Блокировка установлена успешно, если в ТЖ для неё не найдено связанного события TTIMEOUT и TDEADLOCK.
ЖёлтыйИнтервал ожидания предоставления блокировки, если в итоге блокировка была предоставлена успешно.
КрасныйОперация не выполнена или выполнена с ошибкой.
Серверный вызов завершен с ошибкой, если в ТЖ для него найдено связанное событие EXCPCNTX.
Транзакция завершена не успешно, если по данным ТЖ она закрыта функцией RollbackTransaction.
Блокировка не установлена, если в ТЖ для неё найдено связанное событие TTIMEOUT или TDEADLOCK.
БелыйНе удалось найти все данные для отображения. Может применяться только для информации о серверных вызовах. Например, если на момент построения дерева серверный вызов ещё не завершён или о нём нет информации в ТЖ.

Подробности

По каждому интервалу можно получить детализацию. Для этого необходимо по нему кликнуть. Детализация выводится в всплывающем окне. Для каждого типа интервала (серверный вызов, транзакция, блокировка) выводится разный перечень информации.

Серверный вызов

Скриншот №4! Выводится:

  1. Длительность
  2. Контекст
  3. Текст ошибки (если была)

Транзакция

Скриншот №3! Выводится:

  1. Статус: Commit или Rollback
  2. Длительность
  3. Контекст

Блокировка

Скриншот №2! Выводится:

  1. Статус: Успешно или Ошибка (тип ошибки)
  2. Длительность ожидания
  3. Длительность удержания
  4. Признак эскалации
  5. Пространство в терминах 1С
  6. Режим блокировки: Shared или Exclusive
  7. Описание полей и значений блокировки, участвующих в конфликте, в терминах 1С. Выводится только конфликтующая блокировка, а не все блокировки события TLOCK.
  8. Контекст установки блокировки

Особенности логики построения

  1. Построение дерева выполняется рекурсивно от события TLOCK. На каждой итерации для событий TLOCK находятся блокировки, которые удерживают требуемую блокировку. Это обуславливает две особенности:
  • Дерево строится только "вверх", т.е. оно включает только виновников исходного события TLOCK. Если исходная блокировка была для кого-то виновником, в дереве этой информации не будет.
  • При построении дерева на основании событий TTIMEOUT и TDEADLOCK, первым шагом находится связанное событие TLOCK, и затем от него строится дерево виновников. Таким образом, для событий TDEADLOCK возможны ситуации, когда в дереве отображаются не все участники взаимоблокировки, а только те, которые стали причиной ожиданий прерванной транзакции.
  1. Построение дерева выполняется фактически без учета значений свойства WaitConnections, т.к. оно зачастую не содержит всех участников цепочки блокировок. Вместо этого алгоритм построения получает информацию обо всех блокировках удерживаемых на момент попытки установки блокировки жертвы и затем сверяет их пространства и поля блокировок с исходной. Это делает алгоритм более точным, но и более ресурсоёмким. Поэтому в некоторых случаях, при наличии в цепочке большого количества блокировок, построение может занимать длительное время.