目录
背景
介绍
identity_cache
自适应查询处理的改进
自动调整
图数据库
始终可用(跨数据库访问)
DTA的改进
新的字符串成员(函数)
SQL 2017中的SSRS(Reporting Services)新增功能
SQL 2017中SSIS(集成服务)的新增功能
SQL 2017中的SSAS(Analysis Services)新增功能
机器学习
Linux支援
SQL Server 2017(一般可用性版本)于2017年10月发布(真的吗?我们只是想了解SQL 2016的功能,好吧,开个玩笑:))SQL 2017分部分发布,其第一部分即SQL 2017 CTP 1.0( SQL版本14.0.1.246)于2016年11月发布(如何在2016年发布2017版本?)。到目前为止,SQL 2017推出了10个发行版,当前发行版是SQL 2017 Release GA(SQL版本14.0.1000.169)(请参见此处),以获取2017年10月可用的版本。
(**有关SQL 2016的新增功能,请参见此处。)
介绍此版本的SQL主要连接到Linux,并将SQL的功能带到Linux。简而言之,现在您可以在Linux上安装SQL 2017(这是一个很好的举措),此外SQL也可以在基于Linux的Docker容器中使用。在此构建中,SQL为您提供了开发语言选择,您可以在内部部署或基于云进行开发。
在此版本中,SQL还在其各个部分(如数据库引擎,集成服务,主数据服务,分析服务等)中提高了性能、可伸缩性和功能。在本文中,我们将逐一介绍它们。
以下是一些数据库引擎的新功能。
identity_cache如果服务器意外关闭或发生任何故障转移,甚至切换到某些辅助服务器,此选项还可以帮助您避免标识列的值出现差异。该选项与“ALTER DATABASE SCOPED CONFIGURATION ”语句一起使用。该语句用于启用数据库配置设置。语法如下:
ALTER DATABASE SCOPED CONFIGURATION
{
{ [ FOR SECONDARY] SET }
}
| CLEAR PROCEDURE_CACHE
| SET < set_options >
[;]
< set_options > ::=
{
MAXDOP = { | PRIMARY}
| LEGACY_CARDINALITY_ESTIMATION = { ON | OFF | PRIMARY}
| PARAMETER_SNIFFING = { ON | OFF | PRIMARY}
| QUERY_OPTIMIZER_HOTFIXES = { ON | OFF | PRIMARY}
| IDENTITY_CACHE = { ON | OFF }
}
自适应查询处理的改进
您是否要提高查询执行性能?然后,此功能将为您提供帮助。SQL Server和Azure SQL数据库支持此功能。
您知道SQL查询执行的正常优化流程吗?如果否,请检查以下步骤:
- 最初,查询优化器为给定查询计算所有可行的查询执行计划。
- 然后,它获得最低的成本/最快的计划。
- 最后,优化器将选择最低的估计计划来执行查询,然后开始执行。
现在,在此过程中,存在一些缺点:
- 如果最低的估计执行计划可能出错,那么它将影响性能。
- 如果没有足够的内存分配给处理,则会导致溢出到磁盘。
- 如果分配的内存大小不正确,则会导致内存浪费。
要解决所有这些问题,您可以使用此SQL 2017功能。
1.批处理模式内存授予反馈
此反馈(技术)重新计算(实际上)执行计划所需的内存,并从缓存中授予它
2.批处理模式自适应联接
为了更快地执行计划,它具有哈希联接和嵌套循环联接,在扫描执行计划的第一个输入后,它决定使用哪个联接以最佳速度产生输出。
3.交错执行
在交错执行中,如果遇到多语句表值函数,则在优化执行计划中需要“暂停 ”。然后,它只计算完美基数,然后恢复优化。
自动调整顾名思义,此功能可检查出查询性能中的问题,找出问题并使用建议的解决方案进行修复。此功能提供了两种自动调整技术:
- 自动校正(计划)
- 自动管理(索引)
自动校正(计划)
该计划在SQL 2017 DB中可用,它基本上会扫描有问题的计划(明智的执行),然后使用推荐的解决方案进行修复
自动管理(索引)
SQL 2017 Azure DB中提供了此功能,此处它基本上标识并更正了索引的顺序。删除的索引和添加的索引。
图数据库图数据库功能是SQL 2017中新引入的。
什么是图数据库?
基本上,它是边和节点的集合,其中边是节点之间的关系,而节点只是一个实体,因此单个边可以连接多个节点。Graph db的行为就像关系数据库一样,在以下情况下可以使用Graph db:
- 如果您具有分层格式的数据,并且想要为一个节点保存多个父级
- 如果需要检查和分析相互关联的关系和数据
- 如果您有许多关系
此处,关键字MATCH用于查询图表并对数据进行排序,仅需单个查询,用户便可以查询图和关系数据,有关更多详细信息,请参见 [ here ]。
始终可用(跨数据库访问)借助此功能,现在可以针对不同的SQL实例进行跨数据库事务(同一SQL实例可以连接到不同的实例)。它还支持数据库分布式事务。[SQL 2016还支持跨数据库访问,但仅适用于同一SQL Server实例。]
DTA的改进在SQL 2017中,数据库调整顾问(DTA)的性能得到了改进,其中包含调整顾问的其他选项。
**对于那些不知道什么是数据库调优顾问的人:
它是一个数据库引擎,它检查查询(已处理的查询),然后以可以改善查询性能的方式提出(可能是通过更改数据库结构(例如,索引,键))。有几种使用方式:
- 使用GUI(界面)
- 使用命令实用程序
如果您想了解更多,可以在这里查看。
新的字符串成员(函数)SQL 2017年引入了一些新string功能,如TRANSLATE,CONCAT_WS,STRING_AGG,TRIM。让我们一一看一下。
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 ) [ ]
::=
WITHIN GROUP ( ORDER BY [ 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中的SSRS(Reporting Services)新增功能- 从现在开始,SQL Server安装程序中没有可用的SSRS安装程序,您需要从下载中心[ 这里 ] 下载它。
- 现在,查询设计器已支持DAX,现在可以针对SSAS(分析服务)创建本机DAX查询,该查询属于最新版的SQL工具和报表生成器
- SSRS现在支持RESTful API,支持OpenAPI兼容,可以找到该API
- 现在,您可以在评论中添加附件。
- 您可以在报告中添加评论。
- Reporting Services Web门户的改进(此功能已在SQL 2016中提供)
- 现在,您可以在Linux上执行SSIS包,此外,现在可以在Linux上加载、提取和转换数据
- 横向扩展功能允许以高性能的程序包执行复杂地集成到多台机器,甚至可以执行多个程序包执行请求。在横向扩展母版和横向扩展工作者的帮助下,进行横向扩展管理的所有操作,有关更多详细信息,请单击此处
- Microsoft DAX和CRM Online在线现在获得ODataConnection管理器和支持oDataSource
- SQL 2017中引入了新的Get Data接口,类似于MS Excel,power BI,它还提供了数据转换和数据混搭功能,您可以使用查询生成器和M表达式来实现
- SSAS的Tabular 模式在SQL 2012中引入,现在在SQL 2017中变得更加强大
- SQL 2017提供了新的“编码提示 ”功能,该功能用于优化大型内存表格数据
- 电源PIVOT的性能改进
有关SQL 2017中SSAS的更多信息,请在此处切换。
机器学习我们知道SQL 2016现在支持R服务,它现在已重命名为SQL Server Machine Learning服务。借助于此,您可以使用SQL Server轻松使用R或Python脚本。
在此新功能中,Python可以在存储过程中运行,甚至您可以使用SQL Server远程执行它,这对Python开发人员来说确实有帮助。
目前,Linux不支持此功能,我们需要等待下一个版本发布。
为了以智能和强大的方式使用机器学习,SQL使用以下解决方案。
- revoscalepy
- microsoftml
revoscalepy是新的库,它为高性能算法、计算和远程上下文提供基础,它基本上是基于RevoScaleR(它是R服务的包)。
microsoftml 是支持机器语言算法的Microsoft R服务器软件包,Microsoft开发了此库用于内部机器学习,但是多年来,它已得到改进并支持快速数据流、大文本转换等。
Linux支援基本上,此构建的主要目标是在Linux上发布产品,此SQL版本的名称为“在Linux和Windows上的SQL 2017”,以下是“在Linux上的SQL”的一些关键功能:
- 核心数据库引擎功能
- 支持IPV6
- NFS支持
- Linux上的AD身份验证
- 支持加密
- 可以在Linux上安装SSIS软件包
- 配置工具(命令行)可用MSSQL-conf
- 无缝和无人值守安装
- 用于Visual Studio代码的SQL(Linux上已提供VS Code)
- 跨平台脚本生成器
要了解有关Linux上SQL的更多信息,请在此处切换。
参考文献
- MSDN和Microsoft网站
最后
有关SQL Server的讨论和学习很多,我们将在本文的下一个版本中继续此过程,然后继续学习。