徵狀
當您嘗試在 Microsoft SQL Server 2014 中同時執行多個大型查詢時,某些查詢可能會等候 RESOURCE_SEMAPHORE_QUERY_COMPILE。 即使伺服器有足夠的可用記憶體,只需要比大型閘道閾值(由 DBCC MEMORYSTATUS 命令輸出所提供)更多記憶體的一個查詢才能繼續進行。注意這是預期的行為。 不過,在大型批次系統(例如資料倉儲)中,這可能會降低併發執行多個查詢的效能。
解決方案
累積更新資訊
此問題最初是在 SQL Server 的後續累積更新中修正。
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 我們建議您下載並安裝最新的 SQL Server 累積更新:
此熱修復程式會引入新的 trace 標誌-T 6498。 如果有足夠的可用記憶體,此追蹤標誌可讓您有多個大型查詢編譯能存取大型閘道。 它是以 SQL Server 目標記憶體的80百分比為基礎,並允許針對每 25 gb 的記憶體進行一次大型查詢編譯。 例如,這可讓 64 GB 目標記憶體電腦上有兩個大型查詢編譯。 套用此熱修復程式後,您必須啟用 trace 標誌-T 6498 來啟用新的行為。 注意如果您使用 DBCC TRACEON 命令啟用追蹤旗標,則不需要重新開機伺服器即可讓追蹤旗生效。 但若要套用新的大型閘道設定,可能需要10秒鐘的時間。 Microsoft 提供了支援的修補程式。不過,此修正程式僅適用于本文所述的問題。僅將此熱修復程式套用至遇到這特定問題的系統。 如果有可供下載的熱修復程式,請參閱這篇知識庫文章頂端的「提供修補程式下載」一節。如果此區段未出現,請提交要求至 Microsoft 客戶服務和支援以取得此熱修復程式。 記事 如果發生其他問題,或需要進行任何疑難排解,您可能必須建立個別的服務要求。一般支援費用適用于不符合此特定熱修復程式的其他支援問題與問題。如需 Microsoft Customer Service 和支援電話號碼的完整清單,或是要建立個別的服務要求,請造訪下列 Microsoft 網站:
http://support.microsoft.com/contactus/?ws=support 注意: [可使用的修補程式下載] 表單會顯示可供修復程式使用的語言。 如果您沒有看到您的語言,這是因為該語言沒有可用的修補程式。
其他相關資訊
原因SQL Server 使用編譯閘道來節流編譯。 [閘道架構] 是一種 SQL Server 的方法,可讓您在控制期間編譯內送查詢的記憶體使用量。 有三個閘道: [小型]、[中] 和 [大]。 如需如何使用 DBCC MEMORYSTATUS 命令來監視記憶體使用量的詳細資訊,請參閱 KB 907877:如何使用 dbcc MEMORYSTATUS 命令監視 SQL Server 2005 上的記憶體使用量。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。