2019.11.4 SQL Server 2019发布,趁热打铁了解下2019的新特性。下面整理一些个人感觉重要的或者工作上能用到的新特性,有删减,完整版参考 https://docs.microsoft.com/zh-cn/sql/sql-server/what-s-new-in-sql-server-ver15?view=sql-server-ver15
SQL Server 2019 (15.x) 在早期版本的基础上构建,旨在将SQL Server发展成一个平台,以提供开发语言、数据类型、本地或云以及操作系统选项。
一、 数据虚拟化和SQL Server 2019大数据群集
SQL Server大数据集群可深度集成行业标准大数据源,并提供新的数据虚拟化功能。SQL Server 2019大数据集群利用PolyBase功能实现数据虚拟化,这可结合多个来源的数据,而无需移动或复制数据。
大数据集群基于多种不同的技术,包括Docker容器、Apache Spark、Hadoop和Kubernetes中的SQL Server on Linux。 使用户能够在Kubernetes上部署可扩展的SQL Server容器集群,这些集群可使用Transact-SQL读取、写入和处理大数据。

新增功能或更新 |
详细信息 |
可缩放的大数据解决方案 |
- 部署运行在Kubernetes上的SQL Server、Spark和HDFS容器可缩放群集
- 在Transact-SQL或Spark中读取、写入和处理大数据
- 通过群集查询多个外部数据源的数据,轻松合并和分析高价值关系数据
- 在由SQL Server管理的HDFS中存储大数据
- 将数据用于 AI、机器学习和其他分析任务
- SQL Server 主实例使用 Always On可用性组技术为所有数据库提供高可用性和灾难恢复
- 详情参考什么是 SQL Server 大数据群集
|
通过Polybase进行数据虚拟化 |
|
二、 智能数据库
1. 智能查询处理
新增功能或更新 |
详细信息 |
行模式内存授予反馈(Row mode memory grant feedback) |
通过调整批处理模式和行模式运算符的内存授予大小,扩展了批处理模式内存授予反馈功能。 这可以自动更正导致内存浪费和并发减少的过度授予,并更正导致费用高昂的溢出到磁盘的内存授予不足。 请参阅行模式内存授予反馈。 |
表变量延迟编译 |
提升了引用表变量的查询的计划质量和整体性能。 在优化和初始编译期间,此功能传播基于实际表变量行计数的基数估计。 这种准确的行计数信息可优化下游计划操作。 请参阅表变量延迟编译。 |
使用 APPROX_COUNT_DISTINCT 进行近似查询处理 |
对于绝对精度不重要、但响应速度很关键的情况,APPROX_COUNT_DISTINCT 使用比 COUNT(DISTINCT()) 更少的资源跨大型数据集进行聚合,以实现高级并发。 请参阅近似查询处理。类型Oracle。 |
行存储上的批处理模式 |
行存储上的批处理模式支持批处理模式执行,而无需使用列存储索引。 批处理模式执行在分析工作负荷期间更高效地使用 CPU,但低于 SQL Server 2019 (15.x) 的版本中,只有当查询包含具有列存储索引的运算时才使用它。 然而,有些应用程序可能会使用列存储索引不支持的功能,因此无法利用批处理模式。 自 SQL Server 2019 (15.x) 起,批处理模式在符合条件的分析工作负载上启用,这些工作负载的查询包含具有任何类型索引(行存储或列存储)的运算。 请参阅行存储上的批处理模式。 |
2. 内存数据库
新增功能或更新 |
详细信息 |
混合缓冲池 |
可以在需要时直接访问位于永久性内存 (PMEM) 设备上数据库文件中的数据库页。 参阅混合缓冲池。 |
内存优化 的TempDB元数据 |
SQL Server 2019 (15.x) 中,管理临时表元数据时所涉及的系统表可以移动到无闩锁的非持久内存优化表中,可有效消除瓶颈,并为 TempDB 繁重的工作负荷解锁新级别的可伸缩性。。 请参阅内存优化 TempDB 元数据。 |
In-Memory OLTP支持数据库快照 |
支持对包含内存优化文件组的数据库创建数据库快照。 |
3. 智能性能
新增功能或更新 |
详细信息 |
OPTIMIZE_FOR_SEQUENTIAL_KEY |
在 SQL Server 数据库引擎内启用优化,有助于提高索引中高并发插入的吞吐量。 此选项旨在用于易发生最后一页插入争用的索引,常见于有顺序键(如标识列、序列或日期/时间列)的索引。 有关详细信息,请参阅 CREATE INDEX。 |
强制快进和静态游标 |
查询存储计划强制支持快进和静态游标。 请参阅计划强制支持快进和静态游标。 |
资源调控 |
REQUEST_MAX_MEMORY_GRANT_PERCENT 和 ALTER WORKLOAD GROUP 的 CREATE WORKLOAD GROUP 选项的可配置值已从整数更改为浮点数数据类型,以允许更精细地控制内存限制。 请参阅修改工作负载组和创建工作负载组。 |
减少了对工作负荷的重新编译 |
改进跨多个作用域使用临时表。 请参阅减少了对工作负荷的重新编译
|
间接检查点可伸缩性 |
请参阅改进了间接检查点可伸缩性。 |
并发 PFS 更新 |
PFS 页是数据库文件中的特殊页面,SQL Server 用来在为对象分配空间时帮助定位可用空间的。 PFS 页上的页闩锁争用通常与 tempdb 关联,但当有许多并发对象分配线程时,也可能会在用户数据库上发生。 此改进改变了使用 PFS 更新来管理并发的方式,这样就能在共享闩锁(而不是排他闩锁)下更新它们。 自 SQL Server 2019 (15.x) 起,此行为在所有数据库(包括 tempdb )中默认处于启用状态。 |
4. 监视
三、 开发相关
1. Unicode 支持
新增功能或更新 |
详细信息 |
支持 UTF-8 字符编码 |
支持使用 UTF-8 字符进行导入和导出编码,并用作字符串数据的数据库级别或列级别排序规则。 这支持将应用程序扩展到全球范围,其中提供全球多语言数据库应用程序和服务的要求对于满足客户需求和特定市场规范至关重要。 请参阅排序规则和 Unicode 支持。
SQL Server 2019 (15.x) 候选发布为 PolyBase 外部表和 Always Encrypted(未用于 Enclave 时)启用 UTF-8 支持。 |
|
|
2. 语言扩展
除了用 R 和 Python 编写的代码外,开发人员现在还可以在 SQL Server 脚本和存储过程中执行 Java 代码
3. 错误消息
五、 任务关键安全性
新增功能或更新 |
详细信息 |
具有安全 Enclave 的 Always Encrypted |
通过对服务器端安全隔离区中的纯文本数据启用计算,使用就地加密和丰富计算扩展 Always Encrypted。 就地加密可提高加密列、旋转列加***等加密操作的性能和可靠性,因为这样可以避免将数据移出数据库。 对丰富计算(模式匹配和比较操作)的支持可将 Always Encrypted 解锁到一组更广泛的方案和应用程序,这些方案和应用程序需要敏感数据保护,同时还需要在 Transact-SQL 查询中使用更丰富的功能。 请参阅包含安全 Enclave 的 Always Encrypted。 |
SQL Server 配置管理器中的证书管理 |
请参阅证书管理(SQL Server 配置管理器)。 |
六、 高可用性
1. 可用性组
新增功能或更新 |
详细信息 |
最多五个同步副本 |
SQL Server 2019 (15.x) 将同步副本的最大数目从 SQL Server 2017 (14.x) 中的 3 增加到了 5。 可以配置此组的 5 个副本在该组中进行自动故障转移。 有 1 个主要副本以及 4 个同步的次要副本。 |
次要副本到主要副本连接重定向 |
允许客户端应用程序连接定向到主要副本,而不考虑在连接字符串中指定的目标服务器。 有关详细信息,请参阅次要副本到主要副本读/写连接重定向(AlwaysOn 可用性组)。 |
2. 恢复
新增功能或更新 |
详细信息 |
加速数据库恢复 |
按数据库启用加速数据库恢复。 请参阅加速数据库恢复。 |
3. 可恢复操作
七、 设置
八、 Linux相关新特性
参考
https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-ver15?view=sql-server-ver15
https://docs.microsoft.com/zh-cn/sql/sql-server/what-s-new-in-sql-server-ver15?view=sql-server-ver15
https://blog.****.net/capsicum29/article/details/85603863
https://www.infoq.cn/article/LBu1zLKvHmasvadyisLl