共用方式為


具有高效能工作負載的 SQL Server 建議更新和組態選項

本文包含 SQL Server 2012 和更新版本可用的效能改進和組態選項清單。

原始產品版本: SQL Server 2014、SQL Server 2012
原始 KB 編號: 2964518

本文說明透過各種產品更新和組態選項,適用於 SQL Server 2014 和 SQL Server 2012 版本的效能改進和變更。 您可以考慮套用這些更新,以改善 SQL Server 實例的效能。 您看到的改進程度將取決於各種因素,包括工作負載模式、爭用點、處理器配置(處理器群組數目、套接字、NUMA 節點、NUMA 節點中的核心),以及系統中存在的記憶體數量。 SQL Server 支援小組使用這些更新和組態變更,為使用具有數個 NUMA 節點和大量處理器的硬體系統的客戶工作負載達到合理的效能提升。 支援小組會在未來繼續以其他更新更新本文。

高端系統 高端系統通常具有多個套接字、每個套接字八個核心或更多個核心,以及一半 TB 或更多記憶體。

注意

在 SQL Server 2016 和更新版本中,本文所述的許多追蹤旗標都是預設行為,您不需要在這些版本中啟用它們。

建議分成三個數據表,如下所示:

  • 表 1 包含最常建議的更新和追蹤旗標,以取得高端系統上的延展性。
  • 表 2 包含其他效能微調的建議和指引。
  • 表 3 包含額外的延展性修正,並隨附於累積更新。

資料表 1。 高端系統的重要更新和追蹤旗標

在確定 SQL Server 實例符合適用版本和組建範圍數據行中的需求之後,請檢閱下表,並在追蹤旗標數據行中啟用追蹤旗標。

注意

  • 適用的版本和組建指出引進變更或追蹤旗標的特定更新。 如果未指定 CU,則會包含 SP 中的所有 CU。

  • 不適用的版本和組建指出變更或追蹤旗標成為預設行為的特定更新。 因此,只要套用該更新就足以獲得好處。

重要

當您在 Always On 環境中啟用追蹤旗標的修正時,請注意,您必須在所有屬於可用性群組的複本上啟用修正和追蹤旗標。

要考慮的案例和徵兆 追蹤旗標 適用的版本和組建範圍 不適用的版本和組建範圍 知識庫文章/部落格連結,提供更多詳細數據
  • 您遇到高 CMEMTHREAD 等候。
  • SQL Server 安裝在每個套接字有 8 個或更多核心的系統上。
T8048
  • SQL Server 2012 RTM 至目前的 Service Pack (SP)/CU
  • SQL Server 2014 RTM 至 SP1
  • SQL Server 2014 SP2 至目前的SP/CU
  • SQL Server 2016 RTM 至目前的 SP/CU
  • SQL Server 2017 RTM 至目前的 SP/CU
  • 您遇到高 CMEMTHREAD 等候。
  • SQL Server 安裝在每個套接字有 8 個或更多核心的系統上。
T8079 SQL Server 2014 SP2 至目前的SP/CU
  • SQL Server 2016 RTM 至目前的 SP/CU
  • SQL Server 2017 RTM 至目前的 SP/CU
  • 您正在使用依賴記錄集區快取的功能。 (例如 AlwaysOn)
  • SQL Server 安裝在具有多個套接字的系統上。
T9024 SQL Server 2012 Service Pack 1 至 SP2 SQL Server 2014 RTM 的累積更新套件 3
  • SQL Server 2012 SP3 至目前的 SP/CUSQL
  • Server 2014 SP1 至目前的 SP/CU
  • SQL Server 2016 RTM 至目前的 SP/CU
  • SQL Server 2017 RTM 至目前的 SP/CU
修正:SQL Server 2012 或 SQL Server 2014 實例上的高「記錄寫入等候」計數器值
您的 SQL Server 實例因連線共用而處理數千個連線重設。 T1236 SQL Server 2012 Service Pack 1 至 SP2 SQL Server 2014 累積更新套件 9
  • SQL Server 2012 SP3 至目前的 SP/CUSQL
  • Server 2014 SP1 至目前的 SP/CUSQL
  • 伺服器 2016 RTM 至目前的 SP/CU
  • SQL Server 2017 RTM 至目前的 SP/CU
  • 您的應用程式工作負載牽涉到頻繁的tempdb使用方式(建立和卸除臨時表或數據表變數)。
  • 您注意到使用者要求因配置爭用而等候tempdb頁面資源。
T1118
  • SQL Server 2012 RTM 至目前的 SP/CU
  • SQL Server 2014 RTM 至目前的 SP/CU
  • SQL Server 2016 RTM 至目前的 SP/CU
  • SQL Server 2017 RTM 至目前的 SP/CU
