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.下拉选择免费版本,直接点击下载(别问,问就是家境贫寒
随机推荐
- JSON Web Token (JWT) - Weak secret
This API with its /hello endpoint (accessible with GET) seems rather welcoming at first glance but i ...
- 分布式session共享
一.前言 为什么会出现session共享问题? 客户端与服务器交互时会产生唯一的sessionid用于标记用户,但是在分布式架构中,如果还是采用 session 的方式,用户发起请求,通过 nginx ...
- OpenCV 学习笔记(11)像素级别指针操作
//优化两图的连接处,使得拼接自然 void OptimizeSeam(Mat& img1, Mat& trans, Mat& dst) { int start = MIN(c ...
- BZOJ 2091: [Poi2010]The Minima Game 博弈dp
十分有趣的问题. 我们发现如果拿的话肯定要先拿一些大的. 所以我们可以先将所有数从小到大排序,令 $f[i]$ 表示拿完前 $i$ 小先手-后手的最大值. 则有转移:$f[i]=max(f[i-1], ...
- jmeter通过cookie获取图片验证码实现登录2
在登录时有一张图片验证码,需要获取验证码用于后续登录,见图 1.找到图片验证码接口写入jmeter 2.正则表达式提取cookie 3.Fiddler抓取登录成功的响应cookie,并设置成全局 4. ...
- 【Spring Boot】内嵌容器
Spring Boot内嵌容器支持Tomcat.Jetty.Undertow. tomcat容器 spring boot 的web应用开发必须使用spring-boot-starter-web,其默认 ...
- Ubuntu 19.04 安装docker
配置国内源: deb https://mirrors.ustc.edu.cn/ubuntu/ disco main restricted universe multiverse deb https:/ ...
- 《京东B2B业务架构演变》阅读笔记
一.京东 B2B 业务的定位 让各类型的企业都可以在京东的 B 平台上进行采购.建立采购关系. 京东 B2B 的用户群体主要分为 2 类: 一类是大 B 用户.另一类是小 B 用户.京东 B 平台需要 ...
- C++的static_cast、dynamic_cast和const_cast用法
static_cast.dynamic_cast和const_cast static_cast: 用法: static_cast < type-id > (expression) ...
- ASP.NET Core中的Startup
原文:链接 Startup.cs的作用: 配置各服务和HTTP请求管道. Startup类: ASP.NET Core中使用按惯例Startup命名的类Startup.cs: (可选)包括Config ...