Обзор расширенных событий

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Архитектура расширенных событий (XEvents) позволяет пользователям собирать столько или меньше данных, сколько необходимо для мониторинга, идентификации или устранения неполадок производительности в SQL Server, База данных SQL Azure и Управляемый экземпляр SQL Azure. Расширенные события хорошо настраиваемы, облегченные и масштабируемые. Дополнительные сведения см. в разделе "Архитектура расширенных событий".

Расширенные события заменяют устаревшие функции трассировки SQL и SQL Server Profiler.

Чтобы приступить к работе с расширенными событиями, используйте краткое руководство. Расширенные события.

Преимущества системы расширенных событий

Расширенные события — это упрощенная система мониторинга производительности, которая использует минимальные системные ресурсы, предоставляя подробное представление ядра СУБД. SQL Server Management Studio предоставляет графический пользовательский интерфейс для расширенных событий для создания, изменения и удаления сеансов событий, а также для отображения и анализа данных сеанса. Дополнительные сведения о поддержке расширенных событий в Management Studio см. в следующей статье:

Основные понятия расширенных событий

Расширенные события создаются на основе существующих концепций трассировки событий для Windows, таких как событие и потребитель событий, и представляет новые понятия, такие как действие и предикат.

В следующей таблице приведены ссылки на документацию по основным понятиям в расширенных событиях.

Статья Описание
Пакеты расширенных событий Описывает пакеты расширенных событий, которые содержат объекты. Эти объекты используются для получения и обработки данных во время сеанса расширенных событий.
Целевые объекты для расширенных событий Описывает объекты-получатели событий, получающие данные во время сеанса событий.
Подсистема расширенных событий Описывает подсистему, которая реализует сеанс расширенных событий, а также управляет им.
Сеансы расширенных событий Описывает сеанс расширенных событий.

Архитектура расширенных событий

Расширенные события — это имя общей системы обработки событий для серверных систем. Инфраструктура расширенных событий поддерживает корреляцию данных из ядра СУБД и в определенных условиях корреляцию данных из операционных систем и приложений баз данных. В случае с операционной системой выходные данные расширенных событий могут направляться в службу трассировки событий Windows (ETW). Служба ETW может обеспечивать сопоставление данных событий с данными событий операционной системы или приложений.

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

Расширенные события поддерживают использование данных событий вне процесса. Эти данные обычно используются пользователями для администрирования или поддержки продукта путем отслеживания производительности или пользовательской разработки приложений в продукте в целях отладки. Данные используются или анализируются с помощью таких средств, как SQL Server Management Studio, XEvent Profiler и Монитор производительности, а также средства командной строки T-SQL или Windows.

Ключевые аспекты расширенных событий:

  • Подсистема расширенных событий не зависит от событий. Подсистема может привязать любое событие к любому целевому объекту, так как подсистема не ограничена содержимым события. Дополнительные сведения о подсистеме расширенных событий см . в подсистеме расширенных событий.
  • События отделены от объектов-получателей событий, называемых в расширенных событиях целями . Это означает, что любая цель может получать любые события. Кроме того, любое возникающее событие может автоматически потребляться целью, которая регистрирует его и предоставляет дополнительный контекст событий. Дополнительные сведения см. в разделе "Целевые объекты для расширенных событий".
  • События отделены от действий, предпринимаемых при возникновении события. Следовательно, любое действие можно связать с любым событием.
  • Предикаты могут применять динамические фильтры, когда необходимо получить данные события. Динамическая фильтрация делает инфраструктуру расширенных событий более гибкой. Дополнительные сведения см. в разделе "Расширенные события".

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

  • Унифицированный подход к обработке событий во всей серверной системе, одновременно разрешающий пользователям изолировать отдельные события для устранения неполадок.
  • Интеграция и поддержка существующих инструментов приложения трассировки событий Windows.
  • Полностью настраиваемый механизм обработки событий, использующий Transact-SQL.
  • Возможность динамического мониторинга активных процессов с минимальным влиянием на эти процессы.
  • Сеанс работоспособности системы по умолчанию, который выполняется без каких-либо заметных последствий для производительности. В этом сеансе собираются системные данные, которые можно использовать для решения проблем производительности. Дополнительные сведения см. в разделе "Использование сеанса system_health".

Задачи расширенных событий

С помощью Management Studio или Transact-SQL для выполнения инструкций Языка определения данных Transact-SQL (DDL), использования динамических административных представлений и функций или представлений каталога можно создавать простые или сложные решения по устранению неполадок расширенных событий SQL Server для среды SQL Server.

