SQL Server 2019 新版本
2019 年 11 月 4 日,微软在美国奥兰多举办的 Ignite 大会上发布了关系型数据库 SQL Server 的新版本。与之前版本相比,新版本的 SQL Server 2019 具备以下重要功能:在 Linux 和容器中运行的能力,连接大数据存储系统的 PolyBase 技术。
据了解,SQL Server 2019 可利用 PolyBase 技术进行全面的数据虚拟化,并将 Linux/ 容器与 Kubernetes(K8s)相兼容,交付了一种名为大数据群集(BDC)的新技术。BDC 技术完成了基于 K8s 的 SQL Server 多集群实现,同时可以与 Apache Spark、YARN、HDFS 相结合,提供一个可处理 OLTP(在线事务处理)、数据湖、甚至是机器学习要求的单一平台。该技术可以部署在 K8s 集群、本地、云中,包括微软提供的 Azure Kubernetes Services (AKS)。
SQL Server 2019 新版本的主要功能
OMNI-POLYBASE
Linux 和容器的兼容性不仅是实现 BDC 技术的关键,同时也是实现 PolyBase 扩展功能集的关键。现在,PolyBase 不仅可以连接的 Hadoop 集群和 Azure 存储,同时也可以连接到其它 SQL Server 实例。基于此,我们可以完成 BDC 主节点与 BDC 计算、数据和存储池的通信,实现存储池中的节点连接到 HDFS 存储中位于同一位置的数据。
微软还提供了一种新的跨平台工具——Azure Data Studio,可用于 T-SQL 查询、notebook 开发,甚至可以在 BDC 部署上运行 Spark 作业,以便将所有内容绑定在一起。
以上还不是 PolyBase 功能的“终点”,PolyBase 还可以连接到 Oracle、Teradata、MongoDB 以及 Azure Cosmos DB 。再进一步,PolyBase 可以连接到客户拥有的任何数据源和 ODBC 驱动程序。
借助于 PolyBase,SQL Server 可以承担数据虚拟化工作负载,即 SQL Server 像是一个一站式商店,用于连接到多平台 OLTP、NoSQL、数据仓库和数据湖工作负载。不过,这其中大部分的连接是虚拟的,数据仍可以保留在本机存储库中,但是却可以将尽可能多的查询工作托管给远程平台。
作为数据库的相关功能
无论 SQL Server 拥有多少附加功能,我们都不能忘记 SQL Server 本质是一款数据库。下面,我们就来看看作为数据库,SQL Server 有哪些提升?
-
SQL Server TempDB 可配置为内存优化的数据库 (使用 SQL Server 的内存 OLTP 技术),极大地提高了性能;
-
SQL Server 获得持久的内存能力;
-
SQL Server 的查询优化器更加智能,能够在处理查询时分配更多的资源;
-
SQL Server 支持 UTF-8 字符编码;
-
除了用 R 和 Python 编写的代码外,开发人员现在还可以在 SQL Server 脚本和存储过程中执行 Java 代码;
-
Accelerated Database Recovery 功能有助于快速恢复因断点或者其它严重错误而中断的长时间运行的事务,无需关心事务中断发生故障的位置;
-
新特性 Secure enclave 增强了 SQL Server 的加密特性;
智能查询处理
SQL Server和Azure SQL数据库通过为性能下降的执行计划添加自动查询调整来在此功能上构建智能。SQL Server 2019通过更改为查询进行排序和比较而授予的内存量来进一步采取此步骤,这可能导致吞吐量和性能问题。
SQL Server 2019还引入了标量函数内联和表变量的延迟编译。这两个功能都是SQL Server早期版本中的性能反模式,因为它们导致查询处理中的行估计不正确。在测试中,我发现SQL Server 2019中使用标量函数的查询的性能提高了10倍。详细可以看我这篇文章 “SQL Server 2019 中标量用户定义函数性能的改进”。
更智能的监视
查询存储功能是一个主要优点,但是在某些系统上,它引起了一些资源争用问题。这对于仅运行动态SQL(对于数据库发出的每个查询都是唯一的哈希值)的客户特别有影响。SQL Server 2019引入了自定义捕获选项,以此可以微调数据收集以避免此问题。
此外,在执行计划收集方面有许多增强功能。这些使您可以捕获实际的执行计划,从而使您可以检查查询使用的行数,并将其与查询优化器使用的估计值进行比较。反过来,这可以帮助您快速隔离性能问题。您始终可以在使用事件探查器或扩展事件功能之前执行此操作,但是执行这些捕获的开销非常高。
优化的插入性能
SQL Server在试图将大量的顺序记录插入表中时一直遇到瓶颈。这是由于内存争用,因为在给定时刻只有一个工作线程可以访问数据页。内存中的OLTP功能旨在解决此问题,但是它不能与所有数据类型100%兼容,因此不能在任何地方使用。
SQL Server 2019引入了一个称为``optimize_for_sequential_key''的可选功能,该功能可以减少这些瓶颈的影响。Microsoft引用此功能最多可将性能提高40%。可以在表级别添加此功能,并且仅应将受益于此功能的工作负载。
SQL Server的临时工作区TempDB是另一个性能改进。利用内存中的OLTP功能(消除了数据锁存层的瓶颈),内存优化的TempDB元数据可为繁忙的TempDB提供更大的整体吞吐量。
更快的数据库恢复
担任数据库管理员的人都感到很难将数据库恢复到100%,需要等待很长时间,等待恢复过程真正完成。这是因为有一个称为崩溃恢复的过程,在该过程中,必须将数据库事务日志而不是数据库备份中的事务回放到数据库中。 加速的数据库恢复通过实现版本存储来更改此过程,以允许在还原或服务器重新启动后更快地回放事务。这样做的性能开销很小(在客户测试中为1-2%),但效果非常明显。一次回滚需要90秒,而减少到1秒。