徵兆
當您使用 Microsoft SQL Server 2016 (或 2017) 的新實例,或是從舊版 SQL Server 升級的 SQL Server 2016 (或 2017) 實例時,您會遇到高 CPU 使用率的效能問題。 此外,如果您查詢sys.dm_os_spinlock_stats資料表,您會發現SECURITY_CACHE (安全性快取) 的微調資料行中有高值,而且CMED_HASH_SET中繼資料快取 (資料快取) 資料列 (資料表) 中的其他資料列相較。 例如,您會注意到下列值。
原因
此問題發生的原因為高度並行系統中高旋轉鎖定的搜尋。 在這些作業系統中,多個 CPU 執行緒會競相資源,並且會在週期性地迴圈執行時長時間旋轉,以判斷資源是否可用而非立即收益。 當多個 CPU 線 程持續迴圈 (資源) 而非收益時,這會導致高 CPU 使用量和效能問題。
解決方案
這個問題已在下列SQL Server累積更新中修正:
附註: 在套用 SQL Server 2016 累積更新 2 (CU2) 之後,SECURITY_CACHE和CMED_HASH_SET名稱會分別變更為LOCK_RW_SECURITY_CACHE和LOCK_RW_CMED_HASH_SET。 套用 CU2 之後,值會如下所示。
每個SQL Server的新累積更新都包含所有 Hotfix 以及先前累積更新隨附的所有安全性修正。 查看SQL Server的最新累積更新:
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
參考資料
瞭解 Microsoft 用來描述軟體更新的 術語 。
SQL Server上的白皮書診斷和解決旋轉鎖爭議,詳細探討與轉鎖爭議相關的問題和解決方式。