tempdb 資料庫的並行增強功能

注意 啟用追蹤旗標,並新增tempdb資料庫的多個資料檔。
  • 您有多個 tempdb 資料檔。
  • 一開始數據檔會設定為相同的大小。
  • 由於活動繁重,tempdb 檔案遇到成長,而且並非所有檔案都會同時成長並造成配置爭用。
T1117
  • SQL Server 2012 RTM 至目前的 SP/CU
  • SQL Server 2014 RTM 至目前的 SP/CU
  • SQL Server 2016 RTM 至目前的 SP/CU
  • SQL Server 2017 RTM 至目前的 SP/CU
請參閱在 SQL Server tempdb 資料庫中降低配置競爭的建議
大量 SOS_CACHESTORE 同步鎖定爭用或您的計劃經常在臨機操作查詢工作負載上收回。 T174
  • 計劃快取中的項目會因為其他快取或記憶體 Clerk 中的成長而收回
  • 高 CPU 耗用量,因為經常重新編譯查詢
T8032
  • SQL Server 2012 RTM 至目前的 SP/CU
  • SQL Server 2014 RTM 至目前的 SP/CU
由於數據表中的大量數據列,因此不會經常更新現有的統計數據。 T2371
  • SQL Server 2012 RTM 至目前的 SP/CU
  • SQL Server 2014 RTM 至目前的 SP/CU
  • 統計數據作業需要很長的時間才能完成。
  • 無法平行執行多個統計數據更新作業。