Описание задания Статья
Обозреватель объектов позволяет управлять сеансами события. Управление сеансами событий в обозревателе объектов
Описано, как создать сеанс расширенных событий. Сеансы расширенных событий
Описывает, как просматривать и обновлять целевые данные. Просмотр данных событий в SQL Server Management Studio
Описывает использование средств расширенной подсистемы событий для создания сеансов и управления сеансами расширенных событий . Средства расширенных событий
Описано, как изменить сеанс расширенных событий. Изменение сеанса расширенных событий
Описывает, как получить информацию о полях, связанных с событиями. Получение полей для всех событий
Описывает, как узнать, какие события доступны в зарегистрированных пакетах. Использование SELECT и JOIN в системных представлениях для расширенных событий в SQL Server
Описывает, как определить, какие цели расширенных событий доступны в зарегистрированных пакетах. Целевые объекты для расширенных событий
Описывает, как с помощью приведенной ниже процедуры можно просматривать события и действия расширенных событий, аналогичных каждому событию трассировки SQL со связанными столбцами. Просмотр эквивалентов расширенных событий для классов событий трассировки SQL
Описывает, как найти параметры, которые можно задать при использовании ADD TARGET предложения в CREATE EVENT SESSION инструкциях или ALTER EVENT SESSION инструкциях. Целевые объекты для расширенных событий
Описано, как преобразовать существующий скрипт приложения трассировки SQL в сеанс расширенных событий. Преобразование существующего скрипта трассировки SQL в сеанс расширенных событий
Описывает, как определить, какие запросы хранят блокировку, план запроса и стек Transact-SQL во время выполнения блокировки. Определение запросов, содержащих блокировки
Описывает, как определить источник блокировок. Поиск объектов, на которые наложено наибольшее число блокировок
Описывает, как использовать расширенные события совместно со средством трассировки событий для Windows (ETW) для наблюдения за активностью системы. Мониторинг активности системы с помощью расширенных событий
Использование представлений каталога и динамических административных представлений для расширенных событий Использование SELECT и JOIN в системных представлениях для расширенных событий в SQL Server

Используйте следующий запрос T-SQL для возврата всех возможных событий и их описания:

SELECT obj1.name AS [XEvent-name],
    col2.name AS [XEvent-column],
    obj1.description AS [Descr-name],
    col2.description AS [Descr-column]
FROM sys.dm_xe_objects AS obj1
INNER JOIN sys.dm_xe_object_columns AS col2
    ON col2.object_name = obj1.name
ORDER BY obj1.name,
    col2.name

Примеры кода могут отличаться для базы данных SQL Azure и управляемого экземпляра SQL

Некоторые примеры кода Transact-SQL, написанные для SQL Server, нуждаются в небольших изменениях для запуска в Azure. Одна из категорий таких примеров кода включает представления каталога, префиксы имен которых отличаются в зависимости от типа ядра СУБД:

  • server_ - префикс для SQL Server и Управляемый экземпляр SQL Azure
  • database_ - префикс для База данных SQL Azure и Управляемый экземпляр SQL

База данных SQL Azure поддерживает только сеансы событий область базы данных. SQL Server Management Studio (SSMS) полностью поддерживает сеансы событий область базы данных для База данных SQL Azure: узел расширенных событий, содержащий сеансы область базы данных, отображаются в каждой базе данных в обозреватель объектов.

Управляемый экземпляр SQL Azure поддерживает как сеансы уровня базы данных, так и сеансы уровня сервера. SSMS полностью поддерживает сеансы на уровне сервера для Управляемого экземпляра SQL: узел Расширенные события, содержащий все сеансы на уровне сервера, отображается в папке Управление для каждого управляемого экземпляра в обозревателе объектов.

Примечание.

Для управляемых экземпляров рекомендуется использовать сеансы на уровне сервера. Сеансы область базы данных не отображаются в обозреватель объектов в SSMS для Управляемый экземпляр SQL Azure. Сеансы с область базой данных можно запрашивать и управлять ими только с помощью Transact-SQL при использовании управляемого экземпляра.

На рисунке в следующей таблице перечислены и сравниваются два подмножества представлений каталога. Для краткости подмножества ограничены именами представлений, которые также содержат строку _event. Подмножества имеют разные префиксы имен, так как поддерживают разные типы ядра СУБД.

Имя в SQL Server и Управляемый экземпляр SQL Azure Имя в База данных SQL Azure и Управляемый экземпляр SQL Azure
server_event_notifications
server_event_session_actions
server_event_session_events
server_event_session_fields
server_event_session_targets
server_event_sessions
server_events
server_trigger_events
database_event_session_actions
database_event_session_events
database_event_session_fields
database_event_session_targets
database_event_sessions

Два списка в предыдущей таблице были точными по состоянию на март 2022 года. Для актуального списка выполните следующую инструкцию Transact-SQL SELECT :

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database[_]%' OR
         name LIKE 'server[_]%' )
        AND name LIKE '%[_]event%'
        AND type = 'V'
        AND SCHEMA_NAME(schema_id) = 'sys'
    ORDER BY name;