SQL Server 2017 和 2016 搭配高效能工作負載的建議更新和組態選項
本文說明適用於 SQL Server 2016 和更新版本的效能改進和組態選項清單。
原始產品版本:SQL Server 2016 SQL Server Windows 上的 2017 年
原始 KB 編號: 4465518
簡介
本文說明 Microsoft SQL Server 2017 和 SQL Server 2016 透過各種產品更新和組態選項提供的效能改進和變更。
建議您考慮套用這些更新,以改善 SQL Server 實例的效能。 改善程度取決於各種因素,包括工作負載模式、爭用點、處理器配置 (NUMA 節點) 中的處理器群組、套接字、NUMA 節點和核心數目,以及系統中可用的記憶體數量。
SQL Server 支援小組已使用這些更新和組態變更,為使用包含數個 NUMA 節點和許多處理器的硬體系統的客戶工作負載達到合理的效能提升。 支援小組日後會繼續使用其他更新來更新本文。
定義:高階系統
「高階系統」通常會有多個套接字、每個套接字有八個或多個核心,以及半 TB 或更多記憶體。
套用建議的更新並改善 SQL Server 效能
這些改善 SQL Server 2017 和 SQL Server 2016 效能的建議會分成五個數據表,如下所示:
- 表 1 包含高階系統上可擴縮性最常建議的更新和追蹤旗標。
- 表 2 包含其他效能微調的建議和指引。
- 表 3 包含 SQL 2017 和 2016 中行為和預設設定變更的相關信息。
- 表 4 包含其他延展性修正程式,這些修正程式與 CU) (累積更新一起包含在一起。
- 表 5 包含在 Linux 環境中部署 SQL Server 實例的建議修正和設定指導方針。
注意事項
如需其他內容,請參閱經常使用的 knob 來微調忙碌 SQL Server。
重要事項
如果您啟用追蹤旗標,請務必在執行移轉至 SQL Server 2017 或 2016 SQL Server 之後檢閱該文章中的資訊。 該文章中所列的許多追蹤旗標和組態選項,在 2017 SQL Server 和 2016 SQL Server 成為預設選項。
表 1. 適用於高階系統的重要更新和追蹤旗標
請檢閱下表,並啟用 [追蹤旗標] 數據行中的追蹤旗標,確定您的實例 SQL Server 符合 [適用的版本和組建範圍] 資料行中的需求。
注意事項
- 適用的版本和組建 表示引進變更或追蹤旗標的特定更新。 如果未指定 CU,則會包含 SP 中的所有 CU。
- 不適用的版本和組建 表示變更或追蹤旗標成為預設行為的特定更新。 因此,只要套用該更新就足以獲得好處。
重要事項
當您在 Always On 環境中啟用具有追蹤旗標的修正時,請注意,您必須在可用性群組的所有複本上啟用修正和追蹤旗標。
要考慮的案例和徵兆 | 追蹤旗標 | 適用的版本和組建範圍 | 不適用的版本和組建範圍 | 如需詳細資訊,請參閱知識庫文章或部落格連結 |
---|---|---|---|---|
大量SOS_CACHESTORE線程同步鎖定競爭,或您的計劃經常在臨機操作查詢工作負載上收回。 | T174 | SQL Server 2016 RTM 至目前的 SP/CU SQL Server 2017 RTM 至目前的 SP/CU | 無 | KB3026083 - 修正:臨機操作 SQL Server 計劃快取上的SOS_CACHESTORE線程同步鎖定競爭會導致 SQL Server |
計劃快取中的項目會因為其他快取或記憶體 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 資料庫上的間接檢查點在 2016 和 2017 SQL Server 造成「未產生排程器」錯誤 |
tempdb 中經常發生簡短交易。 您注意到未啟用這些交易的CPU使用量增加一般準則合規性 | T3427 | SQL Server 2016 SP1 CU2 至 SQL Server 2016 SP2 CU2 | SQL Server 2017 RTM | KB3216543 - 修正:在 SQL Server 2016 和 2017 中使用許多頻繁、簡短交易的工作負載可能會耗用比 2014 SQL Server 更多的 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 實例效能的一般考慮和最佳做法
檢閱 知識庫文章或在線叢書資源 欄中的內容,並考慮實作 建議動作 欄中的指引。
知識庫文章或在線叢書資源 | 建議的動作 |
---|---|
設定平行處理原則的最大程度伺服器組態選項 | 使用預sp_configure 存程式來進行組態變更,以根據知識庫文章,為您的 SQL Server 實例設定平行處理原則的最大程度伺服器組態選項。 |
依版本計算容量限制SQL Server 2012 的授權核心限制 | 具有伺服器和用戶端存取許可證 (CAL) 授權的 Enterprise Edition,每個 SQL Server 實例只能有 20 個核心。 核心型伺服器授權模型下沒有任何限制。 請考慮將您的 SQL Server 版升級至適當的 SKU,以使用所有硬體資源。 |
使用平衡電源計劃時,Windows Server 上的效能變慢 | 檢閱文章,並與您的 Windows 系統管理員合作,以實作文章的解決方式一節中所列的其中一個解決方案。 |
針對臨機操作工作負載優化伺服器組態選項FORCED 參數化 | 計劃快取中的項目會因為其他快取或記憶體 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 GROUPKB3107401 - 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 中「自動成長」和「自動調整」設定的考慮 | 檢查資料庫目前的設定,並確定已根據知識庫文章中的建議進行設定。 |
間接檢查點 | 請考慮在使用者資料庫上啟用間接檢查點,以在 2014 和 2012 SQL Server 優化 I/O 行為。 |
SQL Server:大型 RAM 和資料庫檢查點 | 請考慮在使用者資料庫上啟用間接檢查點,以在 2014 和 2012 SQL Server 優化 I/O 行為。 在參考的間接 檢查點和 tempdb 中檢閱 tempdb 所需的調整 - 良好、錯誤和未產生排程器。 |
KB3009974 - 修正:當磁碟在 AG 和 Logshipping 環境中的主要和次要復本記錄檔具有不同扇區大小時 SQL Server,同步處理速度會變慢 | 如果您有一個可用性群組,其中主要復本上的事務歷史記錄位於具有512位元組扇區大小的磁碟上,而次要復本事務歷史記錄位於具有4 K扇區大小的磁碟驅動器上,則同步處理可能會變慢。 在此情況下,啟用 TF 1800 應該會更正問題。 如需詳細資訊,請參閱 追蹤旗標 1800。 |
查詢分析基礎結構 KB3170113 -更新以在 SQL Server 2014 SP2 中公開 showplan XML 和擴充事件中的個別運算子查詢執行統計數據 |
如果您的 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 2016 年啟用 查詢存放區 時效能變慢。 |
SQL Server 2016/2017:可用性群組次要複本重做模型和效能 | 如果您在 、 DPT_ENTRY_LOCK 或 DIRTY_PAGE_TABLE_LOCK ) (PARALLEL_REDO_TRAN_TURN 發生太多等候,請檢閱此部落格以採取更正動作 (套用適用的修正程式,評估重做模型的適當使用) 。 |
KB2634571 - 當您使用 PHYSICAL_ONLY 選項時,DBCC CHECKDB 命令的改善可能會導致更快的效能 DBCC TRACEON - 追蹤旗標 更快速的 CHECKDB - 第 IV 部分 (SQL CLR UDT) |
如果您在大型資料庫上執行 DBCC CHECK 命令 (多個 TB 大小) ,請考慮使用追蹤旗標 T2562、 T2549 和 T2566。 數個檢查現在位於 2016 SQL Server 的 [EXTENDED_LOGICAL_CHECK] 選項底下。 |
保護 SQL Server 不受 Spectre 和Meldown 側邊通道弱點的攻擊 | 仔細評估核心虛擬位址陰影 (KVAS) 、核心頁面數據表間接 (KPTI) ,以及間接分支預測風險降低 (IBP) 環境中各種 SQL Server 工作負載的效能。 |
表格 3 SQL Server 2017 和 SQL Server 2016 中引進的重要變更
SQL Server 2017 和 SQL Server 2016 包含延展性和效能領域的數個改善。 SQL Server 2014 和 SQL Server 2012 中所需的各種組態變更和追蹤旗標,在 2017 和 2016 SQL Server 成為預設行為。 下表提供在 2017 SQL Server 和 2016 SQL Server 實作之所有變更的概觀。
適用範圍 | 變更摘要 | 詳細資訊和參考 |
---|---|---|
SQL 引擎 | 在 SQL Server 2016 和更新版本的 SQL Server 中已淘汰或不再需要的常用追蹤旗標:8048、8079、9024、1236、1118、1117、6498、8075、3449、6532、6533、6534。 | SQL Server 追蹤旗標 |
資料庫引擎 | Database Engine 的新功能 - SQL Server 2017 | |
資料庫引擎 | 2016 SQL Server 資料庫引擎功能的重大變更 | |
資料庫引擎 | 2017 SQL Server 資料庫引擎功能的重大變更 | |
查詢處理數據類型轉換 | SQL Server 2016 (13.x) 包含某些數據類型轉換的改善,以及某些 (最不常見的) 作業。 | 如需詳細資訊,請參閱 2016 SQL Server 處理某些數據類型和不常見作業的改善。 |
可用性群組 | 針對輔助資料庫,初始化自動植入會使用資料庫鏡像端點,將資料庫內容串流至輔助資料庫並加以套用。 | SQLSweet16!,第 2 集:可用性群組自動植入 |
可用性群組 | SQL Server 2016 會在將記錄區塊從主要區塊傳輸到次要時,使用較少的內容交換器。 | SQL 2016 - 其執行速度更快:Always On 記錄傳輸減少內容交換器SQL Server 2016 - 它執行速度更快:Always On 可用性群組 Turbocharged |
可用性群組 | SQL Server 2016 使用改良的壓縮演算法和記錄區塊數據的平行壓縮。 | SQL 2016 - 其執行速度更快:Always On 平行壓縮/改良的演算法 |
可用性群組 | SQL Server 2016 會利用以 AES-NI 加密功能為基礎的硬體,以大幅提升記錄傳送延展性和效能 Always On。 | SQL 2016 - 其執行速度更快 - Always On 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 集: 平行插入 ...選擇 |
效能 | SQL Server 2016 可在數據表的個別分割區上啟用 TRUNCATE 作業,以封存較舊的數據分割。 | SQLSweet16!,第 5 集:截斷選取的數據分割 |
效能 | SQL Server 2016 會視需要動態調整 In-Memory 優化資料庫背景工作角色集區的大小。 | SQL 2016 - 其執行速度更快:In-Memory 優化的資料庫背景工作角色集區 |
Tempdb | 配置為 tempdb,而用戶資料庫會使用統一的完整範圍。 tempdb 中的檔案會同時針對所有檔案進行成長。 | SQL 2016 - 它只會執行得更快:-T1117 和 -T1118 TEMPDB 和使用者資料庫的變更 |
Tempdb | Database Engine 安裝程式會自動計算 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 with 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 - 其執行速度較快:原生空間實作 (的) |
空間 | SQL Server 2016 使用原生空間驗證來改善使用空間數據的 TVP 延展性。 | SQL 2016 - 其執行速度較快:具有空間數據行 () |
空間 | 原生和TVP空間改善可讓 SQL Server將建立索引和鑲嵌空間數據優化。 | SQL 2016 - 其執行速度更快:空間索引建置速度更快 |
MSDTC | SQL Server 2016 會視需要動態啟動 MSDTC,允許資源用於其他活動,直到必要為止。 | SQL 2016 - 利用隨選 MSDTC 啟動 |
XEvent | XEvent Linq 提供者邏輯會進行各種變更,以減少內容切換、記憶體配置和其他層面,以加快事件轉譯的速度。 | SQL 2016 - 其執行速度更快:XEvent Linq Reader |
表格 4 CU 中包含的重要修正
檢閱 [ 徵兆 ] 數據行中的描述,並將必要的更新套用 (最好是包含適用環境中 [ 必要更新 ] 數據行中特定修正) 的最新更新。 如需有關個別問題的詳細資訊,您可以檢閱知識庫文章。 這些建議不需要您啟用其他追蹤旗標作為啟動參數,除非在文章或此數據表中明確指出。 只要套用包含這些修正的最新 CU 或 Service Pack 就足以獲得好處。
注意[必要更新] 數據行中的 CU 名稱會提供 SQL Server 的第一個 CU 來解決此問題。 累積更新包含所有 Hotfix,以及與先前 SQL Server 更新版本一起包含的所有更新。 如 SQL Server 累加式服務模型的更新中所述,建議您以持續的主動式頻率安裝最新的累積更新,以解決或防止所述的問題。 另請注意,從 2017 SQL Server 開始,SQL Server 的新式服務模型已推出,因此不再提供 Service Pack。
適用的版本 | 區域或元件 | 已解決問題的描述 | 建議的更新 |
---|---|---|---|
SQL Server 2016SQL Server 2017 | 備份 & 還原 | 啟用 TDE 之資料庫的記錄備份失敗,並在尋找過去用來加密 DEK 的舊版憑證複本時,如果使用非預設的 MAXTRANSFERSIZE,則會間歇地傳回錯誤 33111 | 修正:在 SQL Server 中備份 TDE 加密資料庫時發生錯誤 33111 和 3013 SQL Server 2017 的累積更新 2 SQL Server 2016 SP1 的累積更新 6 2016 SQL Server 累計更新 9 |
SQL Server 2016SQL Server 2017 | 備份 & 還原 | TDE 壓縮備份的 RESTORE HEADERONLY 語句在 SQL Server | 修正:TDE 壓縮備份的 RESTORE HEADERONLY 語句在 SQL Server SQL Server 2017 的累積更新 8 SQL Server 2016 SP2 的累積更新 1 |
SQL Server 2016 | 備份 & 還原 | 在已啟用 TDE 的資料庫中使用 INIT 和 COMPRESSION 選項時,無法壓縮備份檔 | 修正:在 2016 SQL Server 啟用 TDE 的資料庫中使用 INIT 和 COMPRESSION 選項時,無法壓縮備份檔 SQL Server 2016 RTM 的累積更新 7 CU 4 for SQL Server 2016 SP1 |
SQL Server 2016 | 備份 & 還原 | 在 SQL Server 中備份大型 TDE 加密資料庫時發生判斷提示失敗 | SQL Server 2016 SP1 的累積更新 4 |
SQL Server 2016 | 備份 & 還原 | 當您在已啟用 TDE 的資料庫上使用壓縮和總和檢查碼進行備份時,還原會失敗 | 修正:當您在 2016 SQL Server 啟用 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 - 修正:在具有 4K 扇區大小的磁碟上還原壓縮備份時,還原效能變慢 SQL Server 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 | Always On 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 | 當您處理讀取查詢時,Always On AG 的效能會變慢 | 修正:在 Always On 中處理讀取查詢時,AG 會變慢 SQL Server 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 叢集上 Always On 可用性群組的改善 | 在 SQL Server 中的 Pacemaker 叢集上 Always On 可用性群組的改善 SQL Server 2017 的累積更新 8 |
SQL Server 2016 | 記憶體 | 平行重做會導致高記憶體使用量 | 修正:相較於 SQL Server 2014 或更早版本,平行重做會在 2016 SQL Server 造成高記憶體使用量 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在 2017 和 2016 SQL Server 造成記憶體流失 SQL Server 2017 的累積更新 4 SQL Server 2016 SP1 的累積更新 8 |
SQL Server 2016SQL Server 2017 | 記憶體 | 當 SQL Server 進程的虛擬位址空間不足時發生記憶體不足錯誤 | 當 SQL Server 進程的虛擬位址空間不足時,發生記憶體不足錯誤 SQL Server SQL Server 2017 的累積更新 4 SQL Server 2016 SP1 的累積更新 8 |
SQL Server 2016 | 記憶體 | 當您在 SQL Server 中使用 Azure 記憶體時,會發生記憶體流失 | 當您在 2014 或 2016 SQL Server 使用 Azure 記憶體時,就會發生記憶體流失 SQL Server 2016 RTM 的累積更新 5 SQL Server 2016 SP1 的累積更新 2 SQL Server 2016 的累積更新 2 |
SQL Server 2016SQL Server 2017 | 記憶體內部 OLTP | 記憶體內部優化檔案群組會發生大型磁碟檢查點使用量 | 修正:在大量非記憶體內部工作負載期間,In-Memory 優化檔案群組會發生大型磁碟檢查點使用量 SQL Server 2017 的累積更新 6 SQL Server 2016 SP1 的累積更新 8 SQL Server 2016 的累積更新 1 |
SQL Server 2016 | 記憶體內部 OLTP | 當您將數據插入記憶體優化數據表時,檢查點檔案會過度增加 | 修正:當您在 2016 年 SQL Server 將數據插入記憶體優化數據表時,檢查點檔案會過度成長 SQL Server 2016 SP1 的累積更新 2 SQL Server 2016 的累積更新 4 |
SQL Server 2016SQL Server 2017 | 記憶體內部 OLTP | 當資料庫包含記憶體優化數據表時,資料庫復原需要很長的時間 | 在 2017 和 2016 SQL Server 復原具有記憶體優化數據表的資料庫需要很長的時間 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 | 效能問題會以PAGELATCH_EX的形式發生,而 PAGELATCH_SH在TempDB (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爭用臨時表變更需要同步卸除暫存數據表 | 2016 或 2017 SQL Server 發生大量 tempdb 競爭 SQL Server 2017 的累積更新 5 SQL Server 2016 SP1 的累積更新 8 |
SQL Server 2017 | tempdb | 當您移除 sys.sysobjvalues (暫存物件時,PAGELATCH_EX爭用) | 修正:移除 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 資料庫上的間接檢查點在 2017 和 2016 SQL Server 造成「未產生排程器」錯誤 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 中使用許多頻繁、簡短交易的工作負載可能會耗用比 2014 SQL Server 更多的 CPU SQL Server 2017 的累積更新 4 SQL Server 2016 SP1 的累積更新 2 |
SQL Server 2016SQL Server 2017 | 事務歷史記錄 | 當磁碟空間不足,無法進行重大記錄成長時發生錯誤 9002 | KB4087406 - 修正:當 2014、2016 和 2017 SQL Server 沒有足夠的磁碟空間來進行重大記錄成長時,發生錯誤 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 使用量會導致 2016 和 2017 SQL Server 效能問題 SQL Server 2016 的累積更新 2 |
SQL Server 2017 | 查詢存放區 | 當 查詢存放區 收集運行時間統計數據時,會發生存取違規 | 查詢存放區 在 2017 年 SQL Server 收集運行時間統計數據時的存取違規 SQL Server 2017 的累積更新 5 |
SQL Server 2016 | 查詢存放區 | 查詢存放區 Enterprise 和 Developer Edition 以外的版本上自動清除數據失敗 | 查詢存放區 2016 SQL Server 版以外的 Enterprise 和 Developer 版本上自動清除數據失敗 SQL Server 2016 的累積更新 1 |
SQL Server 2016 | 查詢存放區 | 啟用 查詢存放區 時,SQL Server 效能變慢 | KB4340759 - 修正:啟用 查詢存放區 時,SQL Server 2016 的效能變慢 SQL Server 2016 SP2 的累積更新 2 |
表 5:Linux 環境中 SQL Server 的建議改進、修正和設定指導方針
下表是 2017 年 SQL Server 發行後累積更新中發行之所有重要改進、建議和程式代碼變更的編譯。 檢閱 [ 徵兆 ] 數據行中的描述,並套用必要的更新 (最好是包含適用環境中 [ 必要更新 ] 數據行中特定修正) 的最新更新。 如需有關個別問題的詳細資訊,您可以檢閱列出的知識庫文章。
這些建議不需要您啟用其他追蹤旗標作為啟動參數,除非在文章或此數據表中明確指出。 只要套用包含這些修正的最新累積更新或 Service Pack 就足以獲得好處。 如果您在 Linux 上的 SQL Server 中使用 Always On 可用性群組,請將 SQL Server 2017 升級至累積更新 8 或更新版本,因為此更新已提供數個改善。 注意[必要更新] 數據行中的 CU 名稱會提供解決此問題之 SQL Server 的第一個累積更新。 累積更新包含前一個 SQL Server 更新版本隨附的所有 Hotfix 和所有更新。 如 SQL Server 累加式服務模型的更新中所述,我們現在建議您以持續的主動式頻率安裝最新的累積更新,以解決或防止所述的問題。 另請注意,從 2017 SQL Server 開始,導入了適用於 SQL Server 的新式服務模型,因此不再提供 Service Pack。
變更或改進的摘要 | 詳細資訊和參考 |
---|---|
SQL 和 OS:在部署 Linux 上的 SQL Server 時,檢閱操作系統和 SQL Server 的各種最佳做法建議 | Linux 上的 SQL Server的效能最佳做法和設定指導方針 |
SQL 代理程式改進:SQL Server Agent 作業可以在不等候所有資料庫復原的情況下啟動 | SQL Server Agent 作業可以在 2017 年 SQL Server Linux 上啟動,而不需要等待所有資料庫復原 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 |
銀改進:在 SQL Server 的 Pacemaker 叢集上 Always On 可用性群組的改善 | KB4339875 - 在 SQL Server 的 Pacemaker 叢集上改善 Always On 可用性群組 SQL Server 2017 的累積更新 8 |
記憶改進:最小記憶體限制設定為 2 GB 以安裝或啟動 SQL Server | KB4052969 - 修正:最小記憶體限制設定為 2 GB 以安裝或啟動 SQL Server 2017 年 SQL Server 2017 的累積更新 2 |
記憶 修正:啟用 TF 834 之後,記憶體增加階段太長 | KB4075203 - 修正:在Linux上的2017 SQL Server 啟用TF 834之後,記憶體增加階段太長 SQL Server 2017 的累積更新 4 |
調度修正:2017 年 SQL Server Windows 與 Linux 排程器對應之間的可移植性和效能差異 | KB4043455 - 修正:2017 年 SQL Server Windows 與 Linux 排程器對應之間的可移植性和效能差異 SQL Server 2017 的累積更新 1 |
AD 驗證 修正:無法根據屬於父域的使用者建立登入 | KB4073670 - 修正:無法根據屬於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修正:重新啟動 SQL Server 之後,NEWSEQUENTIALID 函式會產生重複的 GUID | KB4078097 - 修正:重新啟動Linux上的 SQL Server 2017 之後,NEWSEQUENTIALID 函式會產生重複的 GUID SQL Server 2017 的累積更新 4 |
Connections 修正:使用 TCP 通訊協定連線時的非預期記憶體耗用量 | KB4073045 - 修正:在 Linux 上使用 TCP 通訊協定連線 SQL Server 2017 時的非預期記憶體耗用量 SQL Server 2017 的累積更新 4 |
Connections 修正:啟動時停用 IPv6 時發生名稱解析錯誤 | KB4053392 - 修正:在 Linux 上的 SQL Server 2017 啟動時停用 IPv6 時發生名稱解析錯誤 SQL Server 2017 的累積更新 2 |
Connections 修正: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 修正:使用非預設 TCP 連接埠時,Database Mail 無法連線到 SQL Server | KB4100873 - 修正:使用非預設 TCP 連接埠時,Database Mail 無法連線到 Linux 上的 SQL Server 2017 SQL Server 2017 的累積更新 6 |
容器修正:無法使用 “docker stop” 命令來停止 SQL Server Linux Docker 容器 | KB4093805 - 修正:無法使用 “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 注意 一節 |
銀 修正:當作業逾時時,Pacemaker 可能會終止資源代理程序進程 | KB4460203 - 修正:當 2017 年 SQL Server Always On 可用性群組中的作業逾時,Pacemaker 可能會終止資源代理程序進程 SQL Server 2017 的累積更新 11 |
銀修正:兩個 SQL Server 實例是可用性群組的主要複本 | KB4316791 - 修正:兩個 SQL Server 實例是 SQL Server 中可用性群組的主要複本 SQL Server 2017 的累積更新 8 |
銀修正:使用 Always On 可用性群組時不必要的故障轉移 | KB4056922 - 修正:當您在 2017 年 SQL Server Linux 上使用 Always On 可用性群組時不必要的故障轉移 SQL Server 2017 的累積更新 3 |
銀修正:Pacemaker 會將 Always On AG 的現有主要復本降級,且永遠不會升級新的複本 | KB4076982 - 修正:Pacemaker 會在 2017 SQL Server 2017 年於 Linux 上降級 Always On AG 的現有主要複本,且永遠不會升級新的複本 SQL Server 2017 的累積更新 4 |
銀修正:當您使用 Always On AG 時,Pacemaker 會將未同步處理的複本升階至主要複本 | KB4091722 - 修正:當您在Linux上的 SQL Server 2017 中使用 Always On AG 時,Pacemaker 會將未同步處理的複本升階至主要複本 SQL Server 2017 的累積更新 5 |
銀修正:使用 Always On AG 時,將本機複本升級至主要複本的 Pacemaker 會失敗 | KB4230542 - 修正:在 2017 年 SQL Server 使用 Always On AG 時,本機複本升級至主要複本的 Pacemaker 會失敗 SQL Server 2017 的累積更新 7 |
銀 修正:啟動屬於可用性群組的資料庫逾時 | KB4316790 - 修正:啟動屬於可用性群組的資料庫逾時 Linux 上的 SQL Server SQL Server 2017 的累積更新 8 |
銀修正:當 SQL Server 故障轉移叢集實例或 Always On AG 由 Pacemaker 管理時,就會發生不必要的故障轉移 | KB4316793 - 修正:當 SQL Server 2017 故障轉移叢集實例或 Always On AG 由 Pacemaker 管理時,就會發生不必要的故障轉移 SQL Server 2017 的累積更新 8 |
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應