Анализ блокировок с помощью SQL Trace

Обновлено: 20.09.2007

В комплекте с MS SQL Server поставляется утилита SQL Trace. С ее помощью можно решать задачу нахождения основных источников блокировок при работе 1С:Предприятия 8.1 в случае использования в качестве СУБД MS SQL Server.

Создание фильтра.

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

Для этого следует включить в набор записываемых событий событие Lock:Acquired и установить фильтр на запись событий Lock:Acquired со значением Duration больше или равным 1 (может быть установлено любое значение больше 0) и запустить трейс.

После того, как измерения будут закончены в колонке ObjectID будет находится идентификаторы заблокированных объектов, время ожидания для которых превышало 1 мс.

С помощью функции OBJECT_NAME можно определить имя таблицы, соответствующей данному ObjectID.

Для анализа результатов удобнее сохранить результаты в таблицу SQL Server, а затем, с помощью запросов получить интересующие данные в удобной для анализа форме.

Например:

SELECT
    ObjectID, SUM(Duration)
FROM
    TRACE
GROUP BY
    ObjectID
ORDER BY SUM(Duration) desc

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