症狀
當您嘗試在大型資料表的空間資料類型上使用 CREATE INDEX 或 ALTER INDEX) 建立索引 (時,Microsoft SQL Server 2012 或 SQL Server 2014 的效能可能會不佳。 您可以在 SOS_CACHESTORE 和 SOS_SELIST_SIZED_SLOCK 上找到許多執行緒同步鎖定爭用。
解決方式
此問題已先在下列 SQL Server 累積更新中修正。
SQL Server 2014 累積更新 1 /zh-tw/help/2931693
SQL Server 2012 SP1 的累積更新 7 /zh-tw/help/2894115
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
Hotfix 更新套件資訊 Microsoft 提供支援的 Hotfix。 不過,此 Hotfix 僅用來修正本文所述的問題。 僅將此 Hotfix 套用至發生此特定問題的系統。
如果 Hotfix 可供下載,本知識庫文章頂端有「Hotfix 可供下載」一節。 如果未顯示此區段,請提交要求給 Microsoft 客戶服務與支援以取得 Hotfix。
注意: 如果發生其他問題或需要進行任何疑難排解,您可能需要建立另外一個服務要求。 一般的支援費用將適用於不符合此特定 Hotfix 資格的其他支援問題和問題。 如需 Microsoft 客戶服務及支援服務的完整電話號碼清單,或建立個別的服務要求,請造訪下列 Microsoft 網站:
/contactus/?ws=support 注意:「Hotfix 下載可用」表單顯示 Hotfix 可用的語言。 如果您找不到您的語言,是因為該語言沒有 Hotfix。
更多資訊
執行緒同步鎖定可保護 CLR) 程式快取項目 (通用語言執行階段。 建立或變更索引的查詢計劃通常涉及 Apply 運算子或 Nested Loop 運算子。 JOIN 作業的外部會從空間資料表傳回資料列,並驅動空間函數。 每次叫用函數時,可能會使用執行緒鎖定。 當查詢以高度並行執行時,執行緒同步鎖定可能會成為瓶頸。 下圖是這類空間規劃的範例。
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
參考資料
如需有關在 SQL Server 2012 中大型資料表的空間資料類型上建立索引時另一個效能問題的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
2887888修正:當您在 SQL Server 2012 執行個體中大型資料表的空間資料類型上建立索引時,SQL Server 效能變慢