Поделиться через


Цель гистограммы

Цель гистограммы группирует вхождения определенного типа событий на основе данных о событии. Группирование событий основано на определенном столбце событий или действии. Цель гистограммы вы можете использовать для поиска и устранения проблем с производительностью. Найдя наиболее часто происходящие события, можно найти «горячие точки», показывающие потенциальную причину возникновения проблемы производительности.

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

Параметр

Допустимые значения

Описание

slots

Любое целочисленное значение. Это значение является необязательным.

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

Обратите внимание, что для повышения производительности номер слота округляется до следующей степени числа 2.

filtering_event_name

Любое событие, участвующее в сеансе расширенных событий. Это значение является необязательным.

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

Если указывается это значение, то следует использовать формат package_name.event_name, например 'sqlserver.checkpoint_end'. Определить имя пакета можно с помощью следующего запроса:

SELECT p.name, se.event_name
FROM sys.dm_xe_session_events se
JOIN sys.dm_xe_packages p
ON se_event_package_guid = p.guid
ORDER BY p.name, se.event_name

Если значение filtering_event_name не указывается, то для параметра source_type следует установить значение 1 (значение по умолчанию).

source_type

Тип объекта, на котором основан сегмент. Это значение необязательно. Когда оно не задано, по умолчанию равно 1.

Может иметь одно из следующих значений:

  • 0 для события

  • 1 для действия

source

Имя столбца событий или действия.

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

При указании столбца событий для source необходимо указать столбец из события, которое указывается в качестве значения для параметра filtering_event_name. Определить потенциальные столбцы можно с помощью следующего запроса:

SELECT name FROM sys.dm_xe_object_columns
WHERE object_name = '<eventname>'
AND column_type != 'readonly'

При указании столбца события для source включать имя пакета в значение source не требуется.

При указании имени действия для source необходимо использовать одно из действий, которые были настроены для коллекции в сеансе события, для которого используется данная цель. Чтобы найти потенциальные значения для имени действия, можно выполнить запрос к столбцу action_name представления sys.dm_xe_sesssion_event_actions.

Если имя действия используется в качестве источника данных, необходимо указать значение source в следующем формате: package_name.action_name.

В следующем примере на высоком уровне показывается, как цель гистограммы собирает данные. В данном примере цель гистограммы будет использоваться для подсчета количества возникших случаев ожидания для каждого типа ожидания. Для этого при определении цели гистограммы необходимо указать следующие параметры:

  • filtering_event_name = 'wait_info'

  • source = 'wait_type'

  • source_type = 0 (поскольку wait_type — это столбец события)

В сценарии примера для источника wait_type записаны следующие данные.

Фильтрация имени события

Значение столбца источника

wait_info

file_io

wait_info

file_io

wait_info

network

wait_info

network

wait_info

спящий режим

Значения типа ожидания будут разделены на три слота со следующими значениями и числом слотов.

Значение

Число слотов

file_io

2

network

2

спящий режим

1

Цель гистограммы сохраняет только данные о событии для указанного источника. Иногда данные событий могут оказаться слишком большими, чтобы их можно было сохранить полностью, в этих случаях данные усекаются. Если данные событий усекаются, число байт записывается и отображается в виде XML-выхода.

Добавление цели к сеансу

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

ADD TARGET package0.histogram

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

ADD TARGET package0.histogram
(SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id')

Дополнительные сведения см. в разделах найти объекты, на которые наложено наибольшее число блокировок и отслеживать активность системы с помощью расширенных событий.

Просмотр целевого вывода

Цель гистограммы сериализует данные для вызывающей программы или процедуры в формате XML. Результат цели не соответствует ни одной схеме.

Для просмотра результата цели гистограммы вы можете воспользоваться следующим запросом, заменив параметр session_name на имя сеанса события.

SELECT name, target_name, CAST(xet.target_data AS xml)
FROM sys.dm_xe_session_targets AS xet
JOIN sys.dm_xe_sessions AS xe
   ON (xe.address = xet.event_session_address)
WHERE xe.name = 'session_name'

В следующем примере показан формат вывода цели гистограммы.

<Slots truncated = "0" buckets=[count]>
    <Slot count=[count] trunc=[truncated bytes]>
        <value>
        </value>
    </Slot>
</Slots>

См. также

Справочник

sys.dm_xe_session_targets (Transact-SQL)

CREATE EVENT SESSION (Transact-SQL)

ALTER EVENT SESSION (Transact-SQL)

Основные понятия

Цели расширенных событий SQL Server