Applies ToSQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

徵狀

假設您有許多統計和資料表,且資料表在 Microsoft SQL Server 2012 或 SQL Server 2014 資料庫中包含許多資料行。 當您執行許多特別的查詢以同時從這些資料表中取得資料時,您可能會在執行期間遇到 CMEMTHREAD 等待的情況。

解決方案

累積更新資訊

此問題最初是在 SQL Server 的後續累積更新中修正。

每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 我們建議您下載並安裝最新的 SQL Server 累積更新:

其他相關資訊

當您在 SQL Server 2012 中編譯或重新編譯查詢時,引擎需要從 [統計資料] 長條圖取得輸入。 我們需要執行系統資料表掃描,然後載入記憶體或快取所涉及之資料表的特定長條圖。 這些系統資料表專案(針對統計資料)會儲存在系統資料表快取(CACHESTORE_SYSTEMROWSET)中。 在快取中用來建立這些專案的記憶體物件並未分區,而且是全域的。 因此,如果您在這個作業期間執行了併發記憶體分配,您會在這個記憶體物件上遇到 CMEMTHREAD 等待的情況。 當您提交大量需要編譯或重新編譯的查詢時,通常會發生這種情況。 此熱修復程式會將全域記憶體物件變更為已分區,以便使用系統表快取的併發記憶體分配不會遇到爭用及 CMEMTHREAD 等待。如需類似問題的詳細資訊,請參閱 KB 3026082:修正 SOS_CACHESTORE: spinlock 系統表行集緩存上的爭用會導致 SQL Server 2012 或2014中的 CPU 使用量過高

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。