目录
背景
介绍
专业开发者版本
图形增强
UTF-8支持
错误讯息
语言支援
空间参考标识符
对大数据的支持
加速数据库恢复[ADR]
在线操作
始终可用
增强安全性
始终使用安全区域加密
数据分类
证书管理
性能
查询强制计划
减少重新编译
顺序键优化
内存数据库支持
混合缓冲池
OLTP对数据库快照的支持
对TempDB的支持
广泛的平台支持
监督
sys.dm_os_wait_stats
lightweight_query_profiling
自定义捕获策略
dm_exec_query_plan_stats
智能查询处理
行模式内存授予反馈
标量UDF
表变量延迟编译
近似查询处理
内存设置选项
最小内存
最大内存
SQL机器学习的新特征
SSRS的新特征(报告服务)
Microsoft SQL Server数据库1.0的第一个版本是在1989年开发的,并且确实一直持续到现在,每个改进的版本都引入了更多的灵活性和可用性。SQL 2017于2017年发布,支持Linux(Redhat,Ubuntu,Linux服务器)和Docker引擎,这是SQL团队迈出的重要一步。从SQL Server 2016开始,SQL仅支持64位处理器,现在他们又开始使用这个最新版本了。
(**有关SQL 2017的新增特征,请参见此处。)
介绍现在,SQL已于2019年11月发布了新版本(15.0),此版本的SQL Server主要用于专注于Hadoop,Apache Spark等分布式文件系统之间的数据交换,与大数据的连接,提高的安全性、更好的性能、可扩展性、智能性。您可以在Windows,Linux或Docker环境上安装SQL 2019。让我们逐一介绍其创新和合规性特征。
专业开发者版本此版本为开发人员提供了新的良好特征,例如图形的改进,UTF-8支持,空间数据类型的更改,允许开发人员使用他们选择的任何语言来检索和访问数据的新框架,让我们对其进行跟踪。
图形增强- 如果您曾经处理过图数据库(SQL 2017中引入了图数据库概念,则可以在此处进行检查),那么您必须了解边缘约束,该约束仅用于保持图数据库边缘表上的数据完整性。SQL 2019中的边缘约束概念有所变化,现在我们可以定义边缘约束的级联删除操作。
- 现在,Graph表也支持表和索引分区的概念。
- Graph数据库引入了一个新函数,以在图中给定的两个节点之间找到最快的路径,这可能对节点遍历很有用,新的函数名称为SHORTEST_PATH,与SELECT语句中的MATCH函数一起使用。
如今,数据库需要以不同的语言提供更多支持,我们可以将其视为现实世界的要求。在此版本的SQL中,数据库现在支持UTF-8字符编码,现在它很好地支持对数据库、表或列级别的排序规则Polybase和Always Encrypted的导入和导出编码。char 和varchar datatype允许使用UTF-8,因此在排序中,您现在可以使用UTF-8,请参见下面的示例,它将消除您的疑虑。
假设我有一个带有排序规则LATIN1_GENERAL_100_CI_AS_SC的表。 在这里,AS表示可以在此表中存储对重音符号敏感的数据(对重音符号的含义是对重音字符的支持,例如对'a'和'ấ'的支持。以上排序规则可以更改为LATIN1_GENERAL_100_CI_AS_SC_UTF8。
错误讯息当我们将数据从一个表加载到另一个表或将一个数据库加载到另一个数据库时,则可能由于datatype或数据大小限制不匹配而导致失败的机会,并且如果需要传输大量数据,则跟踪此错误可能会很耗时。在这种情况下,SQL 2019引入了'VERBOSE_TRUNCATION_WARNINGS'属性,可以将其设置为ON或OFF。如果将其设置ON为数据截断错误,我们的传统消息将被新的具有错误代码(2628)的高级描述性消息覆盖。错误消息如下:
'String or binary data would be truncated in table 'BLAH', column 'BLAH'.
Truncated value: 'BLAH'.
在这里,您还将获得错误消息的详细信息,包括表名,列名和截断值,我认为这将是SQL推荐的开发人员特征之一。
如果将attribute标志设置为OFF,则将获得如下所示的常规旧消息:
'String or binary data would be truncated.
语言支援
SQL Server 2019现在支持Java语言SDK,基本上是开放源代码对Java SDK的扩展支持。此版本的SQL还支持不同的Java datatype,如float,java.sql.date,java.math,java..sql. timestamp。
SQL Server还附带了语言扩展包,该包提供了一种执行外部代码的方法,此处代码的执行是独立执行的,因此核心引擎不会受到此操作的影响。此扩展可确保安全性,因为代码将在数据所在的位置执行,因此它将忽略在网络外部获取数据的过程并强制执行安全性约束。
空间参考标识符你知道空间datatype吗?datatype的数据用于存储有关物理位置和地理对象的信息,这些对象可以是道路,河流,道路或树木(世界上任何物体)。在SQL 2019中,空间参照系发生了变化,基本上增加了两个新的空间参照:根据澳大利亚GDA2020 [Ref:MSDN ] ,地理2D为7843,地理3D为7844 。
对大数据的支持SQL Server 2019引入了大数据集群,它将为使用大数据,大数据集和AI提供良好的支持。
使用SQL 2019,您现在可以使用Spark处理、交易大数据。
它可以轻松地将大数据与关系数据连接起来,并可以查询外部数据源。
SQL用户使用HDFS容器来管理和存储BigData。
加速数据库恢复[ADR]SQL Server 2019具备最快的数据库恢复特征,如果存在一些长时间运行的事务或数据库故障,并且如果该数据库的ADR(加速数据库恢复)已打开,则它将以光速回滚该过程,同时有助于取消长时间挂起的数据库进程。
语法如下:
ALTER DATABASE SET ACCELERATED_DATABASE_RECOVERY = ON;
在上面的语法中,db_name是我们必须将加速数据库恢复设置为ON的数据库的名称。
SQL Server 2019允许用户在数据库或基础表繁忙运行时创建、重建、更改或删除聚簇索引,这意味着一个用户可以在重建索引的同时,另一用户可以在数据库或基础表上触发更新查询相同的数据库或数据库表(不是一个很大的特征),在早期版本的SQL Server中,我们需要在脱机模式下重建索引,此外,它将使用数据对数据库及其表进行排他锁将阻塞整个表,请参见下面的语法:
ALTER INDEX index_name
ON table_name
REBUILD WITH (ONLINE = ON);
在上面的语法,index_name是我们需要创建,修改或删除的索引的名称,该索引的标志ONLINE为ON。
数据库服务器的第一个业务需求是随时可用。为了无缝地运行业务,数据库需要始终保持可用状态并且永不停机,为了维持这种状态,我们应该拥有一个数据库副本,当主数据库发生故障时,该副本始终处于可用状态。为了考虑这一关键要求,在SQL的早期版本(2017)中,SQL 2019将其同时副本的最大数量扩展到5个,其中最大数量为3个。这里,一个副本是主副本,另一个是辅助副本。
SQL 2019中引入了另一项附加特征,无论连接字符串如何,客户端应用程序都可以连接到主副本。
增强安全性
SQL已在较早版本(2017)中发布了始终加密特征,在此版本中,始终加密带有安全区域。我们知道,总是使用加密特征来通过加密为数据提供安全性。但是此特征有一些限制,例如:
- 由于数据也在SQL Server中保持加密状态,因此很难对加密数据执行其他操作(相等比较是对加密数据唯一允许的操作)。
- 要对此加密数据执行其他操作,用户需要将数据移出数据库,然后再解密。
为了克服这些限制,引入了安全区域,其中数据在安全区域中转换为纯文本,并且所有其他操作都是可能的。安全区域就像SQL处理敏感数据的安全场所一样。
要对数据执行其他操作,我们需要在SQL外部获取它们并解密。
数据分类这也是SQL 2019的一个不错的特征,其中我们可以根据业务部门或主题(例如医学数据,健康数据,财务数据等)对数据进行分类,它可以方便地根据不同的数据集应用不同的安全标准。简而言之,如果我们分别对数据进行识别和分类,则很容易根据数据的性质应用不同的安全策略。
ADD SENSITIVITY CLASSIFICATION 是用于将数据分类分配给不同列的属性,请参见以下示例:
ADD SENSITIVITY CLASSIFICATION TO
dbo.column1, dbo.column2
WITH ( LABEL='Confidential Data', INFORMATION_TYPE='Business' )
在以上代码段中:
Column1和Column2是我们应用了数据分类标签和信息类型的列。
证书管理SSL / TSL证书可以在SQL中使用,以维护和增强安全性,但是在早期版本中,我们需要运行一些脚本和手动命令来使用这些证书,但是在当前版本中,证书管理是SQL配置管理的一部分,它提供了您可以轻松安装证书。
性能每个版本的SQL都有一些性能提高的提示和技巧,但是此版本的SQL增加了性能和执行手段的智能提示,它将为瓶颈和缓慢的事务提供可预测的性能步骤。SQL 2019引入了一些与智能性能相关的特征,例如查询强制计划,减少重新编译,顺序键优化。让我们追踪它们。
查询强制计划在此特征中,查询存储现在具有驱动静态和快速转发查询和游标的查询执行计划的能力,这可以借助sp_query_store_force_plan或使用查询存储报告来实现(存在于SQL Server Management Studio中)。
减少重新编译SQL Server引入了一项新特征,该特征可以减少在多个作用域中使用临时表的工作量的重新编译,在SQL的早期版本中,当对temp表执行某些DML语句时,如果该表是在作用域之外创建的,则DML语句将每次使用此特征被重新编译,即使temp表超出范围创建,也无需重新编译SQL语句。
顺序键优化如果您的应用程序具有高并发性,并且您的insert查询中有索引,那么此特征将是您的最佳选择。当存在高并发情况时,此特征可帮助SQL引擎提高精度,同时插入主键或日期时间数据。
内存数据库支持SQL 2019构建并由多个内存数据库支持,这些数据库支持数据库工作负载的可伸缩性和性能。此外,它还引入了OLTP以实现更好的执行(OLTP:在线事务处理),SQL Server发布了以下特征,作为内存数据库支持的一部分。
混合缓冲池此特征旨在访问持久性存储器并从数据库(存储在持久性存储器中)中取出数据页文件。这可以通过SQL Server数据库引擎来完成。在早期版本中,SQL引擎确实将数据存储在缓冲池中,此特征SQL Server不会将数据复制到缓冲池中,而是直接从持久性设备访问数据页。
OLTP对数据库快照的支持在此版本中,SQL引擎为数据库快照提供了在线事务支持,数据库快照只不过是数据库的静态和只读视图,快照在创建快照时便与数据库事务保持一致。快照的好处是,可以从产生不同的数据中查询它,该数据可以进一步用于MIS或报表,快照是只读的,不必担心数据丢失。
对TempDB的支持遇到TempDB工作负载时,瓶颈和可伸缩性问题始终存在。为了解决此问题,SQL附带了内存优化的TempDB元数据,这有助于消除瓶颈并提高可伸缩性,基本上,这里使用系统表来管理此操作,其中临时表元数据已移至内存优化的表中。
广泛的平台支持从SQL 2017开始,它确实支持Linux平台,现在在以下特征方面进行了很多改进:
- Linux系统上的复制特征
- 改进了对MSDTC(Microsoft分布式事务处理协调器)的支持
- 第三方广告支持
- Polybase非Hadoop支持
- Change Data Capture(CDC)现在在Linux中支持SQL
我们需要对SQL中的每件事物操作和特征进行监督。如果发现任何问题或缺乏性能,则我们需要转向SQL监控技术,SQL 2019引入了一些其他特征,这些特征在监控方面有所改进。
sys.dm_os_wait_statsSQL 2019中引入了新的等待,这将帮助我们返回所有已执行操作的wait信息。您可以使用此报告进行性能诊断。
lightweight_query_profiling此属性有助于我们监视SQL查询,在该SQL查询中提供配置基础结构,这些基础结构将负责执行工作负载以及如何推送资源。因此,这不过是一种性能测量技术。
自定义捕获策略此策略是在查询存储中引入的,基本上是查询存储策略设置,用于微调特定服务器的数据收集。我们可以启用或禁用此策略。我们可以将此政策与ALTER DATABASE SET选项配合使用。
dm_exec_query_plan_stats这是Transact SQL的新特征,用于为上次缓存的查询计划返回上次已知的执行计划。
智能查询处理SQL 2019中引入了此特征。当关键数据库工作负载并行运行时,智能查询处理将起作用,IQP(智能查询处理)降低了风险并提高了工作负载的性能,而对现有系统的影响较小,引入了以下特征来支持IQP 。
行模式内存授予反馈此特征用于调整内存并为行和批处理模式运算符授予大小,可以将此特征设置为ON或OFF,这与ALTER DATABASE语句一起使用,请参见以下语法:
ALTER DATABASE SCOPED CONFIGURATION SET ROW_MODE_MEMORY_GRANT_FEEDBACK = OFF;
标量UDF
标量UDF只是一个多语句标量函数。此函数仅将一个值作为输入,并生成汇总值作为输出。SQL在此标量UDF上引入了内嵌特征,该特征将转换关系表达式中的所有函数,然后将它们调用SQL查询,这将导致工作负载的性能提高,但是要使用此特征,我们需要使用数据库兼容性第150级。
表变量延迟编译如果查询引用表变量,则此特征将有助于提高性能和计划质量。如果查询引用了一个表变量,则在首次执行之前,编译过程有所不同,基本上在此过程中,它将获取实际的表变量行计数,然后此计数将进一步用于下游计划操作。
近似查询处理这是一个有趣的函数,它返回一个近似值而不是一个精确值,举一个例子,如果我的表中有几十亿个地理数据,我想获得DISTINCT行的COUNT,然后在这里更快地处理查询,APPROX_COUNT_DISTINCT将工作更快并返回近似结果,因为响应在这里至关重要,此函数将返回非null值。
内存设置选项在SQL Server 2019中,现在我们可以:
最小内存设置最小服务器内存(这是SQL引擎的一个较低的内存限制),它应该小于0。此内存将由缓冲池和缓存使用。
最大内存设置服务器最大内存(SQL引擎的最大内存限制),默认值为2048 TB。
这是数据库引擎配置的“内存”页面的一部分。
SQL机器学习的新特征SQL机器学习服务中引入了以下特征:
- 为了确保机器学习服务的高可用性,我们可以在Windows Server中配置故障转移群集。
- 现在,您可以使用新参数'sp_execute_external_script'对每个分区执行外部脚本。
SQL报告服务中引入了以下特征:
- 现在可以通过报表构建器或数据集工具与Power BI dataset连接。
- 工具提示可用于指示报告的每个元素的文本,也称为AltText特征。
- 如果您正在管理Azure Web应用程序代理的安全性,则从现在开始,您可以使用Azure Active Directory代理支持特征,该特征将允许对应用程序的安全访问。
- 您可以对URL使用RegeX模式,也可以自定义标题。
- 已发布新报告,该报告与早期版本的SQL(如2016、2017)兼容。
本文只是SQL 2019中的概述,可以详细说明每个要点。在本文的下一个版本中,我们可能会尝试涵盖它,在此之前,您可以喜欢这篇文章。