Обзор расширенных событий
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Архитектура расширенных событий (XEvents) позволяет пользователям собирать столько или меньше данных, сколько необходимо для мониторинга, идентификации или устранения неполадок производительности в SQL Server, База данных SQL Azure и Управляемый экземпляр SQL Azure. Расширенные события хорошо настраиваемы, облегченные и масштабируемые. Дополнительные сведения см. в разделе "Архитектура расширенных событий".
Расширенные события заменяют устаревшие функции трассировки SQL и SQL Server Profiler.
Чтобы приступить к работе с расширенными событиями, используйте краткое руководство. Расширенные события.
Примечание.
Если вы используете Azure SQL, узнайте, как примеры кода могут отличаться для База данных SQL Azure и Управляемый экземпляр SQL и многое другое о расширенных событиях в База данных SQL Azure.
Преимущества системы расширенных событий
Расширенные события — это упрощенная система мониторинга производительности, которая использует минимальные системные ресурсы, предоставляя подробное представление ядра СУБД. 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 Azuredatabase_
- префикс для База данных 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;
Связанный контент
- Динамические административные представления расширенных событий
- Представления каталога расширенных событий (Transact-SQL)
- Тайны SQL: отслеживание причин и последовательность событий для сеансов XEvent
- Анализ и предотвращение взаимоблокировок в Базе данных SQL Azure
- Краткое руководство. Расширенные события
- Целевой код файла событий для расширенных событий в База данных SQL Azure
- Расширенные события в Базе данных SQL Azure
- XELite: кроссплатформенная библиотека для чтения XEvents из файлов XEL или динамических потоков SQL
- Командлет PowerShell read-SQLXEvent