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秒。
SQL Server 2019 新版本的更多相关文章
- SQL Server 2019 新函数Approx_Count_Distinct
2019年11月4日微软发布了2019正式版,该版本有着比以往更多强大的新功能和性能上的优势,可参阅SQL Server 2019 新版本. SQL Server 2019具有一组丰富的增强功能和新功 ...
- SQL Server 2019 深度解读:微软数据平台的野望
本文为笔者在InfoQ首发的原创文章,主要利用周末时间陆续写成,也算近期用心之作.现转载回自己的公众号,请大家多多指教. 11 月 4 日,微软正式发布了其新一代数据库产品 SQL Server 20 ...
- Cenots7下安装运行.NET Core、MicroSoft SQL Server 2019 preview 的基础实践
一:概要 适应人群:.Net初学者.想了解.Net Core在Linux系统中的运行环境搭建者.初次且想在linux上应用.Net Core开发应用程序者: 基础技能:了解.NET基础开发技能者.有一 ...
- 【服务器踩坑】SSMS链接Ubuntu上的SQL Server 2019 报错 TCP Provider: Error code 0x2746
昨天在一台Ubuntu18.04.2 上安装了SQL Server 2019 for Linux 服务正常启动了,但是却无法通过命令行工具或者远程Windows机器上的SSMS链接. SSMS错误是 ...
- 微软SQL Server 2019 全新发布,更新内容亮点都在这里了
IT之家11月7日消息 在Microsoft Ignite 2019 大会上,微软正式发布了新一代数据库产品SQL Server 2019.使用统一的数据平台实现业务转型SQL Server 20 ...
- SQL Server 2019 中标量用户定义函数性能的改进
在SQL Server中,我们通常使用用户定义的函数来编写SQL查询.UDF接受参数并将结果作为输出返回.我们可以在编程代码中使用这些UDF,并且可以快速编写查询.我们可以独立于任何其他编程代码来修改 ...
- [Docker] - 安装 SQL Server 2019,使用 SSMS 进行登录
镜像仓库 https://hub.docker.com/_/microsoft-mssql-server 拉取镜像并进行安装(以 SQL Server 2019 CTP 3.2 为例) docker ...
- SQL Server 2019 Linux Docker 在主机上以其他非根用户的身份运行容器
docker logs mssql2019SQL Server 2019 will run as non-root by default.This container is running as us ...
- SQL Server 2019 安装教程
SQL Server 2019 安装教程 下载安装SQL: 1.下载SQL Server 2019 Developer 官方网址:下载地址. 2.下拉选择免费版本,直接点击下载(别问,问就是家境贫寒
随机推荐
- OpenCV 学习笔记(0)两幅图像标定配准
参考教程 依赖opencv扩展库,使用sifi匹配 保存配准信息 "./config/calibratedPara.yaml" #include <iostream> ...
- rhce备战笔记
1)配置selinuxvim /etc/slinux/config SELINUX=enforcingsetenforce 1getenforce两台都做 2)配置SSHvim /etc/ssh ...
- Xamarin.Forms应用程序基础知识
生命周期 在 Android 上,若主活动的 [Activity()] 属性缺少 ConfigurationChanges = ConfigChanges.ScreenSize | ConfigCha ...
- Mac Sublime Text使用python3运行脚本(command+b)
默认安装好sublime, 使用快捷键command+b的时候, 会使用python2版本运行 下面就改为用python3运行, 也可以python2运行 一. 新建文件 Sublime Text - ...
- jQuery基础案例
一.隔行换色 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- Android Studio软件技术基础 —Android项目描述---1-类的概念-android studio 组件属性-+标志-Android Studio 连接真机不识别其他途径
学习android对我来说,就是兴趣,所以我以自己的兴趣写出的文章,希望各位多多支持!多多点赞,评论讨论加关注. 最近有点忙碌,对于我来说,学习Android开发,是对于我的考验,最近一位大佬发给我一 ...
- ZROI 2020WC集训训练赛 Day4
最后一场,幸好没有掉分,假装功德圆满吧. T1有各种数据结构做法,主要难点在优化空间. T2直接DP就完事了,然而记搜的复杂度是对的-- T3神仙最小割. 没错这篇文章就是咕了. pkuwc rp++ ...
- windows自动修复失败,无法启动
Windows10操作系统于2015年7月29日正式发布,此后,win10也就成了新上市的笔记本电脑或者台式机电脑的预装操作系统!win10系统给我们带了全新的体验,当然也带来了一定的烦恼!就拿win ...
- GoCN每日新闻(2019-11-01)
GoCN每日新闻(2019-11-01) GoCN每日新闻(2019-11-01) 1. Rob Pike 认为 Go 成功的 5 个因素 https://changelog.com/posts/5- ...
- Java 整数间的除法运算如何保留所有小数位?
1.情景展示 double d = 1/10; System.out.println(d); 返回的结果居然是0.0!这是怎么回事儿? 2.原因分析 第一步:你会发现用运算结果也可以用int类型接 ...