具备高性能工作负载的 SQL Server 2017 和 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 个或更多核心,以及 5 TB 或更多内存。
应用建议的更新并提高SQL Server性能
有关提高 2017 SQL Server 和 2016 SQL Server 性能的建议分为五个表,如下所示:
- 表 1 包含针对高端系统上可伸缩性最常推荐的更新和跟踪标志。
- 表 2 包含有关其他性能优化的建议和指南。
- 表 3 包含有关 SQL 2017 和 2016 中行为和默认设置更改的信息。
- 表 4 包含其他可伸缩性修补程序,这些修补程序与累积更新 (CU) 一起提供。
- 表 5 包含针对在 Linux 环境中部署SQL Server实例的建议修补程序和配置准则。
注意
有关其他上下文,请参阅常用旋钮来优化繁忙的SQL Server。
重要
如果启用了跟踪标志,请确保在运行迁移到 SQL Server 2017 或 SQL Server 2016 后查看该文章中的信息。 该文章中列出的许多跟踪标志和配置选项在 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 | None | KB3026083 - 修复:临时SQL Server计划缓存上的SOS_CACHESTORE旋转锁争用导致SQL Server中的 CPU 使用率过高 |
计划缓存中的条目由于其他缓存或内存管理器的增长而逐出。 由于频繁重新编译查询,CPU 使用率较高。 | T8032 | SQL Server 2016 RTM 到当前 SP/CU SQL Server 2017 RTM 到当前 SP/CU | None | DBCC TRACEON - 跟踪标志的文档 (Transact-SQL) 。 请参阅 计划缓存内部的缓存大小管理部分。 |
tempdb 使用频繁,并且对 tempdb 中的数据进行了许多修改。 使用 tempdb 数据库的间接检查点时,遇到未生成计划程序消息。 | T3468 | SQL Server 2016 SP1 CU5 到当前 SP/CU SQL Server 2017 CU1 到当前 SP/CU | None | 间接检查点和 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 | None | KB974006 - SQL Server查询优化器修补程序跟踪标志 4199 服务模型 注意考虑使用数据库范围选项QUERY_OPTIMIZER_HOTFIXES或查询提示ENABLE_QUERY_OPTIMIZER_HOTFIXES,而不是服务器级别跟踪标志 4199。 |
统计信息作业需要很长时间才能完成。 无法并行运行多个统计信息更新作业。 | T7471 | SQL Server 2016 RTM CU1 到当前 SP/CU SQL Server 2017 RTM 到当前 SP/CU | None | 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 管理员协作实现本文的“解决方法”部分中列出的解决方案之一。 |
针对即席工作负载进行优化服务器配置选项 强制参数化 |
计划缓存中的条目由于其他缓存或内存管理器的增长而逐出。 当缓存达到其最大条目数时,还可能会遇到计划缓存逐出。 除了上面讨论的跟踪标志 8032 之外,请考虑 优化临时工作负荷 服务器选项和 FORCED PARAMETERIZATION 数据库选项。 |
如何减少SQL Server中缓冲池内存的分页 SQL Server 2012 及更高版本中的内存配置和大小调整注意事项 |
将 Windows) 用户权限分配给 SQL 服务启动帐户 (启用“在内存中锁定页”选项 。 请参阅如何在 2012 SQL Server中启用“锁定页面”功能。 将最大服务器内存设置为大约总物理内存的 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 - 文件和跟踪标志和汇报 | 使用 tempdb 优化并通过避免或减少临时对象上的 DDL 来提高可伸缩性。 |
即时文件初始化 | 与 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 环境中主要和辅助副本 (replica) 日志文件具有不同的扇区大小时,同步速度缓慢 | 如果你有一个可用性组,其中主副本 (replica) 上的事务日志位于扇区大小为 512 字节的磁盘上,而辅助副本 (replica) 事务日志位于扇区大小为 4-K 的驱动器上,则同步速度可能会很慢。 在这种情况下,启用 TF 1800 应更正此问题。 有关详细信息,请参阅 跟踪标志 1800。 |
查询分析基础结构 KB3170113 -更新以在 2014 SP2 SQL Server 中公开 showplan XML 和 Extended Event 中的按操作员查询执行统计信息 |
如果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:可用性组辅助副本 (replica) 重做模型和性能 | 如果在 (PARALLEL_REDO_TRAN_TURN 、 DPT_ENTRY_LOCK 或 DIRTY_PAGE_TABLE_LOCK ) 遇到太多等待,请查看此博客,采取纠正措施 (应用适用的修补程序,评估重做模型) 的适当使用。 |
KB2634571 - 使用 PHYSICAL_ONLY 选项时,对 DBCC CHECKDB 命令的改进可能会提高性能 DBCC TRACEON - 跟踪标志 更快的 CHECKDB - 第 IV 部分 (SQL CLR UDT) |
如果在) 多个 TB 大小 (大型数据库上运行 DBCC CHECK 命令,请考虑使用跟踪标志 T2562、 T2549 和 T2566。 2016 SQL Server中的“EXTENDED_LOGICAL_CHECK”选项下现在有多个检查。 |
保护SQL Server免受 Spectre 和 Meltdown 侧通道漏洞的攻击 | 仔细评估环境中各种SQL Server工作负载上内核虚拟地址阴影 (KVAS) 、内核页表间接 (KPTI) 以及间接分支预测缓解 (IBP) 的性能。 |
表 3. 2017 SQL Server 和 2016 SQL Server 中引入的重要更改
SQL Server 2017 年和 2016 SQL Server在可伸缩性和性能方面进行了多项改进。 2014 SQL Server 和 2012 SQL Server 所需的各种配置更改和跟踪标志成为 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跟踪标志 |
数据库引擎 | 数据库引擎中的新增功能 - SQL Server 2017 | |
数据库引擎 | 2016 SQL Server中数据库引擎功能的中断性变更 | |
数据库引擎 | 2017 SQL Server中数据库引擎功能的中断性变更 | |
查询处理数据类型转换 | 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 - 运行速度更快: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 - 运行速度更快:TEMPDB 和用户数据库的 -T1117 和 -T1118 更改 |
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 实用工具已改进,可在 SQL Server 中将 UTF-8 数据加载到表中。 | SQLSweet16!,第 10 集:“我可以吃玻璃杯...”,但是否可以将其加载到数据库中? |
空间 | SQL Server 2016 在 T-SQL 执行期间删除了许多空间方法的 PInvoke 和 PUnInvoke 活动。 | SQL 2016 - 运行速度更快:本机空间实现 () |
空间 | SQL Server 2016 改进了使用本机空间验证使用空间数据的 TVP 的可伸缩性。 | SQL 2016 - 运行速度更快:具有空间列 (的 TVP) |
空间 | 本机和 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。 累积更新包含所有修补程序以及与以前的SQL Server更新版本一起包含的所有更新。 如SQL Server增量服务模型更新中所述,建议以持续主动节奏安装最新的累积更新,以解决或防止所述问题。 另请注意,从 2017 SQL Server 开始,引入了适用于 SQL Server 的新式服务模型,以便不再提供 Service Pack。
适用版本 | 区域或组件 | 已解决的问题说明 | 建议的更新 |
---|---|---|---|
SQL Server 2016SQL Server 2017 | 备份 & 还原 | 如果使用的是非默认 MAXTRANSFERSIZE,则启用 TDE 的数据库的日志备份失败,并间歇性地返回错误 33111,该证书副本过去曾用于加密 DEK | 修复:在 SQL Server 中备份 TDE 加密数据库时出现错误 33111 和 3013 2017 SQL Server累积更新 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中完成速度缓慢 2017 SQL Server累积更新 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 | 备份 & 还原 | 在 4 K 扇区上使用压缩还原备份时还原SQL Server | KB4088193 - 修复:在扇区大小为 4K 的磁盘上还原压缩备份时还原性能缓慢SQL Server SQL Server 2016 SP1 的累积更新 9 SQL Server 2016 SP2 的累积更新 1 2017 SQL Server累积更新 7 |
SQL Server 2016SQL Server 2017 | 备份 & 还原 [VDI] | 使用 VDI 客户端时,还原 TDE 压缩的备份不成功 | 2017 SQL Server累积更新 7 SQL Server 2016 SP2 的累积更新 1 SQL Server 2016 SP1 的累积更新 9 |
SQL Server 2016SQL Server 2017 | 备份 & 还原 [VDI] | 通过 VDI 接口还原已启用 TDE 的备份压缩数据库失败,并返回 OS 错误 38 | 2017 SQL Server累积更新 8 [VSTS Bug # 10936552] SQL Server 2016 SP2 RTM [VSTS Bug # 10698847] |
SQL Server 2016SQL Server 2017 | 备份 & 还原 [VSS] | 通过基于 VSS 的应用程序备份可用性数据库可能会在SQL Server失败 | 修复:通过基于 VSS 的应用程序备份可用性数据库可能会在SQL Server失败 2017 SQL Server累积更新 1 SQL Server 2016 RTM 的累积更新 9 SQL Server 2016 SP1 的累积更新 5 SQL Server 2014 SP2 的累积更新 8 |
SQL Server 2016SQL Server 2017 | 备份 & 还原 | 如果加密密钥存储在 EKM 提供程序中的 SQL Server | 如果加密密钥存储在 EKM 中,则已启用 TDE 的备份和还原速度较慢 2017 SQL Server累积更新 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花费更长的时间 2017 SQL Server累积更新 2 SQL Server 2016 Service Pack 1 的累积更新 6 2016 SQL Server累积更新 9 |
SQL Server 2016SQL Server 2017 | Always On AG | 在包含堆表的可用性组的辅助副本 (replica) 中并行重做会生成运行时断言转储或运行SQL Server崩溃的服务器,并返回访问冲突错误 | 修复:在包含堆表的可用性组的辅助副本 (replica) 中并行重做会生成运行时断言转储或SQL Server崩溃并出现访问冲突错误 SQL Server 2016 SP1 的累积更新 9 SQL Server 2016 SP2 的累积更新 1 2017 SQL Server累积更新 6 |
SQL Server 2016 | Always On AG | 在SQL Server Always On可用性组的辅助副本 (replica) 中使用并行重做时发生断言 | 修复:在SQL Server Always On可用性组的辅助副本 (replica) 中使用并行重做时发生断言 2016 SQL Server累积更新 3 |
SQL Server 2016SQL Server 2017 | Always On AG | 处理读取查询时,Always On AG 的性能较慢 | 修复:在 SQL Server 中处理读取查询时,Always On AG 速度缓慢 2017 SQL Server累积更新 8 SQL Server 2016 SP2 的累积更新 1 SQL Server 2016 SP1 的累积更新 9 |
SQL Server 2017 | Always On AG | 改进以缩短Linux 上的 SQL Server中可用性组的故障转移持续时间 | 改进以缩短Linux 上的 SQL Server中可用性组的故障转移持续时间 2017 SQL Server累积更新 8 |
SQL Server 2017 | Always On AG | SQL Server中 Pacemaker 群集上Always On可用性组的改进 | SQL Server中 Pacemaker 群集上Always On可用性组的改进 2017 SQL Server累积更新 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内存泄漏 2017 SQL Server累积更新 4 SQL Server 2016 SP1 的累积更新 8 |
SQL Server 2016SQL Server 2017 | 内存 | 当SQL Server进程的虚拟地址空间不足时出现内存不足错误 | 当SQL Server进程的虚拟地址空间不足时出现内存不足错误SQL Server 2017 SQL Server累积更新 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 2016 SQL Server累积更新 2 |
SQL Server 2016SQL Server 2017 | 内存中 OLTP | 内存中优化文件组出现较大的磁盘检查点使用情况 | 修复:在大量非内存中工作负荷期间,In-Memory 优化的文件组发生大型磁盘检查点使用情况 2017 SQL Server累积更新 6 SQL Server 2016 SP1 的累积更新 8 2016 SQL Server累积更新 1 |
SQL Server 2016 | 内存中 OLTP | 将数据插入内存优化表时,检查点文件会过度增长 | 修复:在 2016 SQL Server 中将数据插入内存优化表中时检查点文件过度增长 SQL Server 2016 SP1 的累积更新 2 2016 SQL Server累积更新 4 |
SQL Server 2016SQL Server 2017 | 内存中 OLTP | 数据库包含内存优化表时,恢复需要很长时间 | 在 2017 年和 2016 SQL Server恢复具有内存优化表的数据库需要很长时间 2017 SQL Server累积更新 4 SQL Server 2016 SP1 的累积更新 7 |
SQL Server 2016SQL Server 2017 | tempdb | PFS 页面轮循机制算法改进 | 2016 SQL Server中的 PFS 页面轮循机制算法改进 2017 SQL Server累积更新 7 SQL Server 2016 SP2 的累积更新 1 SQL Server 2016 SP1 的累积更新 9 |
SQL Server 2016SQL Server 2017 | tempdb | 性能问题以PAGELATCH_EX的形式出现,tempDB 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 表更改需要同步删除临时表 | 2016 年或 2017 SQL Server发生大量 tempdb 争用 2017 SQL Server累积更新 5 SQL Server 2016 SP1 的累积更新 8 |
SQL Server 2017 | tempdb | (sys.sysobjvalues) 删除临时对象时,PAGELATCH_EX争用 | 修复:删除SQL Server中的临时对象时PAGELATCH_EX争用 2017 SQL Server累积更新 5 |
SQL Server 2016 | tempdb | 增加了 sys.sysobjvalues 中的PAGELATCH_EX争用 | 修复:2016 SQL Server 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 中的“未生成计划程序”错误 2017 SQL Server累积更新 1 SQL Server 2016 Service Pack 1 的累积更新 5 2016 SQL Server累积更新 8 |
SQL Server 2016SQL Server 2017 | tempdb | 使用许多频繁的短事务的工作负载可能会消耗更多 CPU | SQL Server 2017 年和 2016 年利用许多频繁的短事务的工作负载可能比 2014 SQL Server占用的 CPU 多 2017 SQL Server累积更新 4 SQL Server 2016 SP1 的累积更新 2 |
SQL Server 2016SQL Server 2017 | 事务日志 | 当没有足够的磁盘空间用于关键日志增长时出现错误 9002 | KB4087406 - 修复:当SQL Server 2014、2016 和 2017 年没有足够磁盘空间用于关键日志增长时,错误 9002 2017 SQL Server累积更新 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性能问题 2016 SQL Server累积更新 2 |
SQL Server 2017 | 查询存储 | 查询存储收集运行时统计信息时发生访问冲突 | 查询存储在 2017 SQL Server收集运行时统计信息时发生访问冲突 2017 SQL Server累积更新 5 |
SQL Server 2016 | 查询存储 | 查询存储企业版和开发人员版以外的版本上的自动数据清理失败 | 查询存储 2016 SQL Server企业版和开发人员版以外的版本上,自动数据清理失败 2016 SQL Server累积更新 1 |
SQL Server 2016 | 查询存储 | 启用查询存储时SQL Server性能降低 | KB4340759 - 修复:启用查询存储时SQL Server 2016 性能缓慢 SQL Server 2016 SP2 的累积更新 2 |
表 5:针对 Linux 环境中SQL Server的建议改进、修复和配置准则
此表是发布SQL Server 2017 年之后累积更新中发布的所有关键改进、建议和代码更改的汇编。 查看“ 症状” 列中的说明,并应用所需的更新 (最好是包含适用环境中的“ 必需更新 ”列中特定修补程序) 的最新更新。 可查看列出的知识库文章,了解有关相应问题的详细信息。
这些建议不要求你启用其他跟踪标志作为启动参数,除非在文章或此表中明确标注了它。 只需应用包含这些修补程序的最新累积更新或服务包即可获得权益。 如果在 Linux 上的 SQL Server 中使用 Always On 可用性组,请将 SQL Server 2017 升级到累积更新 8 或更高版本,因为此更新中提供了多项改进。 注意“必需更新”列中的 CU 名称提供解决此问题的SQL Server的第一个累积更新。 累积更新包含以前的SQL Server更新版本中包含的所有修补程序和所有更新。 如SQL Server增量服务模型更新中所述,我们现在建议以持续主动的节奏安装最新的累积更新,以解决或防止所述问题。 另请注意,从 2017 SQL Server开始,引入了适用于 SQL Server 的新式服务模型,以便不再提供 Service Pack。
更改或改进摘要 | 更多信息和参考 |
---|---|
SQL 和 OS:查看部署时 OS 和SQL Server的各种最佳做法建议Linux 上的 SQL Server | Linux 上的 SQL Server的性能最佳做法和配置准则 |
SQL 代理改进:无需等待所有数据库恢复即可启动SQL Server 代理作业 | SQL Server 代理作业无需等待所有数据库在 Linux SQL Server 2017 中恢复即可启动 2017 SQL Server累积更新 9 |
存储改进:在 2017 SQL Server启用“强制刷新”机制 | 在 Linux SQL Server 2017 中启用强制刷新机制 2017 SQL Server累积更新 6 |
存储 改进:将 master 数据库和错误日志文件移动到另一个位置 | KB4053439 - 改进:将 master 数据库和错误日志文件移动到 Linux SQL Server 2017 中的另一个位置 2017 SQL Server累积更新 4 |
银改进:SQL Server Pacemaker 群集上Always On可用性组的改进 | KB4339875 - SQL Server 中 Pacemaker 群集上Always On可用性组的改进 2017 SQL Server累积更新 8 |
记忆改进:安装或启动SQL Server的最小内存限制设置为 2 GB | KB4052969 - 修复:安装或启动 2017 SQL Server的最小内存限制设置为 2 GB 2017 SQL Server累积更新 2 |
记忆 修复:启用 TF 834 后内存增加阶段太长 | KB4075203 - 修复:在 Linux SQL Server 2017 中启用 TF 834 后内存增加阶段太长 2017 SQL Server累积更新 4 |
调度修复:2017 SQL Server中 Windows 和 Linux 计划程序映射之间的可移植性和性能差异 | KB4043455 - 修复:2017 SQL Server 2017 中 Windows 和 Linux 计划程序映射之间的可移植性和性能不同 2017 SQL Server累积更新 1 |
AD 身份验证 修复:无法基于属于父域的用户创建登录名 | KB4073670 - 修复:无法基于 Linux SQL Server 2017 中属于父域的用户创建登录名 2017 SQL Server累积更新 4 |
AD 身份验证 更新:通过限制地理上大型网络中可以联系哪些 KDC 来提高 SQL 服务器性能 | KB4463314 - 更新通过限制可在地理上大型网络中联系哪些 KDC 来提高 SQL Server 性能 2017 SQL Server累积更新 11 |
AD 身份验证修复:使用第三方 Active Directory 提供程序时SQL Server崩溃 | KB4466962 - 修复:使用第三方 Active Directory 提供程序时SQL Server 2017 崩溃 2017 SQL Server累积更新 12 |
TSQL修复:重新启动SQL Server后,NEWSEQUENTIALID 函数生成重复的 GUID | KB4078097 - 修复:在 Linux 上重启 SQL Server 2017 后,NEWSEQUENTIALID 函数生成重复的 GUID 2017 SQL Server累积更新 4 |
Connections修复:使用 TCP 协议连接时意外的内存消耗 | KB4073045 - 修复:在 Linux 上将 TCP 协议连接用于 SQL Server 2017 时意外的内存消耗 2017 SQL Server累积更新 4 |
Connections修复:启动时禁用 IPv6 时发生名称解析错误 | KB4053392 - 修复:在 Linux SQL Server 2017 中启动时禁用 IPv6 时发生名称解析错误 2017 SQL Server累积更新 2 |
Connections修复:SQL Server不侦听由 mssql-conf 脚本指定的非默认 IP 地址 | KB4053393 - 修复:Linux 上的 SQL Server 2017 不侦听由 mssql-conf 脚本指定的非默认 IP 地址 2017 SQL Server累积更新 2 |
设置 修复:应用 CU 时脚本升级失败 | 升级 SQL Server 2017 CU4 或更高版本且未在 Linux 上启用 SQL 代理时出现错误 2017 SQL Server累积更新 6 |
数据库邮件修复:使用非默认 TCP 端口时,数据库邮件无法连接到SQL Server | KB4100873 - 修复:使用非默认 TCP 端口时,数据库邮件无法连接到 Linux 上的 SQL Server 2017 2017 SQL Server累积更新 6 |
容器修复:无法使用“docker stop”命令停止SQL Server Linux Docker 容器 | KB4093805 - 修复:无法使用“docker stop”命令停止SQL Server Linux Docker 容器 2017 SQL Server累积更新 5 |
容器修复:在 Linux Docker 容器中运行SQL Server时出现内存不足错误 | KB4347055 - 修复:在 Linux Docker 容器中运行 SQL Server 2017 时出现内存不足错误 2017 SQL Server累积更新 10 |
AG:如果使用 Pacemaker 包 1.1.18-11.el7 或更高版本,请调整 start-failure-is-fatal 属性 | KB4229789 - 2017 SQL Server累积更新 7 请参阅 Pacemaker 通知 部分 |
银 修复:当操作超时时,Pacemaker 可能会终止资源代理进程 | KB4460203 - 修复:当 2017 SQL Server 2017 Always On可用性组的操作超时时,Pacemaker 可能会终止资源代理进程 2017 SQL Server累积更新 11 |
银修复:两个SQL Server实例是可用性组的主要副本 (replica) | KB4316791 - 修复:两个SQL Server实例是SQL Server中可用性组的主要副本 (replica) 2017 SQL Server累积更新 8 |
银修复:使用Always On可用性组时不必要的故障转移 | KB4056922 - 修复:在 Linux SQL Server 2017 中使用Always On可用性组时不必要的故障转移 2017 SQL Server累积更新 3 |
银修复:Pacemaker 会降级Always On AG 的现有主要副本 (replica) ,并且永远不会提升新主副本 (replica) | KB4076982 - 修复:Pacemaker 在 Linux 上SQL Server 2017 年降级Always On AG 的现有主副本 (replica) ,从不提升新主副本 (replica) 2017 SQL Server累积更新 4 |
银修复:使用 Always On AG 时,Pacemaker 将未同步副本 (replica) 提升为主 | KB4091722 - 修复:在 Linux SQL Server 2017 中使用 Always On AG 时,Pacemaker 将未同步副本 (replica) 提升为主数据库 2017 SQL Server累积更新 5 |
银修复:使用 Always On AG 时,将本地副本 (replica) 提升到主节点的 Pacemaker 失败 | KB4230542 - 修复:在 2017 SQL Server 中使用 Always On AG 时,将本地副本 (replica) 提升到主节点的 Pacemaker 失败 2017 SQL Server累积更新 7 |
银 修复:启动属于可用性组的数据库超时 | KB4316790 - 修复:启动属于可用性组的数据库在Linux 上的 SQL Server 2017 SQL Server累积更新 8 |
银修复:当由 Pacemaker 管理SQL Server故障转移群集实例或Always On AG 时,会发生不必要的故障转移 | KB4316793 - 修复:当 Pacemaker 管理 SQL Server 2017 故障转移群集实例或 Always On AG 时发生不必要的故障转移 2017 SQL Server累积更新 8 |
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