適用於具備高效能工作負載 SQL Server 2017 及 SQL Server 2016 的建議更新及設定選項
本文說明 SQL Server 2016 和更新版本可用的效能改進和組態選項清單。
原始產品版本: Windows 上的 SQL Server 2017、SQL Server 2016
原始 KB 編號: 4465518
簡介
本文說明透過各種產品更新和組態選項,Microsoft SQL Server 2017 和 SQL Server 2016 可用的效能改進和變更。
建議您考慮套用這些更新,以改善 SQL Server 實例的效能。 改善程度將取決於各種因素,包括工作負載模式、爭用點、處理器配置(處理器群組、套接字、NUMA 節點和 NUMA 節點的核心數目),以及系統中可用的記憶體數量。
SQL Server 支援小組使用這些更新和組態變更,為使用包含數個 NUMA 節點和大量處理器的硬體系統的客戶工作負載達到合理的效能提升。 支援小組會在未來繼續以其他更新更新本文。
定義:高端系統
「高階系統」通常具有多個套接字、每個套接字 8 個核心或更多個,以及一半 TB 或更多記憶體。
套用建議的更新並改善 SQL Server 效能
改善 SQL Server 2017 和 SQL Server 2016 效能的這些建議會分成五個數據表,如下所示:
- 表 1 包含最常建議的更新和追蹤旗標,以取得高端系統上的延展性。
- 表 2 包含其他效能微調的建議和指引。
- 表 3 包含 SQL 2017 和 2016 中行為和預設設定變更的相關信息。
- 表 4 包含其他延展性修正,並隨附於累積更新 (CU)。
- 表 5 包含針對部署在 Linux 環境中之 SQL Server 實例的建議修正和設定指導方針。
注意
如需其他內容,請參閱 常用旋鈕來微調忙碌的 SQL Server。
重要
如果您啟用追蹤旗標,請務必在執行移轉至 SQL Server 2017 或 SQL Server 2016 之後檢閱該文章中的資訊。 該文章中列出的許多追蹤旗標和組態選項都會成為 SQL Server 2017 和 SQL Server 2016 中的預設選項。
資料表 1。 高端系統的重要更新和追蹤旗標
檢閱下表,並在確定 SQL Server 實例符合適用版本和組建範圍數據行中的需求之後,於追蹤旗標數據行中啟用追蹤旗標。
注意
- 適用的版本和組建 指出引進變更或追蹤旗標的特定更新。 如果未指定 CU,則會包含 SP 中的所有 CU。
- 不適用的版本和組建 表示變更或追蹤旗標成為預設行為的特定更新。 因此,只要套用該更新就足以獲得權益。
重要
當您在 Always On 環境中啟用具有追蹤旗標的修正時,請注意,您必須在所有屬於可用性群組的複本上啟用修正和追蹤旗標。
要考慮的案例和徵兆 | 追蹤旗標 | 適用的版本和組建範圍 | 不適用的版本和組建範圍 | 如需詳細資訊,請參閱知識庫文章或部落格連結 |
---|---|---|---|---|
大量SOS_CACHESTORE同步鎖定競爭,或您的計劃經常在臨機操作查詢工作負載上收回。 | T174 | SQL Server 2016 RTM 至目前的 SP/CU SQL Server 2017 RTM 至目前的 SP/CU | 無 | KB3026083 - 修正:SOS_CACHESTORE臨機操作 SQL Server 計劃快取上的微調鎖定爭用會導致 SQL Server 中的 CPU 使用率偏高 |
計劃快取中的項目會因為其他快取或記憶體 Clerk 中的成長而收回。 高 CPU 耗用量,因為經常重新編譯查詢。 | T8032 | SQL Server 2016 RTM 至目前的 SP/CU SQL Server 2017 RTM 至目前的 SP/CU | 無 | DBCC TRACEON - 追蹤旗標 (Transact-SQL) 的檔。 請參閱規劃快取內部的快取大小管理一節。 |
tempdb 已大量使用,而且對tempdb中的數據進行了許多修改。 使用tempdb資料庫的間接檢查點時,您會遇到非產生排程器訊息。 | T3468 | SQL Server 2016 SP1 CU5 至目前的 SP/CU SQL Server 2017 CU1 至目前的 SP/CU | 無 | 間接檢查點和 tempdb - 良好、不良和非產生排程器KB4040276 - 修正:tempdb 資料庫的間接檢查點會導致 SQL Server 2016 和 2017 中的「非產生排程器」錯誤 |
tempdb 中經常發生簡短交易。 您注意到這些交易的CPU使用量增加一般準則合規性未啟用 | T3427 | SQL Server 2016 SP1 CU2 至 SQL Server 2016 SP2 CU2 | SQL Server 2017 RTM | KB3216543 - FIX:在 SQL Server 2016 和 2017 中使用許多頻繁、簡短交易的工作負載可能會耗用比 SQL Server 2014 更多的 CPU |
您要針對特定查詢效能問題進行疑難解答。 優化工具修正預設為停用。 |
T4199 | SQL Server 2016 RTM 至目前的 SP/CU SQL Server 2017 RTM 至目前的 SP/CU | 無 | KB974006 - SQL Server 查詢優化器 Hotfix 追蹤旗標 4199 服務模型 注意:請考慮使用資料庫範圍選項QUERY_OPTIMIZER_HOTFIXES或查詢提示ENABLE_QUERY_OPTIMIZER_HOTFIXES,而不是伺服器層級追蹤旗標 4199。 |
統計數據作業需要很長的時間才能完成。 無法平行執行多個統計數據更新作業。 | T7471 | SQL Server 2016 RTM CU1 至目前的 SP/CU SQL Server 2017 RTM 至目前的 SP/CU | 無 | KB3156157 - 同時針對單一數據表上的不同統計數據執行多個 UPDATE STATISTICS 使用 SQL 2014 和 SQL 2016 提升更新統計數據效能 |
表 2. 改善 SQL Server 實例效能的一般考慮和最佳做法
檢閱知識庫文章或《在線叢書資源》數據行中的內容,並考慮在 [建議的動作] 數據行中實作指導方針。
知識庫文章或在線叢書資源 | 建議的動作 |
---|---|
設定 max degree of parallelism 伺服器組態選項 | sp_configure 使用預存程式,針對每個知識庫文章的 SQL Server 實例設定最大平行處理原則伺服器組態選項進行組態變更。 |
依版本 計算容量限制 SQL Server 2012 的授權核心限制 | 具有伺服器和用戶端存取授權 (CAL) 授權的企業版限制為每個 SQL Server 實例 20 個核心。 核心伺服器授權模式之下沒有任何限制。 請考慮將 SQL Server 版本升級至適當的 SKU,以使用所有硬體資源。 |
使用平衡電源計劃時,Windows Server 效能變慢 | 檢閱文章,並與您的 Windows 系統管理員合作,以實作文章的 [解決] 區段中所列的其中一個解決方案。 |
針對臨機操作工作負載優化 伺服器組態選項 FORCED PARAMETERIZATION |
計劃快取中的項目會因為其他快取或記憶體 Clerk 中的成長而收回。 當快取達到其項目數目上限時,您也可能遇到計劃快取收回。 除了上述所討論的追蹤旗標 8032 之外,請考慮 針對臨機操作工作負載 伺服器選項以及 FORCED PARAMETERIZATION 資料庫選項進行優化。 |
如何減少 SQL Server 中緩衝池記憶體的分頁 SQL Server 2012 和更新版本中的記憶體設定和重設大小考慮 |
將 [啟用記憶體中的鎖定頁面] 選項 (Windows) 用戶權力指派給 SQL 服務啟動帳戶。 請參閱 如何在 SQL Server 2012 中啟用「鎖定的頁面」功能。 將伺服器記憶體上限設定為大約90%的總物理記憶體。 請確定 [ 伺服器記憶體組態選項 ] 設定只會佔設定為使用同質遮罩設定之節點的記憶體。 |
SQL Server 和大型頁面說明... | 如果您有記憶體太多的伺服器,特別是針對分析或數據倉儲工作負載,請考慮啟用 追蹤旗標 834 。 請記住, SQL Server 中具有大型頁面記憶體模型的數據行存放區索引互操作性。 |
與大型安全性快取相關聯的查詢效能問題 當 TokenAndPermUserStore 快取的大小在 SQL Server 中成長時,查詢需要較長的時間才能完成執行 DBCC TRACEON - 追蹤旗標 (Transact-SQL) |
如果安全性快取成長為大型大小,而且您遇到效能問題和微調鎖定爭用,請考慮啟用追蹤旗標 T4610 和 T4618 以減少 TokenAndPermuserStore 的大小上限。 |
ALTER WORKLOAD GROUP KB3107401 - SQL Server 2012 中提供新的查詢記憶體授與選項(min_grant_percent和max_grant_percent) | 如果您有許多耗用大量記憶體授與的查詢,請將資源管理員設定中預設工作負載群組的預設工作負載群組從預設 25% 縮減 request_max_memory_grant_percent 為較低的值。 SQL Server 中有新的查詢記憶體授與選項可供使用。min_grant_percent max_grant_percent |
SQL 2016 - 它只會執行得更快:自動 TEMPDB 設定 | 如果這是升級的伺服器,請為tempdb資料庫新增大小相等的多個資料檔。 針對新的安裝,安裝程式會自動執行這項作業。 |
TEMPDB - 檔案和追蹤旗標和更新 | 藉由避免或減少暫存物件上的 DDL,使用 tempdb 優化並改善延展性。 |
立即檔案初始化 | 請與您的 Windows 系統管理員合作,根據《在線叢書》主題中的資訊,授與 SQL Server 服務帳戶「執行磁碟區維護工作」用戶權力。 |
SQL Server 中「自動成長」和「自動成長」設定的考慮 | 檢查您資料庫的目前設定,並確定它們已根據知識庫文章中的建議進行設定。 |
間接檢查點 | 請考慮在使用者資料庫上啟用間接檢查點,以優化 SQL Server 2014 和 2012 中的 I/O 行為。 |
SQL Server:大型 RAM 和 DB 檢查點 | 請考慮在使用者資料庫上啟用間接檢查點,以優化 SQL Server 2014 和 2012 中的 I/O 行為。 在參考 間接檢查點和 tempdb 中檢閱 tempdb 的必要調整 - 良好、不良和非產生排程器。 |
KB3009974 - 修正:當磁碟在 SQL Server AG 和 Logshipping 環境中有不同扇區大小的主要和次要復本記錄檔時,同步處理速度變慢 | 如果您有一個可用性群組,其中主要復本上的事務歷史記錄位於具有512位元組扇區大小的磁碟上,而次要復本事務歷史記錄位於具有4 K扇區大小的磁碟驅動器上,您可能會遇到同步處理速度緩慢的問題。 在此情況下,啟用 TF 1800 應該更正問題。 如需詳細資訊,請參閱 追蹤旗標 1800。 |
查詢分析基礎結構 KB3170113 -Update,以在 SHOWplan XML 和 SQL Server 2014 SP2 中的擴充事件中公開個別運算元查詢執行統計數據 |
如果您的 SQL Server 尚未系結 CPU,且工作負載的負荷為 1.5% 至 2%,建議您啟用 TF 7412 作為啟動追蹤旗標。 此旗標可在 SQL Server 2014 SP2 或更新版本中啟用輕量型分析。 這可讓您在生產環境中進行實時查詢疑難解答。 |
使用 查詢存放區 啟用最佳查詢計劃來識別計劃選擇回歸 | 使用查詢存放區功能來識別回歸或執行不佳的查詢。 如果因為基數估計而發生查詢效能問題,請選取適當的 CE 版本:資料庫範圍選項 LEGACY_CARDINALITY_ESTIMATION 、查詢提示 LEGACY_CARDINALITY_ESTIMATION 、資料庫相容性層級或 追蹤旗標 9481。 |
新基數估算器中的聯結內含專案假設會降低查詢效能 | 評估使用聯結和篩選的查詢,以了解簡單和基底內含專案的效果。 當您使用預設基數估算器時,請針對簡單內含專案使用追蹤旗標 9476,而不是基底內含專案。 |
相容性層級 130 的改善相容性層級 140 的改善 | 使用資料庫相容性層級 130 或更新版本,以受益於下列改善: 使用資料庫相容性層級 140 或更新版本,以受益於下列改善: |
使用查詢存放區的最佳作法 | 將擷取模式設定為 [自動] 啟用追蹤旗標 7745 和 7752,以改善高可用性和災害復原案例期間 查詢存放區 的效能。 在 KB4340759 中套用修正 - 修正:如果您在繁重的工作負載下遇到查詢存放區同步鎖定爭用,SQL Server 201 查詢存放區 6 的效能變慢。 |
SQL Server 2016/2017:可用性群組次要複本重做模型和效能 | 如果您遇到太多等候時間(PARALLEL_REDO_TRAN_TURN 、 DPT_ENTRY_LOCK 或 DIRTY_PAGE_TABLE_LOCK ),請檢閱此部落格以採取更正動作(套用適用的修正,評估適當的重做模型使用)。 |
KB2634571 - 使用 PHYSICAL_ONLY 選項時,DBCC CHECKDB 命令的改善可能會導致效能更快 DBCC TRACEON - 追蹤旗標 更快的 CHECKDB - 第四部分 (SQL CLR UDT) |
如果您在大型資料庫上執行 DBCC CHECK 命令(多個 TB 大小),請考慮使用追蹤旗標 T2562、T2549 和 T2566。 SQL Server 2016 中的 [EXTENDED_LOGICAL_CHECK] 選項下現在有數個檢查。 |
保護 SQL Server 免於對 Spectre 和 Meltdown 端通道弱點的攻擊 | 在環境中各種 SQL Server 工作負載上,仔細評估核心虛擬位址陰影處理 (KVAS)、核心分頁表間接取值 (KPTI) 和間接分支預測風險降低 (IBP) 的效能。 |
表 3. SQL Server 2017 和 SQL Server 2016 中引進的重要變更
SQL Server 2017 和 SQL Server 2016 包含延展性和效能領域的多項改善。 SQL Server 2014 和 SQL Server 2012 中所需的各種組態變更和追蹤旗標會成為 SQL Server 2017 和 2016 的預設行為。 下表提供 SQL Server 2017 和 SQL Server 2016 中實作之所有變更的概觀。
適用範圍 | 變更摘要 | 詳細資訊和參考 |
---|---|---|
SQL 引擎 | SQL Server 2016 和更新版本的 SQL Server 中已淘汰或不再需要的常用追蹤旗標:8048、8079、9024、1236、1118、1117、6498、8075、3449、6532、6533、6534、6534。 | SQL Server 追蹤旗標 |
資料庫引擎 | 資料庫引擎 的新功能 - SQL Server 2017 | |
資料庫引擎 | SQL Server 2016 中對於 Database Engine 的重大變更 | |
資料庫引擎 | SQL Server 2017 中 資料庫引擎 功能的重大變更 | |
查詢處理數據類型轉換 | SQL Server 2016 (13.x) 包括在某些資料類型轉換和某些最不常見作業中的改善。 | 如需詳細資訊,請參閱處理某些資料類型和不常見作業的 SQL Server 2016 改進 (機器翻譯)。 |
可用性群組 | 針對輔助資料庫,初始化自動植入會使用資料庫鏡像端點,將資料庫內容串流至輔助資料庫,並加以套用。 | SQLSweet16!,第 2 集:可用性群組自動植入 |
可用性群組 | 當 SQL Server 2016 將記錄區塊從主要傳輸至次要時,會使用較少的內容切換。 | SQL 2016 - 它只會執行得更快:Always On 記錄傳輸減少內容交換器 SQL Server 2016 - 它只會執行得更快:Always On 可用性群組 Turbocharged |
可用性群組 | SQL Server 2016 使用改良的壓縮演算法和記錄區塊數據的平行壓縮。 | SQL 2016 - 它只會更快執行:永遠開啟平行壓縮/改善的演算法 |
可用性群組 | SQL Server 2016 利用以 AES-NI 加密功能為基礎的硬體,藉此大幅改善 Always On 記錄傳送延展性和效能。 | SQL 2016 - 它只會執行得更快 - 永遠在 AES-NI 加密上 |
效能 | SQL Server 2016 會偵測 AVX 或 SSE 的 CPU 功能,並使用硬體型向量功能來改善壓縮、建置字典及處理數據行存放區數據時的延展性和效能。 | SQL 2016 - 它只會更快執行:資料行存放區使用向量指示 (SSE/AVX) |
效能 | SQL Server 2016 利用 CPU 向量指令來改善大量插入效能。 | SQL 2016 - 它只是執行得更快 - BULK INSERT 使用向量指示 (SSE/AVX) |
效能 | SQL Server 2016 啟用 INSERT ...使用平行處理原則操作的SELECT語句可大幅減少數據載入時間。 | SQLSweet16!, 第 3 集: 平行 INSERT ...選擇 |
效能 | SQL Server 2016 可在數據表的個別分割區上啟用 TRUNCATE 作業,以封存較舊的分割區。 | SQLSweet16!,第 5 集:TRUNCATE 選取的數據分割 |
效能 | SQL Server 2016 會視需要動態調整記憶體內部優化資料庫背景工作集區的大小。 | SQL 2016 - 它只會更快執行:記憶體內部優化資料庫背景工作角色集區 |
Tempdb | 配置是tempdb,而用戶資料庫會使用統一的完整範圍。 tempdb 中的檔案成長會同時發生於所有檔案。 | SQL 2016 - 它只會更快執行:-T1117 和 -T1118 TEMPDB 和使用者資料庫的變更 |
Tempdb | 資料庫引擎 安裝程式會自動計算tempdb資料檔的數目。 | SQL 2016 - 它只會執行得更快:自動 TEMPDB 設定 |
儲存體 | 資料庫引擎會使用0xC0戳記,而不是0x00事務歷史記錄檔初始化。 | SQL 2016 - 它只會更快執行:LDF 戳記 |
儲存體 | 對於大型記憶體伺服器和大量寫入環境,間接檢查點的執行效能會更好。 | SQL 2016 - 它只會執行得更快:間接檢查點預設值 |
儲存體 | 高比率的交易可受益於多個記錄寫入器將記錄快取排清至事務歷史記錄。 | SQL 2016 - 它只會執行得更快:多個記錄寫入器背景工作 |
備份與還原 | 如果您指定 MAXTRANSFERSIZE 大於65536,則可以使用TDE來壓縮備份以加密資料庫。 | SQLSweet16!,第 1 集:已啟用 TDE 的資料庫備份壓縮 |
SQL OS | 動態分割記憶體物件,以減少記憶體物件爭用。 | SQL 2016 - 它只會執行得更快:易失記憶體物件 (CMemThread) 數據分割 |
SQL OS | SQL Server 2016 會監視背景工作角色的量子使用模式,讓所有背景工作角色都能得到公平待遇並改善延展性。 | SQL 2016 - 它只會更快執行:更新的排程演算法 |
SQL OS | SQL Server 2016 會詢問硬體配置,並在每個 NUMA 節點報告 8 或更多 CPU 的系統上自動設定軟體 NUMA。 數據分割會觸發整個資料庫引擎的各種調整,以改善延展性和效能。 | SQL 2016 - 它只會執行得更快:自動軟體 NUMA |
DBCC CHECK | 指定 MAXDOP 來管理 DBCC CHECK 命令所耗用的資源。 | SQLSweet16!,第 6 集:DBCC CHECKDB 與 MAXDOP |
DBCC CHECK | DBCC CHECK 使用改良的頁面掃描演算法,其爭用較少,且具有進階的預先讀取功能。 | SQL 2016 - 它只會更快執行:DBCC 調整 7 倍 |
DBCC CHECK | 當 SQL Server 評估特殊資料類型和索引時,DBCC CHECK 命令需要很長的時間。 這些檢查在 [EXTENDED_LOGICAL_CHECKS] 選項下移動。 | SQL 2016 - 它只會執行得更快:DBCC 擴充檢查 |
字碼頁 | BULK INSERT 或 bcp 公用程式已改善,以將 UTF-8 數據載入 SQL Server 中的數據表。 | SQLSweet16!,第 10 集:“我可以吃玻璃...,但我可以將它載入資料庫嗎? |
空間 | SQL Server 2016 會在 T-SQL 執行期間,針對許多空間方法移除 PInvoke 和 PUnInvoke 活動。 | SQL 2016 - 它只會執行得更快:原生空間實作(s) |
空間 | SQL Server 2016 可透過原生空間驗證來改善使用空間數據的TVP延展性。 | SQL 2016 - 它只會執行得更快:具有空間數據行的 TVP(s) |
空間 | 原生和TVP空間改善可讓SQL Server優化空間數據的索引建立和鑲嵌。 | SQL 2016 - 它只會執行得更快:空間索引建置更快 |
MSDTC | SQL Server 2016 會視需要動態啟動 MSDTC,以允許資源用於其他活動,直到需要為止。 | SQL 2016 - 利用隨選 MSDTC 啟動 |
XEvent | XEvent Linq 提供者邏輯會進行各種變更,以減少內容切換、記憶體配置和其他層面,以更快速地轉譯事件。 | SQL 2016 - 它只會執行得更快:XEvent Linq 讀取器 |
表 4. CU 中包含的重要修正
檢閱 [徵兆] 數據行中的描述,並套用必要更新(最好是包含特定修正的最新更新),在適用環境中的必要更新數據行中。 您可以檢閱知識庫文章,以取得有關個別問題的詳細資訊。 這些建議不需要您啟用其他追蹤旗標作為啟動參數,除非本文或此表格中明確指出。 只要套用包含這些修正的最新 CU 或 Service Pack 就足以獲得好處。
注意 必要更新數據行中的 CU 名稱會提供第一個可解決此問題的 SQL Server CU。 累積更新包含所有 Hotfix,以及隨附於先前 SQL Server 更新版本的所有更新。 如 SQL Server 累加服務模型的更新中所述,建議您在進行中的主動式頻率安裝最新的累積更新,以解決或防止所描述的問題。 另請注意,從 SQL Server 2017 開始, 引進了適用於 SQL Server 的新式服務模型,以便不再提供 Service Pack。
適用的版本 | 區域或元件 | 已解決問題的描述 | 建議的更新 |
---|---|---|---|
SQL Server 2016SQL Server 2017 | 備份與還原 | 啟用 TDE 的資料庫記錄備份失敗,並在使用非預設 MAXTRANSFERSIZE 時,尋找過去用來加密 DEK 的舊憑證複本時,間歇性傳回錯誤 33111 | 修正:在 SQL Server 中備份 TDE 加密的資料庫時發生錯誤 33111 和 3013 SQL Server 2017 的累積更新 2 SQL Server 2016 SP1 的累積更新 6 SQL Server 2016 的累積更新 9 |
SQL Server 2016SQL Server 2017 | 備份與還原 | SQL Server 中 TDE 壓縮備份的 RESTORE HEADERONLY 語句緩慢完成 | 修正:SQL Server 中 TDE 壓縮備份的 RESTORE HEADERONLY 語句速度變慢 SQL Server 2017 的累積更新 8 SQL Server 2016 SP2 的累積更新 1 |
SQL Server 2016 | 備份與還原 | 在啟用 TDE 的資料庫中使用 INIT 和 COMPRESSION 選項時,無法壓縮備份檔 | 修正:在 SQL Server 2016 中啟用 TDE 的資料庫中使用 INIT 和 COMPRESSION 選項時,無法壓縮備份檔 SQL Server 2016 RTM 的累積更新 7 適用於 SQL Server 2016 SP1 的 CU 4 |
SQL Server 2016 | 備份與還原 | 在 SQL Server 中備份大型 TDE 加密資料庫時的判斷提示失敗 | SQL Server 2016 SP1 的累積更新 4 |
SQL Server 2016 | 備份與還原 | 當您在已啟用 TDE 的資料庫上使用壓縮和總和檢查碼進行備份時,還原會失敗 | 修正:當您在 SQL Server 2016 中啟用 TDE 的資料庫上使用壓縮和總和檢查碼進行備份時,還原會失敗 SQL Server 2016 RTM 的累積更新 7 SQL Server 2016 SP1 的累積更新 4 |
SQL Server 2016 | 備份與還原 | 當您嘗試從 SQL Server 中大型 TDE 加密資料庫的多個檔案還原壓縮備份時發生錯誤 9004 | 修正:當您嘗試從多個檔案還原壓縮備份以使用大型 TDE 加密時發生錯誤 9004 SQL Server 2016 RTM 的累積更新 7 |
SQL Server 2016SQL Server 2017 | 備份與還原 | 當您使用 SQL Server 中 4 K 扇區上的壓縮來還原備份時,還原效能變慢 | KB4088193 - 修正:在 SQL Server 中還原具有 4K 扇區大小的磁碟上壓縮備份時,還原效能變慢 SQL Server 2016 SP1 的累積更新 9 SQL Server 2016 SP2 的累積更新 1 SQL Server 2017 的累積更新 7 |
SQL Server 2016SQL Server 2017 | 備份與還原 [VDI] | 使用 VDI 用戶端時,TDE 壓縮備份的還原失敗 | SQL Server 2017 的累積更新 7 SQL Server 2016 SP2 的累積更新 1 SQL Server 2016 SP1 的累積更新 9 |
SQL Server 2016SQL Server 2017 | 備份與還原 [VDI] | 透過 VDI 介面還原備份壓縮且啟用 TDE 的資料庫失敗,並傳回 OS 錯誤 38 | SQL Server 2017 的累積更新 8 [VSTS Bug # 10936552] SQL Server 2016 SP2 RTM [VSTS Bug # 10698847] |
SQL Server 2016SQL Server 2017 | 備份與還原 [VSS] | 透過 VSS 型應用程式備份可用性資料庫可能會在 SQL Server 中失敗 | 修正:透過 VSS 型應用程式備份可用性資料庫可能會在 SQL Server 中失敗 SQL Server 2017 的累積更新 1 SQL Server 2016 RTM 的累積更新 9 SQL Server 2016 SP1 的累積更新 5 SQL Server 2014 SP2 的累積更新 8 |
SQL Server 2016SQL Server 2017 | 備份與還原 | 如果加密金鑰儲存在 SQL Server 的 EKM 提供者中,啟用 TDE 的備份和還原速度會變慢 | 如果加密金鑰儲存在 EKM 中,啟用 TDE 的備份和還原速度變慢 SQL Server 2017 的累積更新 8 SQL Server 2016 Service Pack 2 的累積更新 1 SQL Server 2016 Service Pack 1 的累積更新 9 |
SQL Server 2016SQL Server 2017 | AlwaysOn AG 數據行存放區 | 使用非叢集索引搜尋擷取數據的查詢需要較長的時間 | 修正:使用非叢集索引搜尋的數據擷取查詢在 SQL Server 中花費更長的時間 SQL Server 2017 的累積更新 2 SQL Server 2016 Service Pack 1 的累積更新 6 SQL Server 2016 的累積更新 9 |
SQL Server 2016SQL Server 2017 | Always On AG | 可用性群組的次要複本中平行重做,其中包含堆積數據表會產生運行時間判斷提示傾印或執行 SQL Server 的伺服器當機,並傳回存取違規錯誤 | 修正:包含堆積數據表之可用性群組的次要複本中平行重做會產生運行時判斷提示傾印,或 SQL Server 當機併發生存取違規錯誤 SQL Server 2016 SP1 的累積更新 9 SQL Server 2016 SP2 的累積更新 1 SQL Server 2017 的累積更新 6 |
SQL Server 2016 | Always On AG | 當您在 SQL Server Always On 可用性群組的次要復本中使用平行重做時,就會發生判斷提示 | 修正:當您在 SQL Server Always On 可用性群組的次要復本中使用平行重做時,就會發生判斷提示 SQL Server 2016 的累積更新 3 |
SQL Server 2016SQL Server 2017 | Always On AG | 處理讀取查詢時,AlwaysOn AG 的效能變慢 | 修正:在 SQL Server 中處理讀取查詢時,AlwaysOn AG 速度緩慢 SQL Server 2017 的累積更新 8 SQL Server 2016 SP2 的累積更新 1 SQL Server 2016 SP1 的累積更新 9 |
SQL Server 2017 | Always On AG | 改善,以減少可用性群組在 Linux 上的 SQL Server的故障轉移持續時間 | 改善以降低可用性群組在 Linux 上的 SQL Server 中的故障轉移持續時間 SQL Server 2017 的累積更新 8 |
SQL Server 2017 | Always On AG | SQL Server 中 Pacemaker 叢集上 AlwaysOn 可用性群組的改善 | SQL Server 中 Pacemaker 叢集上 AlwaysOn 可用性群組的改善 SQL Server 2017 的累積更新 8 |
SQL Server 2016 | 記憶體 | 平行重做會導致高記憶體使用量 | 修正:相較於 SQL Server 2014 或舊版,平行重做會在 SQL Server 2016 中造成高記憶體使用量 SQL Server 2016 SP1 的累積更新 3 |
SQL Server 2016SQL Server 2017 | 記憶體 | sp_execute_external_script和 DMV sys.dm_exec_cached_plans會導致記憶體流失 | 修正:系統預存程式sp_execute_external_script和 DMV sys.dm_exec_cached_plans導致 SQL Server 2017 和 2016 中的記憶體流失 SQL Server 2017 的累積更新 4 SQL Server 2016 SP1 的累積更新 8 |
SQL Server 2016SQL Server 2017 | 記憶體 | SQL Server 行程的虛擬位址空間不足時發生記憶體不足錯誤 | 當 SQL Server 行程的虛擬位址空間不足時,記憶體不足錯誤 SQL Server 2017 的累積更新 4 SQL Server 2016 SP1 的累積更新 8 |
SQL Server 2016 | 記憶體 | 當您在 SQL Server 中使用 Azure 儲存體 時,就會發生記憶體流失 | 當您在 SQL Server 2014 或 2016 中使用 Azure 儲存體 時,就會發生記憶體流失 SQL Server 2016 RTM 的累積更新 5 SQL Server 2016 SP1 的累積更新 2 SQL Server 2016 的累積更新 2 |
SQL Server 2016SQL Server 2017 | 記憶體內部 OLTP | 記憶體內部優化檔案群組發生大型磁碟檢查點使用量 | 修正:大量非記憶體內部工作負載期間,記憶體內部優化檔案群組發生大型磁碟檢查點使用量 SQL Server 2017 的累積更新 6 SQL Server 2016 SP1 的累積更新 8 SQL Server 2016 的累積更新 1 |
SQL Server 2016 | 記憶體內部 OLTP | 當您將數據插入記憶體優化數據表時,檢查點檔案會過度成長 | 修正:當您將數據插入 SQL Server 2016 中記憶體優化數據表時,檢查點檔案會過度成長 SQL Server 2016 SP1 的累積更新 2 SQL Server 2016 的累積更新 4 |
SQL Server 2016SQL Server 2017 | 記憶體內部 OLTP | 當資料庫包含記憶體優化數據表時,資料庫復原需要很長的時間 | 在 SQL Server 2017 和 2016 中復原具有記憶體優化數據表的資料庫需要很長的時間 SQL Server 2017 的累積更新 4 SQL Server 2016 SP1 的累積更新 7 |
SQL Server 2016SQL Server 2017 | tempdb | PFS 頁面迴圈配置資源演算法改進 | SQL Server 2016 中的 PFS 頁面迴圈配置資源演算法改進 SQL Server 2017 的累積更新 7 SQL Server 2016 SP2 的累積更新 1 SQL Server 2016 SP1 的累積更新 9 |
SQL Server 2016SQL Server 2017 | tempdb | 效能問題會以 TempDB 中PAGELATCH_EX和PAGELATCH_SH等候的形式發生(sys.sysobjvalues 和 sys.sysseobjvalues) | 效能問題會以PAGELATCH_EX和PAGELATCH_SH等候的形式發生 SQL Server 2016 Service Pack 2 的累積更新 1 SQL Server 2016 Service Pack 1 的累積更新 9 |
SQL Server 2016SQL Server 2017 | tempdb | 具有具名條件約束的繁重tempdb爭用Temp資料表需要暫存數據表的同步卸除 | SQL Server 2016 或 2017 中發生大量 tempdb 爭用 SQL Server 2017 的累積更新 5 SQL Server 2016 SP1 的累積更新 8 |
SQL Server 2017 | tempdb | 當您移除暫存物件時PAGELATCH_EX爭用 (sys.sysobjvalues) | 修正:在 SQL Server 中移除暫存物件時PAGELATCH_EX爭用 SQL Server 2017 的累積更新 5 |
SQL Server 2016 | tempdb | sys.sysobjvalues 中增加PAGELATCH_EX爭用 | 修正:SQL Server 2016 中 sys.sysobjvalues 中的爭用增加PAGELATCH_EX爭用 SQL Server 2016 RTM 的累積更新 6 SQL Server 2016 Service Pack 1 的累積更新 2 |
SQL Server 2016SQL Server 2017 | tempdb | tempdb 資料庫的間接檢查點會導致「非產生排程器」錯誤 | 修正:tempdb 資料庫的間接檢查點會導致 SQL Server 2017 和 2016 中的「非產生排程器」錯誤 SQL Server 2017 的累積更新 1 SQL Server 2016 Service Pack 1 的累積更新 5 SQL Server 2016 的累積更新 8 |
SQL Server 2016SQL Server 2017 | tempdb | 使用許多頻繁、簡短交易的工作負載可能會耗用更多 CPU | 在 SQL Server 2017 和 2016 中使用許多頻繁、簡短交易的工作負載可能會耗用比 SQL Server 2014 更多的 CPU SQL Server 2017 的累積更新 4 SQL Server 2016 SP1 的累積更新 2 |
SQL Server 2016SQL Server 2017 | 事務歷史記錄 | 錯誤 9002:沒有足夠磁碟空間可進行重大記錄成長 | KB4087406 - 修正:當 SQL Server 2014、2016 和 2017 中沒有足夠磁碟空間時,錯誤 9002 SQL Server 2017 的累積更新 5 SQL Server 2016 SP2 的累積更新 1 SQL Server 2016 SP1 的累積更新 8 SQL Server 2014 SP2 的累積更新 11 |
SQL Server 2016 | 安全性快取 | 高 CPU 使用量會導致 SQL Server 2016 的高同步鎖定競爭SECURITY_CACHE和CMED_HASH_SET SQLSweet16!第 8 集:SQL Server 2016 累積更新 2 (CU2) 如何改善高度並行工作負載的效能 | KB3195888 - 修正:高 CPU 使用量會導致 SQL Server 2016 和 2017 中的效能問題 SQL Server 2016 的累積更新 2 |
SQL Server 2017 | 查詢存放區 | 查詢存放區 收集運行時間統計數據時,就會發生存取違規 | 查詢存放區 在 SQL Server 2017 中收集運行時間統計數據時的存取違規 SQL Server 2017 的累積更新 5 |
SQL Server 2016 | 查詢存放區 | 查詢存放區 Enterprise 和 Developer Edition 以外的版本上的自動數據清除失敗 | 查詢存放區 SQL Server 2016 Enterprise 和 Developer Edition 以外的版本上的自動數據清除失敗 SQL Server 2016 的累積更新 1 |
SQL Server 2016 | 查詢存放區 | 啟用 查詢存放區 時 SQL Server 效能變慢 | KB4340759 - 修正:啟用 查詢存放區 時 SQL Server 2016 效能變慢 SQL Server 2016 SP2 的累積更新 2 |
表 5:Linux 環境中 SQL Server 的建議改進、修正和設定指導方針
下表是 SQL Server 2017 發行之後,在累積更新中發行的所有重要改進、建議和程式代碼變更的編譯。 檢閱 [徵兆] 數據行中的描述,並在適用的環境中,套用必要更新(最好是包含特定修正的最新更新)。 您可以檢閱列出的知識庫文章,以取得有關個別問題的詳細資訊。
這些建議不需要您啟用其他追蹤旗標作為啟動參數,除非本文或此表格中明確指出。 只要套用包含這些修正的最新累積更新或 Service Pack 就足以獲得好處。 如果您在 Linux 上的 SQL Server 中使用 Always On 可用性群組,請將 SQL Server 2017 升級至累積更新 8 或更新版本,因為此更新中已提供數項改善。 注意 必要更新數據行中的 CU 名稱會提供第一個可解決此問題的 SQL Server 累積更新。 累積更新包含所有 Hotfix 和先前 SQL Server 更新版本隨附的所有更新。 如 SQL Server 累加服務模型的更新中所述,我們現在建議您在進行中的主動式頻率中安裝最新的累積更新,以解決或防止所描述的問題。 另請注意,從 SQL Server 2017 開始,引進了適用於 SQL Server 的新式服務模型,以便不再提供 Service Pack。
變更或改進的摘要 | 詳細資訊和參考 |
---|---|
SQL 和 OS:在部署 Linux 上的 SQL Server 時,檢閱 OS 和 SQL Server 的各種最佳做法建議 | Linux 上 SQL Server 的效能最佳做法和設定方針 |
SQL Agent 改進:SQL Server Agent 作業可以啟動,而不需要等待所有資料庫復原 | SQL Server Agent 作業可以啟動,而不需要等待所有資料庫在Linux上的 SQL Server 2017 中復原 SQL Server 2017 的累積更新 9 |
記憶體改善:在 SQL Server 2017 中啟用「強制排清」機制 | 在 Linux 上的 SQL Server 2017 中啟用強制排清機制 SQL Server 2017 的累積更新 6 |
記憶體改善:將 master 資料庫和錯誤記錄檔移至另一個位置 | KB4053439 - 改進:將 master 資料庫和錯誤記錄檔移至 Linux 上 SQL Server 2017 的另一個位置 SQL Server 2017 的累積更新 4 |
AG 改善:SQL Server 中 Pacemaker 叢集上 AlwaysOn 可用性群組的改善 | KB4339875 - SQL Server 中 Pacemaker 叢集上 AlwaysOn 可用性群組的改善 SQL Server 2017 的累積更新 8 |
記憶體改善:最小記憶體限制設定為 2 GB 以安裝或啟動 SQL Server | KB4052969 - FIX:安裝或啟動 SQL Server 2017 的最低記憶體限制設定為 2 GB SQL Server 2017 的累積更新 2 |
記憶體修正:啟用 TF 834 之後記憶體增加階段太長 | KB4075203 - FIX:Linux 上的 SQL Server 2017 中啟用 TF 834 之後記憶體增加階段太長 SQL Server 2017 的累積更新 4 |
排程 修正:SQL Server 2017 中 Windows 和 Linux 排程器對應之間的可移植性和效能不同 | KB4043455 - FIX:SQL Server 2017 中 Windows 和 Linux 排程器對應之間的可移植性和效能不同 SQL Server 2017 的累積更新 1 |
AD 驗證 修正:無法根據屬於父域的使用者建立登入 | KB4073670 - FIX:無法在 Linux 上的 SQL Server 2017 中,根據屬於父域的使用者建立登入 SQL Server 2017 的累積更新 4 |
AD 驗證 更新:藉由限制哪些 KDC 可以連線到地理位置大型網路來改善 SQL Server 效能 | KB4463314 - 更新可藉由限制哪些 KDC 可以與地理位置大型網路連絡,藉以改善 SQL Server 效能 SQL Server 2017 的累積更新 11 |
AD 驗證 修正:當您使用第三方 Active Directory 提供者時,SQL Server 會當機 | KB4466962 - 修正:當您使用第三方 Active Directory 提供者時,SQL Server 2017 當機 SQL Server 2017 的累積更新 12 |
TSQL 修正:NEWSEQUENTIALID 函式會在重新啟動 SQL Server 之後產生重複的 GUID | KB4078097 - 修正:在 Linux 上的 SQL Server 2017 重新啟動之後,NEWSEQUENTIALID 函式會產生重複的 GUID SQL Server 2017 的累積更新 4 |
線上修正:使用 TCP 通訊協定連線時未預期的記憶體耗用量 | KB4073045 - 修正:Linux 上的 SQL Server 2017 使用 TCP 通訊協定連線時,非預期的記憶體耗用量 SQL Server 2017 的累積更新 4 |
線上修正:啟動時停用 IPv6 時發生名稱解析錯誤 | KB4053392 - 修正:在 Linux 上的 SQL Server 2017 啟動時停用 IPv6 時發生名稱解析錯誤 SQL Server 2017 的累積更新 2 |
連線修正:SQL Server 不會接聽 mssql-conf 腳本所指定的非預設 IP 位址 | KB4053393 - 修正:Linux 上的 SQL Server 2017 不會接聽 mssql-conf 腳本所指定的非預設 IP 位址 SQL Server 2017 的累積更新 2 |
安裝程式 修正:套用 CU 時腳本升級失敗 | 升級 SQL Server 2017 CU4 或更新版本且未在 Linux 上啟用 SQL Agent 時發生錯誤 SQL Server 2017 的累積更新 6 |
Database Mail FIX:使用非預設 TCP 連接埠時,Database Mail 無法連線到 SQL Server | KB4100873 - FIX:使用非預設 TCP 連接埠時,Database Mail 無法連線到 Linux 上的 SQL Server 2017 SQL Server 2017 的累積更新 6 |
容器 修正:無法使用 「docker stop」 命令來停止 SQL Server Linux Docker 容器 | KB4093805 - FIX:無法使用 “docker stop” 命令停止 SQL Server Linux Docker 容器 SQL Server 2017 的累積更新 5 |
容器 修正:在Linux Docker容器中執行 SQL Server 時發生記憶體不足錯誤 | KB4347055 - 修正:在 Linux Docker 容器中執行 SQL Server 2017 時發生記憶體不足錯誤 SQL Server 2017 的累積更新 10 |
AG:如果您使用 Pacemaker 套件 1.1.18-11.el7 或更高版本,請調整 start-failure-is-fatal 屬性 | KB4229789 - SQL Server 2017 的累積更新 7 請參閱 Pacemaker 注意事項一節 |
AG FIX:Pacemaker 可能會在作業逾時時終止資源代理程序進程 | KB4460203 - FIX:Pacemaker 可能會在 SQL Server 2017 Always On 可用性群組中的作業逾時終止資源代理程序進程 SQL Server 2017 的累積更新 11 |
AG FIX:兩個 SQL Server 實例是可用性群組的主要複本 | KB4316791 - FIX:兩個 SQL Server 實例是 SQL Server 中可用性群組的主要複本 SQL Server 2017 的累積更新 8 |
AG FIX:當您使用 AlwaysOn 可用性群組時,不必要的故障轉移 | KB4056922 - 修正:在 Linux 上的 SQL Server 2017 中使用 Always On 可用性群組時,不必要的故障轉移 SQL Server 2017 的累積更新 3 |
AG FIX:Pacemaker 會降級 AlwaysOn AG 的現有主要復本,絕不會升級新的複本 | KB4076982 - FIX:Pacemaker 會在 Linux 上的 SQL Server 2017 中降級 Always On AG 的現有主要複本,絕不會升級新的複本 SQL Server 2017 的累積更新 4 |
AG FIX:Pacemaker 會在您使用 AlwaysOn AG 時,將未同步復本升級為主要複本 | KB4091722 - FIX:在 Linux 上的 SQL Server 2017 中使用 Always On AG 時,Pacemaker 會將未同步複本升級為主要複本 SQL Server 2017 的累積更新 5 |
AG FIX:使用 AlwaysOn AG 時,將本機複本升級至主要複本的 Pacemaker 失敗 | KB4230542 - 修正:在 SQL Server 2017 中使用 Always On AG 時,將本機複本升級為主要復本的 Pacemaker 失敗 SQL Server 2017 的累積更新 7 |
AG FIX:啟動屬於可用性群組的資料庫逾時 | KB4316790 - FIX:啟動屬於可用性群組的資料庫逾時 Linux 上的 SQL Server SQL Server 2017 的累積更新 8 |
AG FIX:當 SQL Server 故障轉移叢集實例或 Always On AG 由 Pacemaker 管理時,會發生不必要的故障轉移 | KB4316793 - 修正:當 SQL Server 2017 故障轉移叢集實例或 Always On AG 由 Pacemaker 管理時,會發生不必要的故障轉移 SQL Server 2017 的累積更新 8 |