Цель гистограммы
Цель гистограммы группирует вхождения определенного типа событий на основе данных о событии. Группирование событий основано на определенном столбце событий или действии. Цель гистограммы вы можете использовать для поиска и устранения проблем с производительностью. Найдя наиболее часто происходящие события, можно найти «горячие точки», показывающие потенциальную причину возникновения проблемы производительности.
В следующей таблице описываются параметры, которые можно использовать для настройки цели гистограммы.
Параметр |
Допустимые значения |
Описание |
---|---|---|
slots |
Любое целочисленное значение. Это значение является необязательным. |
Заданное пользователем значение, указывающее максимальное число группирований. При достижении этого значения новые события, не принадлежащие к существующим группам, пропускаются. Обратите внимание, что для повышения производительности номер слота округляется до следующей степени числа 2. |
filtering_event_name |
Любое событие, участвующее в сеансе расширенных событий. Это значение является необязательным. |
Пользовательское значение, которое используется для идентификации класса событий. Группируются только экземпляры указанного события. Все остальные события не учитываются. Если указывается это значение, то следует использовать формат package_name.event_name, например 'sqlserver.checkpoint_end'. Определить имя пакета можно с помощью следующего запроса:
Если значение filtering_event_name не указывается, то для параметра source_type следует установить значение 1 (значение по умолчанию). |
source_type |
Тип объекта, на котором основан сегмент. Это значение необязательно. Когда оно не задано, по умолчанию равно 1. |
Может иметь одно из следующих значений:
|
source |
Имя столбца событий или действия. |
Имя столбца событий или действия, которое используется в качестве источника данных. При указании столбца событий для source необходимо указать столбец из события, которое указывается в качестве значения для параметра filtering_event_name. Определить потенциальные столбцы можно с помощью следующего запроса:
При указании столбца события для 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)