承上篇建立 blogtest 擴展事件會話 (捕獲 sql_statement_starting/completed,Predicate 限定 database_name = 'Northwind'),本文示範啟動會話、執行負載腳本、分析事件檔案。
sql_statement_starting、sql_statement_completed 的 Predicate 皆為 sqlserver.database_name = N'Northwind'。event_file (檔案路徑 C:\XE\blogtest.xel),max_file_size=50MB, max_rollover_files=10。
instnwnd.sql (含 Northwind 建表、插入、查詢混合負載)。
instnwnd.sql。
event_name, timestamp, sql_text, duration, cpu_time, reads, writes, row_count。duration 排序找出慢查詢,複製 sql_text 進一步調優。SELECT
xe.event_data.value('(event/@name)[1]', 'NVARCHAR(100)') AS event_name,
xe.event_data.value('(event/@timestamp)[1]', 'DATETIME2') AS timestamp,
xe.event_data.value('(event/data[@name="sql_text"]/value)[1]', 'NVARCHAR(MAX)') AS sql_text,
xe.event_data.value('(event/data[@name="duration"]/value)[1]', 'BIGINT') / 1000.0 AS duration_ms
FROM (
SELECT CAST(event_data AS XML) AS event_data
FROM sys.fn_xe_file_target_read_file('C:\XE\blogtest*.xel', NULL, NULL, NULL)
) xe
WHERE xe.event_data.value('(event/@name)[1]', 'NVARCHAR(100)') = 'sql_statement_completed'
ORDER BY duration_ms DESC;
max_sql_text_length (SQL 2014+)。LongRunningQueries, DeadlockCapture),設定為服務啟動自動開始,定期封存 .xel 檔案。