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

徵狀

請試想下列案例:

  • 您有一個資料表,其中有聚集列序索引,且資料表有許多資料行(在成百上千)。

  • 這些資料行的資料(資料類型)是高度可壓縮的資料(例如Varchar)。

  • 您可以針對此資料表執行 SELECT 語句來選取此資料表中的大型子集或所有資料行。

  • 您的 select 語句有一個 WHERE 子句,可將它的輸出限制為非常少的資料列(查詢是極具選擇性的)。

在這種情況下,您可能會遇到下列任何一個或所有的問題:

  • 併發工作負荷(在伺服器上與此查詢同時執行的其他查詢)可能會降低效能並降低輸送量。

  • 您可能會看到 [間歇性高 CPU 使用量]。

  • 如果您查詢 sys.dm_os_ring_buffers並查看 SchedulerMonitor 類型專案,您會發現在執行此查詢期間記錄了間歇性的「未產生排程」訊息。

  • 您可能會在錯誤記錄中收到無法取得的排程程式錯誤,而且可能會產生故障記憶儲存體轉儲檔案。

解決方案

這個問題首先是在下列 SQL Server 累積更新中修正:

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

其他相關資訊

修正詳細資料處理欄區段的工作流程(將其解壓縮,並針對符合資格的列進行掃描),用於在輸出特定閾值的列數時,將 CPU 使用量「產生」到其他工作人員/併發查詢執行。 當WHERE 子句為產生幾個資料列的極高選擇性時,處理此查詢的工作流程會處理未壓縮和大量的區段(因為只有極少的列資格),才能讓其他工人處理其工作。 這會導致 CPU 使用量不規律,以及併發工作負載的輸送量下降。 修正程式會針對此類列查詢優化並改善 CPU 共用演算法。

參考

瞭解 Microsoft 用於描述軟體更新的 詞彙

需要更多協助嗎?

想要其他選項嗎?

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

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