SQL 2017——新功能

目录

背景

介绍

identity_cache

自适应查询处理的改进

自动调整

图数据库

始终可用(跨数据库访问)

DTA的改进

新的字符串成员(函数)

SQL 2017中的SSRS(Reporting Services)新增功能

SQL 2017中SSIS(集成服务)的新增功能

SQL 2017中的SSAS(Analysis Services)新增功能

机器学习

Linux支援


背景

SQL Server 2017(一般可用性版本)于201710月发布(真的吗?我们只是想了解SQL 2016的功能,好吧,开个玩笑:)SQL 2017分部分发布,其第一部分即SQL 2017 CTP 1.0 SQL版本14.0.1.246)于201611月发布(如何在2016年发布2017版本?)。到目前为止,SQL 2017推出了10个发行版,当前发行版是SQL 2017 Release GASQL版本14.0.1000.169)(参见此处),以获取201710月可用的版本。

**有关SQL 2016的新增功能,请参见此处。

介绍

此版本的SQL主要连接到Linux,并将SQL的功能带到Linux。简而言之,现在您可以在Linux上安装SQL 2017(这是一个很好的举措),此外SQL也可以在基于LinuxDocker容器中使用。在此构建中,SQL为您提供了开发语言选择,您可以在内部部署或基于云进行开发。

在此版本中,SQL还在其各个部分(如数据库引擎,集成服务,主数据服务,分析服务等)中提高了性能、可伸缩性和功能。在本文中,我们将逐一介绍它们。

以下是一些数据库引擎的新功能。

identity_cache

如果服务器意外关闭或发生任何故障转移,甚至切换到某些辅助服务器,此选项还可以帮助您避免标识列的值出现差异。该选项与ALTER DATABASE SCOPED CONFIGURATION ”语句一起使用。该语句用于启用数据库配置设置。语法如下:

ALTER DATABASE SCOPED CONFIGURATION
{      
     {  [ FOR SECONDARY] SET <set_options>  }  
}
| CLEAR PROCEDURE_CACHE
| SET < set_options >
[;]  

< set_options > ::=  
{
    MAXDOP = { <value> | PRIMARY}  
    | LEGACY_CARDINALITY_ESTIMATION = { ON | OFF | PRIMARY}  
    | PARAMETER_SNIFFING = { ON | OFF | PRIMARY}  
    | QUERY_OPTIMIZER_HOTFIXES = { ON | OFF | PRIMARY}
    | IDENTITY_CACHE = { ON | OFF }
}

自适应查询处理的改进

您是否要提高查询执行性能?然后,此功能将为您提供帮助。SQL ServerAzure SQL数据库支持此功能。

您知道SQL查询执行的正常优化流程吗?如果否,请检查以下步骤:

  1. 最初,查询优化器为给定查询计算所有可行的查询执行计划。
  2. 然后,它获得最低的成本/最快的计划。
  3. 最后,优化器将选择最低的估计计划来执行查询,然后开始执行。

现在,在此过程中,存在一些缺点:

  1. 如果最低的估计执行计划可能出错,那么它将影响性能。
  2. 如果没有足够的内存分配给处理,则会导致溢出到磁盘。
  3. 如果分配的内存大小不正确,则会导致内存浪费。

要解决所有这些问题,您可以使用此SQL 2017功能。

1.批处理模式内存授予反馈

此反馈(技术)重新计算(实际上)执行计划所需的内存,并从缓存中授予它

2.批处理模式自适应联接

为了更快地执行计划,它具有哈希联接和嵌套循环联接,在扫描执行计划的第一个输入后,它决定使用哪个联接以最佳速度产生输出。

3.交错执行

在交错执行中,如果遇到多语句表值函数,则在优化执行计划中需要暂停 ”。然后,它只计算完美基数,然后恢复优化。

自动调整