T7471 SQL Server 2014 SP1 CU6 至目前的 SP/CU 使用 SQL 2014 和 SQL 2016 提升更新統計數據效能
CHECKDB 命令對於大型資料庫需要很長的時間。
  • T2562
  • T2549
    • SQL Server 2012 RTM 至目前的 SP/CU
    • SQL Server 2014 RTM 至目前的 SP/CU
    CHECKDB 命令對於大型資料庫需要很長的時間。 T2566
    • SQL Server 2012 RTM 至目前的 SP/CU
    • SQL Server 2014 RTM 至目前的 SP/CU
    執行需要長時間編譯時間的並行數據倉儲查詢,以等候 RESOURCE_SEMAPHORE_QUERY_COMPILE T6498 SQL Server 2014 至 SP1 的累積更新套件 6
    • SQL Server 2014 SP2 至目前的 SP/CUSQL
    • 伺服器 2016 RTM 至目前的 SP/CU
    • SQL Server 2017 RTM 至目前的 SP/CU
    您針對特定查詢效能問題進行疑難解答時,預設會停用優化器修正。 T4199
    • SQL Server 2012 RTM 至 SP4
    • SQL Server 2014 RTM 至最新版本
    使用具有空間數據類型的查詢作業,您會遇到效能緩慢的問題。
    • T6532
    • T6533
    • T6534
    • SQL Server 2012 SP3 至目前的SP/CU
    • SQL Server 2014 SP2 至目前的SP/CU
      • SQL Server 2016 RTM 至目前的 SP/CU
      • SQL Server 2017 RTM 至目前的 SP/CU
        • 查詢遇到 SOS_MEMORY_TOPLEVELBLOCKALLOCATOR 和 CMEMTHREAD 等候。
        • SQL Server 進程可用的虛擬位址空間很低。
        T8075
        • SQL Server 2012 SP2 CU8 至目前的 SP/CU
        • SQL Server 2014 RTM CU10 至目前的 SP/CU
        • SQL Server 2016 RTM 至目前的 SP/CU
        • SQL Server 2017 RTM 至目前的 SP/CU
        修正:當 SQL Server 進程的虛擬位址空間在 SQL Server 中很低時,記憶體不足錯誤
        • SQL Server 會安裝在具有大量記憶體的電腦上。
        • 建立新的資料庫需要很長的時間。
        T3449
        • SQL Server 2012 SP3 CU3 至目前的 SP/CU
        • SQL Server 2014 RTM CU14 至目前的 RTM CU
        • SQL Server 2014 SP1 CU7 至目前的 SP/CU
        • SQL Server 2016 RTM 至目前的 SP/CU
        • SQL Server 2017 RTM 至目前的 SP/CU
        修正:在具有大量記憶體的系統上建立 SQL Server 資料庫所需的時間超過預期

        表 2. 改善 SQL Server 實例效能的一般考慮和最佳做法

        檢閱知識庫文章/書籍在線資源數據行中的內容,並考慮實作建議動作數據行中的指引。

        知識庫文章/在線叢書資源 建議動作
        設定 max degree of parallelism 伺服器組態選項 使用sp_configure預存程式,根據知識庫文章,對 SQL Server 實例的平行處理原則伺服器組態選項進行組態變更
        SQL Server 版本的計算容量限制 Enterprise Edition 含伺服器 + 用戶端存取授權 (CAL) 授權限制為每個 SQL Server 實例 20 個核心。 核心伺服器授權模式之下沒有任何限制。 請考慮將 SQL Server 版本升級至適當的 SKU,以利用所有硬體資源。
        使用「平衡」電源計劃時,Windows Server 的效能變慢 檢閱本文,並與您的 Windows 系統管理員合作,實作本文一節中所述的其中一個解決方案。
        手動將 NUMA 節點指派給 K 群組。
        針對臨機操作工作負載進行優化 FORCED PARAMETERIZATION 計劃快取中的項目會因為其他快取或記憶體 Clerk 中的成長而收回。 當快取達到其項目數目上限時,您也可能遇到計劃快取收回。 除了上述所討論的追蹤旗標 8032 之外,請考慮 針對臨機操作工作負載 伺服器選項以及 FORCED PARAMETERIZATION 資料庫選項進行優化。
        如何在 SQL Server 記憶體組態中減少緩衝池記憶體的分頁,以及 SQL Server 2012 和更新版本中的大小考慮 將 [啟用記憶體中的鎖定頁面] 選項 (Windows) 用戶權力指派給 SQL 服務啟動帳戶。 請參閱 如何在 SQL Server 2012 中啟用「鎖定的頁面」功能。 將伺服器記憶體上限設定為大約90%的總物理記憶體。 請確定 [ 伺服器記憶體組態選項 ] 設定只會佔設定為使用同質遮罩設定之節點的記憶體。
        SQL Server 和大型頁面說明...在高效能工作負載中執行時,調整 SQL Server 的選項 如果您有具有大量記憶體的伺服器,特別是分析或數據倉儲工作負載,請考慮啟用 TF 834。 請記住, 如果您使用數據行存放區索引,不建議使用 TF 834。
        sp_configure預存程式中可用的「存取檢查快取貯體計數」和「存取檢查快取配額」選項的描述 使用 存取檢查快取伺服器組態選項 ,根據知識庫文章中的建議設定這些值。 高端系統的建議值如下:
        「存取檢查快取貯體計數」:256
        「存取檢查快取配額」:1024

        ALTER WORKLOAD GROUP Memory grant query hints 如果您有許多耗用大量記憶體授與的查詢,請將資源管理員設定中預設工作負載群組的預設工作負載群組從預設 25% 縮減 request_max_memory_grant_percent 為較低的值。 SQL Server 中有新的查詢記憶體授與選項可用 (min_grant_percentmax_grant_percent
        立即檔案初始化 請與您的 Windows 系統管理員合作,根據《在線叢書》主題中的資訊,授與 SQL Server 服務帳戶「執行磁碟區維護工作」用戶權力。
        SQL Server 中「自動成長」和「自動成長」設定的考慮 檢查您資料庫的目前設定,並確定它們已根據知識庫文章中的建議進行設定。
        資料庫檢查點 (SQL Server) 請考慮在使用者資料庫上啟用間接檢查點,以優化 SQL Server 2012 和 2014 中的 I/O 行為。
        修正:當磁碟在 SQL Server AG 和 Logshipping 環境中有不同扇區大小的主要和次要復本記錄檔時,同步處理速度變慢 如果您有可用性群組,其中主要復本上的事務歷史記錄位於具有 512 位元組扇區大小的磁碟上,而次要復本的事務歷史記錄位於具有 4K 扇區大小的磁碟驅動器上,您可能會發生同步處理速度緩慢的問題。 在這些情況下,啟用 TF 1800 應該更正問題。 如需詳細資訊,請參閱 追蹤旗標 1800
        如果您的 SQL Server 尚未系結 CPU,且工作負載的 1.5% 至 2% 額外負荷是微不足道的,建議您啟用 TF 7412 作為啟動追蹤旗標。 此旗標可在 SQL Server 2014 SP2 或更新版本中啟用輕量型分析,讓您能夠在生產環境中執行實時查詢疑難解答。

        表 3. 累積更新中包含的效能修正

        檢閱 [徵兆] 數據行中的描述,並在適用環境中的 [必要更新] 數據行中套用必要的更新。 您可以檢閱知識庫文章,以取得有關個別問題的詳細資訊。 這些建議不需要您啟用其他追蹤旗標作為啟動參數。 只要套用包含這些修正的最新累積更新或 Service Pack 就足以獲得好處。

        注意

        必要更新數據行中的 CU 名稱會提供第一個可解決此問題的 SQL Server 累積更新。 累積更新包含所有 Hotfix 和先前 SQL Server 更新版本隨附的所有更新。 因此,建議您安裝 最新的累積更新 ,以解決問題。

        徵兆 所需的更新 知識庫文章
        暫存數據表的 Select-into 期間急切寫入會導致效能問題。 SQL Server 2012 SP2 CU1
        SQL Server 2012 SP1 CU10
        修正:當您在 SQL Server 2012 中執行 select 到臨時表作業時,I/O 效能不佳
        您遇到 PWAIT_MD_RELATION_CACHEMD_LAZYCACHE_RWLOCK 等候查詢作業中止之後 ALTER INDEX ... ONLINE SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        修正:ALTER INDEX 之後的效能會降低...SQL Server 2012 或 SQL Server 2014 中的 ONLINE 作業已中止
        查詢在產品的標準版本上突然執行效能不佳。 SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        修正:SQL Server 2012 或 SQL Server 2014 Standard Edition 中不會平均排程線程
        由於頁面預期壽命突然下降,效能變慢。 SQL Server 2012 SP1 CU4 修正:您可能會在 SQL Server 2012 中遇到效能問題
        NUMA 設定、大型記憶體和「最大伺服器記憶體」設定為低值的系統上,透過資源監視的高CPU使用量。 SQL Server 2012 SP1 CU3 修正:當您在伺服器上安裝 SQL Server 2012 之後,伺服器上沒有負載時,CPU 尖峰
        非產生排程器,而配置記憶體進行排序時,會在已安裝大量記憶體的系統上執行相關聯的大型記憶體授與。 SQL Server 2012 SP1 CU2 修正:當您在 SQL Server 2012 或 SQL Server 2008 R2 中有許多 CPU 和大量記憶體的伺服器上執行查詢時,錯誤 17883
        當排序運算符在具有大型記憶體的系統上,於緩衝池中周遊許多貯體時,非產生排程器。 SQL Server 2012 SP1 CU1 修正:當您在 SQL Server 2012 中執行查詢時,「行程在排程器上似乎未產生」錯誤訊息
        當您執行長時間在具有多個 NUMA 節點和許多核心的系統上編譯的並行查詢時,CPU 使用率很高。 SQL Server 2012 SP2 CU1
        SQL Server 2014 RTM CU2
        修正:大量查詢編譯工作負載不會隨著 NUMA 硬體上的核心數目增加而調整,而且會導致 SQL Server 中的 CPU 飽和
        排序運算子的記憶體配置需要很長的時間才能在具有大型記憶體的 NUMA 系統上完成,因為遠端節點配置。 SQL Server 2012 SP1 CU3 修正:NUMA 環境中的 SQL Server 效能問題
        當 SQL Server 安裝在具有大量 RAM 的 NUMA 機器上,且 SQL Server 有許多外頁時, 記憶體不足錯誤。 SQL Server 2012 RTM CU1 修正:當您在使用 NUMA 的電腦上執行 SQL Server 2012 實例時發生記憶體不足錯誤
        在 大型數據表中建立空間數據類型的索引時,和 SOS_SELIST_SIZED_SLOCK 上的微調鎖定爭用SOS_CACHESTORE SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        修正:當您在大型數據表的空間數據類型上建置索引時,SQL Server 2012 或 SQL Server 2014 中的效能變慢
        當您在大型數據表中的空間數據類型上建置索引時,高 CMEMTHREAD 等候類型。 SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        修正:當您在 SQL Server 2012 或 SQL Server 2014 實例中大型數據表的空間數據類型上建置索引時,SQL Server 效能變慢
        由於 SOS_PHYS_PAGE_CACHE 和 CMEMTHREAD 的效能問題會在大型記憶體電腦上的記憶體配置期間等候。 SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        修正:在 SQL Server 2012 或 SQL Server 2014 的外國頁面處理期間,NUMA 環境中發生效能問題
        CHECKDB 命令對於大型資料庫需要很長的時間。 SQL Server 2014 的累積更新套件 6 修正:SQL Server 2012 或 SQL Server 2014 中的 DBCC CHECKDB/CHECKTABLE 命令可能需要較長的時間

        重要注意

        參考資料

        適用於

        • SQL Server 2014 Enterprise
        • SQL Server 2014 Enterprise Core
        • SQL Server 2014 商業智慧
        • SQL Server 2014 開發人員
        • SQL Server 2014 Standard
        • SQL Server 2014 Web
        • SQL Server 2014 Express
        • SQL Server 2012 商業智慧
        • SQL Server 2012 開發人員
        • SQL Server 2012 Enterprise
        • SQL Server 2012 Standard
        • SQL Server 2012 Web
        • SQL Server 2012 Enterprise Core