DBI308 SQL Power Tools 擴充事件使用與效益提升實戰 許致學 資深顧問 集英信誠 DBI308
就是這個工作室 資深顧問 lance.lot.hsu@mentortrust.com 台灣微軟 特約顧問 資料庫顧問群 資深顧問
請問你為什麼會參加這個場次? A. B. C. D. E. 我是 SQL Server DBA 我是 SQL Server 開發人員 我是應用程式開發人員 這個主題很酷 以上皆是
以下哪些工具是你經常使用的? A. SQL Server Trace B. 這些工具的共通之處是 SQL Server Profiler C. SQLDiag D. RML Utilities 它們其實都是 E. SQL Nexus F. 以上皆是 SQL Server Trace
你的工具就要被拿走了! SQL Profiler SQL Trace SQL Diag RML Utilities SQL Nexus 那你該如何因應?
不要驚慌 新的工具 其實也不是全新的 完整涵蓋資料庫引擎所有面向的資訊 與 SQL Server Management Studio 整合 需要再學習 不像以往熟悉的使用方式
擴充事件的優點 每秒 20000 個事件 僅用不到 5% CPU 即時地擷取事件資料 效能影響低且延展性佳 事件是動態的 且可針對任何事件收集資料 當事件發生時 可以跨程序進行事件追蹤 可指定執行的 追蹤不同的工作 執行緒 程序之間的關聯 與 Windows 事件整合 Windows SDK 工具程式呈現追蹤的資訊 Xperf.exe Xperfview.exe 可以與其他的 ETW 提供者一起進行追蹤 完整地程式化支援 動作
SQL Server 2012 擴充事件 整合 SQL Server Management Studio SQL Server 2008 須加裝 Add-in 整合 SMO Extended Events object model 整合 PowerShell PowerShell Provider
擴充事件封裝物件 擴充事件 物件的容器 同步 非同步 處理 10
擴充事件工作階段 每個事件工作階段可儲存於多個目標 每個事件可定義於多個事件工作階段 各個事件工作階段將動作和述詞繫結至事件 封裝內包括 事件 目標 動作 述詞 事件工作階段緩衝區 非同步處理 降低對效能影響 可調整延遲時間
模組與封裝 Modules & Packages 模組 封裝 一個或多個封裝的容器 DLL 或 EXE 事件物件的容器 以 GUID 識別 依需求載入 不一定要包括所有的事件物件
事件和目標 Events & Targets 事件 事件是追蹤點 事件包括在封裝之中 在事件工作階段執行期間可以 加入事件 目標 同步 非同步 可用的目標 Histogram Pair matching Asynchronous file target Synchronous event counter Ring buffer Audit targets 檔案 安全性日誌 應用程式日誌 同步 非同步路由 事件串流
動作和述詞 Actions & Predicates 動作 同步被觸發 可以加入資料至事件之中 可以加入額外的內容 Stack trace T-SQL stack 對應至追蹤資料行 述詞 用於篩選事件
擴充事件提供 錯誤報告 死結 內部和外部的等候資訊 sp_server_diagnostics 輸出 寫入檔案或留在記憶體
SQL Server 2012 擴充事件封裝 名稱 描述 package0 預設封裝 包括所有標準的對應 類型 動作和目標 sqlos SQL Operating System 擴充事件 XeDkPkg SQLDK binary 擴充事件 sqlserver Microsoft SQL Server 擴充事件 SecAudit 安全性稽核事件 ucs Unified Communications Stack 擴充事件 sqlclr SQL CLR 擴充事件 filestream SQL Server FILESTREAM 和 FileTable 擴充事件 sqlserver Microsoft SQL Server 擴充事件 SELECT * FROM sys.dm_xe_packages
System_Health 事件工作階段 system_health AlwaysOn_health
System_Health 事件工作階段 預設的事件工作階段 錯誤嚴重等級超過 20 的事件 記憶體的錯誤 死結 Non-yielding Waits on locks > 30 秒 Waits on latches > 15 秒 External Waits Always On
即時性檢查 system_health SELECT CAST(xet.target_data as xml) FROM sys.dm_xe_session_targets xet JOIN sys.dm_xe_sessions xe ON (xe.address = xet.event_session_address) WHERE xe.name = 'system_health'
demo SQL Server Management Studio 擴充事件 許致學
Extended Events Manager Add-in for SSMS 2008 建立 刪除 修改 啟動 停止工作階段 建立擴充的事件物件的指令碼 檢視功能 擴充的事件物件的中繼資料 伺服器目前的事件工作階段 擴充的事件目標的資訊
想要看更詳細的資訊? sqlserver package Page splits begin / end transaction Tempdb sqlos package wait_info wait_info_external spinlock_backoffs
demo RML Type Reporting 許致學
原有自訂的 Profiler 追蹤定義? 幾乎每個追蹤事件和資料行都對應轉換為擴 充事件的事件和動作 1. 建立一個新的工作階段 2. 將每個追蹤的事件和資料行對應轉換為擴充 事件的事件和動作 3. 將追蹤的資料行篩選轉換為擴充事件的述詞 4. 加入目標
CREATE EVENT SESSION [SampledQueries] ON SERVER ADD EVENT sqlserver.error_reported( ACTION(sqlserver.client_app_name,sqlserver.database_id, sqlserver.query_hash,sqlserver.session_id) WHERE ((([package0].[divides_by_uint64]([sqlserver].[session_id],(5))) AND ([package0].[greater_than_uint64]([sqlserver].[database_id],(4)))) AND ([package0].[equal_boolean]([sqlserver].[is_system],(0))))), ADD EVENT sqlserver.sql_batch_completed( ACTION(sqlserver.client_app_name,sqlserver.database_id, sqlserver.query_hash,sqlserver.session_id) WHERE ((([package0].[divides_by_uint64]([sqlserver].[session_id],(5))) AND ([package0].[greater_than_uint64]([sqlserver].[database_id],(4)))) AND ([package0].[equal_boolean]([sqlserver].[is_system],(0))))) ADD TARGET package0.ring_buffer WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS, MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB, MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=ON, STARTUP_STATE=OFF) GO
SQL Power Tools 擴充事件使用與效益提升實戰 熟悉的工具未來不再可用 新的工具更強大 雖然需要再學習 今天就開始用擴充事件!
許致學
Resources Connect. Share. Discusss http://www.microsoft.com/taiwan/techdays2012/ Microsoft Certification & Training Resources http://www.microsoft.com/learning/zh/tw/ Resources for IT Professionals Resources for Developers http://social.msdn.microsoft.com/forums/zh-tw/categories http://social.technet.microsoft.com/forums/zh-tw/categories / /
請協助完成 本課程問卷 並在離開 教室時交給工作人員 填妥大會背包中的大會問卷 可於活動 第三天兌換問卷禮哦 感謝您的合作