SQL Server 的 SQL Statistics 物件

適用於:SQL Server

SQL Server 中的 SQLServer:SQL Statistics 物件提供計數器,以便監視編譯及傳送給 SQL Server 執行個體的要求類型。 監視查詢編譯和重新編譯的次數,以及 SQL Server 執行個體收到的批次數目,可讓您了解 SQL Server 處理使用者查詢的速度,以及查詢最佳化工具處理查詢的效率。

編譯是查詢回覆速度的重要部份。 為節省編譯成本,資料庫引擎會在查詢快取中儲存已編譯的查詢計劃。 快取的目標是減少編譯,透過儲存編譯過的查詢以供日後重複使用,以後執行時便可以省去重新編譯查詢的步驟。 不過,每個不同的查詢至少都需要編譯一次。 下列因素均可能導致查詢重新編譯:

  • 結構描述變更,包括基底結構描述變更,例如將資料行或索引加入資料表,或統計資料結構描述變更,例如在資料表內插入或刪除大量的資料列。

  • 環境 (SET 陳述式) 變更。 工作階段設定的變更,例如 ANSI_PADDING 或 ANSI_NULLS 可能導致查詢重新編譯。

如需簡單參數化與強制參數化的詳細資訊,請參閱 ALTER DATABASE (Transact-SQL)

以下是 SQL Server SQL Statistics 計數器。

SQL Server SQL Statistics 計數器 描述
Auto-Param Attempts/sec 每秒的自動參數化嘗試次數。 此總數應該是所有失敗的、安全的與不安全的自動參數化之總和。 當 SQL Server 執行個體嘗試以參數來取代部份常值,以便將 Transact-SQL 要求參數化時,便會發生自動參數化;如此,所產生的快取執行計畫便可在多個相似的要求中重複使用。 自動參數化也稱為較新版本 SQL Server 中的簡單參數化。 此計數器不包含強制參數化。
Batch Requests/sec 每秒接收的 Transact-SQL 命令批次數目。 此統計資料受到所有條件約束的影響 (例如 I/O、使用者數目、快取大小、要求複雜性等), 批次要求數目大,表示輸送量高。
Failed Auto-Params/sec 每秒失敗的自動參數化嘗試。 這應該很小。 自動參數化也稱為較新版本 SQL Server 中的簡單參數化。
Forced Parameterizations/sec 每秒成功的強制參數化次數。
Guided Plan Executions/sec 每秒計畫執行的次數 (已經使用計畫指南產生查詢計畫)。
Misguided Plan Executions/sec 每秒計畫執行的次數 (在計畫產生期間無法接受計畫指南)。 計畫指南已被忽略而且使用一般編譯來產生執行的計畫。
Safe Auto-Params/sec 每秒的安全自動參數化嘗試。 「安全」是一項判斷,認定相似的不同 Transact-SQL 陳述式可共用快取執行計畫。 SQL Server 可進行多項自動參數化嘗試,其中有些安全,有些則會失敗。 自動參數化也稱為較新版本 SQL Server 中的簡單參數化。 此項目不包含強制參數化。
SQL Attention rate 每秒的注意事項數目。 注意事項是用戶端的要求,用來結束目前執行中的要求。
SQL Compilations/sec 每秒的 SQL 編譯次數, 表示輸入編譯程式碼路徑的次數。 包括 SQL Server 中由陳述式層級的重新編譯所造成的編譯。 在 SQL Server 使用者活動穩定之後,此值便會達到穩定狀態。
SQL Re-Compilations/sec 每秒的陳述式重新編譯次數, 此值計算觸發陳述式重新編譯的次數。 通常,您會希望重新編譯的次數降低。
Unsafe Auto-Params/sec 每秒不安全的自動參數化嘗試次數。 例如,查詢具有一些特性,會阻止共用快取計畫。 這些特性就稱為不安全的。 強制參數化的次數不算在內。

範例

您可以使用 sys.dm_os_performance_counters 動態管理檢視的 T-SQL 查詢,開始探索此物件中的查詢效能計數器:

SELECT * FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%SQL Statistics%';