顾名思义,此功能可检查出查询性能中的问题,找出问题并使用建议的解决方案进行修复。此功能提供了两种自动调整技术:

  1. 自动校正(计划)
  2. 自动管理(索引)

自动校正(计划)

该计划在SQL 2017 DB中可用,它基本上会扫描有问题的计划(明智的执行),然后使用推荐的解决方案进行修复

自动管理(索引)

SQL 2017 Azure DB中提供了此功能,此处它基本上标识并更正了索引的顺序。删除的索引和添加的索引。

图数据库

图数据库功能是SQL 2017中新引入的。

什么是图数据库?

基本上,它是边和节点的集合,其中边是节点之间的关系,而节点只是一个实体,因此单个边可以连接多个节点。Graph db的行为就像关系数据库一样,在以下情况下可以使用Graph db

  1. 如果您具有分层格式的数据,并且想要为一个节点保存多个父级
  2. 如果需要检查和分析相互关联的关系和数据
  3. 如果您有许多关系

此处,关键字MATCH用于查询图表并对数据进行排序,仅需单个查询,用户便可以查询图和关系数据,有关更多详细信息,请参见here ]

始终可用(跨数据库访问)

借助此功能,现在可以针对不同的SQL实例进行跨数据库事务(同一SQL实例可以连接到不同的实例)。它还支持数据库分布式事务。[SQL 2016还支持跨数据库访问,但仅适用于同一SQL Server实例。]

DTA的改进

SQL 2017中,数据库调整顾问DTA)的性能得到了改进,其中包含调整顾问的其他选项。

**对于那些不知道什么是数据库调优顾问的人

它是一个数据库引擎,它检查查询(已处理的查询),然后以可以改善查询性能的方式提出(可能是通过更改数据库结构(例如,索引,键))。有几种使用方式:

  • 使用GUI(界面)
  • 使用命令实用程序

如果您想了解更多,可以在这里查看

新的字符串成员(函数)

SQL 2017年引入了一些新string功能,如TRANSLATECONCAT_WSSTRING_AGGTRIM。让我们一一看一下。

TRANSLATE

基本上需要一个 string作为输入,然后用一些新字符转换字符,请参见以下语法:

TRANSLATE ( inputString, characters, translations)

上面的'characters'语法长度应与'translations'相同,否则上面的函数将返回错误。

例如

TRANSLATE ('6*{10+10}/[6-4]','[]{}','()()')

上面示例的输出将是 6*(10+10)/(6-4)

因此,我们可以看到大括号中括号被转换为圆括号。

[此功能的作用与REPLACE相同,但比REPLACE起使用更简单,如果我们希望使用REPLACE,则需要如下编写,这很难理解:

SELECT REPLACE(REPLACE(REPLACE(REPLACE('6*{10+10}/[6-4]','{','('), '}', ')'), '[', '('), ']', ')');

CONCATE_WS

它只是用指定的输入分隔符连接所有输入参数。参见以下语法:

CONCAT_WS ( separator, argument1, argument1 [, argumentN]… )

它通过在分隔符的帮助下将所有参数连接在一起来产生单个string参数,它至少需要2个参数才能产生输出,否则将引发错误:

例如:

SELECT CONCAT_WS(',','Count numers', 'one', 'two', 'three', 'four' ) AS counter;

上面语法的输出将是:

one, two, three, four

您也可以使用数据库列名来代替硬编码的string

TRIM

(最终:)SQL 2017引入了此新功能。它仅用作C#修剪函数,从string中删除所有开头和结尾的空格。语法如下:

SELECT TRIM('     trim me    ') AS result;

上面语法的输出将是:

trim me

此功能不会删除string之间的空格。

STRING_AGG

它将借助分隔符将string值连接起来,并且不会在string末尾添加分隔符。输入可以是VARCHAR,也可以NVARCHAR,选择在WITHIN GROUP子句的帮助下指定结果的顺序。

请参见以下语法:

STRING_AGG ( expression, separator ) [ <order_clause> ]

<order_clause> ::=  
    WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )

查看以下示例:

SELECT city,
    STRING_AGG (name, ';') WITHIN GROUP (ORDER BY name ASC) AS names
FROM Students GROUP BY city;

在上面的示例中,我们串联了所有用分号(;)分隔的名称,以WITHIN GROUP帮助我们使它order by。输出将显示如下:

名字

City 1

name1; name2; name3; name4; name5;

City 2

name1; name2; name3; name4;

SQL 2017中的SSRSReporting Services)新增功能

  • 从现在开始,SQL Server安装程序中没有可用的SSRS安装程序,您需要从下载中心这里 ] 下载它。
  • 现在,查询设计器已支持DAX,现在可以针对SSAS(分析服务)创建本机DAX查询,该查询属于最新版的SQL工具和报表生成器
  • SSRS现在支持RESTful API,支持OpenAPI兼容,可以找到该API
  • 现在,您可以在评论中添加附件。
  • 您可以在报告中添加评论。
  • Reporting Services Web门户的改进(此功能已在SQL 2016中提供)

SQL 2017SSIS(集成服务)的新增功能

  • 现在,您可以在Linux上执行SSIS包,此外,现在可以在Linux上加载、提取和转换数据
  • 横向扩展功能允许以高性能的程序包执行复杂地集成到多台机器,甚至可以执行多个程序包执行请求。在横向扩展母版和横向扩展工作者的帮助下,进行横向扩展管理的所有操作,有关更多详细信息,请单击此处
  • Microsoft DAXCRM Online在线现在获得ODataConnection管理器和支持oDataSource

SQL 2017中的SSASAnalysis Services)新增功能

  • SQL 2017中引入了新的Get Data接口,类似于MS Excelpower BI,它还提供了数据转换和数据混搭功能,您可以使用查询生成器和M表达式来实现
  • SSASTabular 模式在SQL 2012中引入,现在在SQL 2017中变得更加强大
  • SQL 2017提供了新的编码提示 ”功能,该功能用于优化大型内存表格数据
  • 电源PIVOT的性能改进

有关SQL 2017SSAS的更多信息,请在此处切换。

机器学习

我们知道SQL 2016现在支持R服务,它现在已重命名为SQL Server Machine Learning服务。借助于此,您可以使用SQL Server轻松使用RPython脚本。

在此新功能中,Python可以在存储过程中运行,甚至您可以使用SQL Server远程执行它,这对Python开发人员来说确实有帮助。

目前,Linux不支持此功能,我们需要等待下一个版本发布。

为了以智能和强大的方式使用机器学习,SQL使用以下解决方案。

  1. revoscalepy
  2. microsoftml

revoscalepy是新的库,它为高性能算法、计算和远程上下文提供基础,它基本上是基于RevoScaleR(它是R服务的包)。

microsoftml 是支持机器语言算法的Microsoft R服务器软件包,Microsoft开发了此库用于内部机器学习,但是多年来,它已得到改进并支持快速数据流、大文本转换等。

Linux支援

基本上,此构建的主要目标是在Linux上发布产品,此SQL版本的名称为LinuxWindows上的SQL 2017”,以下是Linux上的SQL”的一些关键功能:

  • 核心数据库引擎功能
  • 支持IPV6
  • NFS支持
  • Linux上的AD身份验证
  • 支持加密
  • 可以在Linux上安装SSIS软件包
  • 配置工具(命令行)可用MSSQL-conf
  • 无缝和无人值守安装
  • 用于Visual Studio代码的SQLLinux上已提供VS Code
  • 跨平台脚本生成器

要了解有关LinuxSQL的更多信息,请在此处切换。

参考文献

最后

有关SQL Server的讨论和学习很多,我们将在本文的下一个版本中继续此过程,然后继续学习。

发布了69 篇原创文章 · 获赞 133 · 访问量 44万+

猜你喜欢

转载自blog.csdn.net/mzl87/article/details/104136096