當 SQL Server 資料庫系統效能下降時,DBA 往往會想到使用 SQL Server Profiler(SQL 事件探查器)進行追蹤分析。Profiler 確實能捕獲所有送往 SQL Server 的陳述式,以及執行效能相關資料(如讀寫頁數、CPU 使用量、Duration 等)。然而,面對龐大的追蹤檔,傳統分析方法往往力不從心。本文將介紹如何結合 Read80trace 工具與自訂預存程序,從海量 Trace 檔中快速提煉關鍵效能報表,實現「高屋建瓴」的資料庫優化策略。
除了排查死結、阻塞、逾時等問題,Trace 檔最核心的價值在於揭示三大關鍵資訊:
這三大資訊構成了資料庫系統的「存取模式」。在足夠長的採樣時間(建議 2 小時以上)下,這些模式相當穩定。掌握存取模式,優化時便能胸有成竹。
Read80trace 是 Microsoft RML Utilities 包含的命令列工具。其核心價值在於 Normalization(標準化/歸一化) 功能:將邏輯相同、參數不同的陳述式自動歸類,並匯入資料庫生成 HTML 效能分析報表。此外,它還能生成 RML 檔供 OSTRESS 多執行緒重放,便於在測試環境複現生產負載。
假設 Trace 中包含:
SELECT * FROM authors WHERE au_lname = 'white'
SELECT * FROM authors WHERE au_lname = 'green'
SELECT * FROM authors WHERE au_lname = 'brown'
標準化後將歸類為單一模式:
SELECT * FROM authors WHERE au_lname = @p1
並統計該模式的總執行次數、總 CPU、總 Duration、總 Reads/Writes 等聚合指標,瞬間揭示「高頻且高耗」的核心模式。
read80trace -I trace.trc -d PerfAnalysisDB -o output.rml,將 Trace 匯入資料庫並生成標準化資料表。Read80trace 的標準化功能打破了傳統分析「見樹不見林」的瓶頸。配合自訂預存程序的彈性統計,DBA 可在海量 Trace 中快速建立系統存取模式全景圖,實現精準、高效的 SQL Server 效能優化。