SQL Server 2019 (15.x) 新特性

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读取、写入和处理大数据。

SQL Server 2019 (15.x) 新特性

新增功能或更新 详细信息
可缩放的大数据解决方案
  • 部署运行在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. 监视

新增功能或更新 详细信息
WAIT_ON_SYNC_STATISTICS_REFRESH sys.dm_os_wait_stats 动态管理视图中新的等待类型。 它显示了针对同步统计信息刷新操作耗费的实例级别累计时间。 请参阅 sys.dm_os_wait_stats
查询存储的自定义捕获策略 启用后,在新的“查询存储捕获策略”设置下有额外可用的查询存储配置,可用于微调特定服务器中的数据收集。 有关详细信息,请参阅 ALTER DATABASE SET 选项
LIGHTWEIGHT_QUERY_PROFILING 新数据库范围配置。 请参阅 LIGHTWEIGHT_QUERY_PROFILING
sys.dm_exec_requests 列 command 如果 SELECT 在继续执行查询之前等待同步统计信息更新操作完成,则显示 SELECT (STATMAN)。 请参阅 sys.dm_exec_requests
sys.dm_exec_query_plan_stats 新的 DMF 返回大多数查询的最后已知实际执行计划的等效项。 请参阅 sys.dm_exec_query_plan_stats
LAST_QUERY_PLAN_STATS 要启用 sys.dm_exec_query_plan_stats 的新数据库范围配置。 请参阅 ALTER DATABASE SCOPED CONFIGURATION
query_post_execution_plan_profile 扩展事件基于轻型分析收集实际执行计划的等效项,与使用标准分析的 query_post_execution_showplan 不同。 请参阅查询分析基础结构
sys.dm_db_page_info(database_id, file_id, page_id, mode) 新的 DMF 返回有关数据库中页面的信息。 请参阅 sys.dm_db_page_info (Transact-SQL)

 

三、 开发相关

1. Unicode 支持

新增功能或更新 详细信息
支持 UTF-8 字符编码 支持使用 UTF-8 字符进行导入和导出编码,并用作字符串数据的数据库级别或列级别排序规则。 这支持将应用程序扩展到全球范围,其中提供全球多语言数据库应用程序和服务的要求对于满足客户需求和特定市场规范至关重要。 请参阅排序规则和 Unicode 支持

SQL Server 2019 (15.x) 候选发布为 PolyBase 外部表和 Always Encrypted(未用于 Enclave 时)启用 UTF-8 支持。
   

 

2. 语言扩展

除了用 R 和 Python 编写的代码外,开发人员现在还可以在 SQL Server 脚本和存储过程中执行 Java 代码

新增功能或更新 详细信息
新 Java 语言 SDK 简化了可从 SQL Server 运行的 Java 程序的开发。 请参阅 SQL Server 的用于 Java 的 Microsoft 扩展性 SDK
Java 语言 SDK 是开放源代码的 Microsoft SQL Server 用于 Java 的 Microsoft 扩展性 SDK 目前是开源的,可在 GitHub 上获取
对 Java 数据类型的支持 请参阅 Java 数据类型
新默认 Java 运行时 SQL Server 现在包括 Azul System 的 Zulu Embedded,用于在整个产品中提供 Java 支持。 有关详细信息,请参阅 Free supported Java in SQL Server 2019 is now available(SQL Server 2019 现已提供免费支持的 Java)。
SQL Server 语言扩展 使用扩展性框架执行外部代码。 请参阅 SQL Server 语言扩展
注册外部语言 新的 DDL CREATE EXTERNAL LANGUAGE 在 SQL Server 中注册外部语言,如 Java。 请参阅 CREATE EXTERNAL LANGUAGE

 

3. 错误消息

新增功能或更新 详细信息
详细截断警告 截断错误消息默认包括表名和列名以及截断值。 请参阅 VERBOSE_TRUNCATION_WARNINGS

 

五、 任务关键安全性

新增功能或更新 详细信息
具有安全 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. 可恢复操作

新增功能或更新 详细信息
联机聚集列存储索引生成和重新生成 请参阅联机执行索引操作
可恢复联机行存储索引生成 请参阅联机执行索引操作
暂停和恢复透明数据加密 (TDE) 的初始扫描 请参阅透明数据加密 (TDE) 扫描 - 暂停和继续

 

七、 设置

新增功能或更新 详细信息
新内存设置选项 在安装过程中设置“最小服务器内存(MB)” 和“最大服务器内存(MB)” 服务器配置。 有关详细信息,请参阅“数据库引擎配置 - 内存”页,以及通过命令提示符安装 SQL Server 中的 USESQLRECOMMENDEDMEMORYLIMITSSQLMINMEMORY 和 SQLMAXMEMORY 参数。 建议值遵循服务器内存配置选项中的内存配置准则。
新并行度设置选项 在安装过程中设置“最大并行度” 服务器配置。 有关详细信息,请参阅“数据库引擎配置 - MaxDOP”页,以及通过命令提示符安装 SQL Server 中的 SQLMAXDOP 参数。 默认值遵循配置服务器配置选项“最大并行度”中的最大并行度准则。

 

八、 Linux相关新特性

新增功能或更新 详细信息
新建容器注册表 开始使用 Docker 上的 SQL Server 容器
复制支持 Linux 上的 SQL Server 复制
支持 Microsoft 分布式事务处理协调器 (MSDTC) 如何在 Linux 上配置 MSDTC
OpenLDAP 支持第三方 AD 提供商 教程:对 Linux 上的 SQL Server 使用 Active Directory 身份验证
Linux 上的机器学习 在 Linux 上配置机器学习
TempDB 改进 默认情况下,Linux 上的 SQL Server 新安装会根据逻辑核心数创建多个 TempDB 数据文件(最多 8 个数据文件)。 这不适用于就地次要版本或主版本升级。 每个 TempDB 文件的大小为 8 MB,且自动增长大小为 64 MB。 此行为类似于 Windows 上的默认 SQL Server 安装。
Linux 上的 PolyBase 在 Linux 上为非 Hadoop 连接器安装 PolyBase

PolyBase 类型映射
变更数据捕获 (CDC) 支持 Linux 上的 SQL Server 2019 现在支持变更数据捕获 (CDC)。


参考

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