EXTENDED EVENTS: Обойти XML
Работать с XML - сплошная боль. Писать запросы против XML действительно трудно. Если бы не существовало способов избежать XML, вряд ли кто-то выступал бы за Extended Events. Давайте рассмотрим способы, позволяющие не использовать в работе XML.
Окно Live Data
Концепция проста. Если кликните правой кнопкой мыши на любом сеансе Extended Events внутри SSMS, если это активный сеанс, увидите пункт меню: Watch Live Data. Кликнув на него, откроется окно Live Data. Здесь мы сталкиваемся с проблемой, не менее серьезной, чем XML. Вот результат при первом открытии:
В верхней части экрана расположены все события. В таком случае я собираю запросы через sql_batch_completed and rpc_completed. Выбор любого события в верхней части экрана покажет детали этого события внизу экрана.
Extended Events - универсальное средство просмотра любого события. Но можно настроить и просмотр сеанса. Более того, эта настройка сохраняется автоматически и будет использована повторно.
Итак, как же это работает? Два способа.
Первый: правой кнопкой мыши щелкните на деталях в любом из этих полей. Откроется следующее меню
Щелкните на Show Column in Table и это поле добавится на экране над деталями.
Второй: правой клавишей мыши щелкните в верхней части, прямо в верхней части сетки. Вы получите меню, которое выглядит так:
Щелкните на “Choose Columns…” Откроется новое окно:
Не будем вдаваться в детали, как с этим работать. Слева есть данные, собранные событиями, определенными в Вашем сеансе. Переместите их вправо, чтобы создать собственное представление. Например, вот представление, которое я использую чаще всего при просмотре данных производительности запросов:
Запрос виден как в качестве пакета, так и оператора, продолжительность, CPU, чтение, запись и все это в хорошем аккуратном формате. Более того, даже после того, как Вы это сделаете, останется возможность щелкнуть на любую заданную строку и посмотреть детали. Теперь Вы обладаете всеми видами дополнительной функциональности. Вы можете искать эти столбцы, можете сортировать, группировать и агрегировать, настраивать фильтр данных по времени, или любому столбцу и значению. Короче говоря, у Вас есть инструмент исследования данных, не прибегая к использованию XML.
Но это подходит для небольших фрагментов данных. В качестве альтернативы, файлы можно открывать напрямую. Можно настроить представление данных и затем повторно использовать эту настройку, не проводя дополнительной работы. Вы даже можете сохранить её, передать коллегам или разместить на нескольких машинах.
DBATools
Если вы до сих пор не сталкивались с DBATools, тогда Вас ждет приятная неожиданность. Это набор инструментов PowerShell, который полностью изменит способ администрирования и работы с SQL Server. А его стоимость равна нулю.
DBATools обладает функциональностью Extended Events уже многие годы. И это не просто одна или две команды. Целый ряд функций помогают работать и поддерживать Extended Events.
Теперь, используя DBATools, вам не нужно пытаться понять XPath. Вместо этого, Вы можете запросить файл непосредственно в удобочитаемой форме. Более того, т.к. Вы уже в PowerShell, просто передайте файл в любой другой формат или расположение.
Заключение
Используя эти два метода и ничего более, Вы можете легко обойти XML. Extended Events не сложны в использовании. А даже очень просты.
У всех новых функций в SQL Server есть Extended Events, Trace Events вообще отсутствуют. База данных Azure SQL позволяет использовать только Extended Events. В них больше функциональности, а нагрузку они создают в разы меньше.