SQL Server 2016 CTP2.3 的关键特性

SQL Server 2016 CTP2.3 的关键特性

 

数据库方面的增强

Row Level Security已经支持In-memory OLTP 表。用户现在可以对内存优化表实施row-level security策略。

另外SCHEMABINDING、predicate 函数和内联表值函数都要包含NATIVE_COMPILATION编译选项。

原生编译的存储过程(Natively Compiled Stored Procedure)。
https://www.cnblogs.com/lyhabc/p/6155429.html
与传统的存储过程相比,原生编译的存储过程在建立时就编译成机器代码了,而不是在第一次运行时。
语法上和之前版本的CREATE PROC语句的主要区别就是增加一个WITH NATIVE_COMPILATION选项以及DELAYED_DURABILITY = { OFF | ON }选项。前者不言自明,
后者由你决定是否以可能的数据丢失换取更快的写操作速度。基本原理是后台进程缓存transaction log,每集齐60KB才写入存储

使用NATIVE_COMPILATION编译选项的UDFs用户定义函数可以在本地模块和交换查询中使用,就像内存优化表和磁盘表。

没有使用NATIVE_COMPILATION编译选项的UDFs用户定义函数只能使用交换查询。

In-memory OLTP已经支持下面的内置安全函数,增加了对RLS的支持

  • IS_MEMBER({‘group’ | ‘role’})
  • IS_ROLEMEMBER (‘role’ [, ‘database_principal’])
  • IS_SRVROLEMEMBER (‘role’ [, ‘login’])
  • ORIGINAL_LOGIN()
  • SESSION_USER
  • CURRENT_USER
  • SUSER_ID([‘login’])
  • SUSER_SID([‘login’] [, Param2])
  • SUSER_SNAME([server_user_sid])
  • SYSTEM_USER
  • SUSER_NAME
  • USER
  • USER_ID([‘user’])
  • USER_NAME([id])
  • CONTEXT_INFO()

 

另一个核心引擎扩展提升就是:基于NUMA节点或CPU的动态分区线程安全内存对象

这一改进将会使在NUMA硬件上能应付更高的并行负载。线程安全内存对象(type CmemThread)会根据负载特征和争用情况针对NUMA节点或CPU进行分区动态提升。

在SQL2012和SQL2014,需要打开跟踪标志TF 8048 来提升CPU分区里的分区节点里的内存对象。这个改进不但不需要跟踪标志,并且可以根据CPU争用情况动态调节分区。

model数据库已经改变新建数据库策略,新建数据库的初始数据文件大小和日志大小是8MB,增量都为64MB,为了对齐1个PFS (a range of 8088 pages = 64MB))

https://blogs.msdn.microsoft.com/sql_server_team/new-defaults-for-model-and-user-databases-in-sql-server-2016/

 

CTP2.3包含了对In-memory数据仓库(列式存储 columnStore)的性能优化,NCCI现在可以经由触发器来创建,也可以允许使用CDC和更改跟踪(Change Tracking)。

为了更好的分析列存储索引,在sys.dm_db_column_store_row_group_physical_stats这个DMV里添加了三个列:transition_to_compressed_state,transition_to_compressed_state_desc,has_vertipaq_optimization

Nonclustered Columnstore Index (NCCI)
Clustered Columnstore Index (CCI)

 

 

SQL Server Analysis Service (SSAS)的增强

DAX查询性能提升,优化Tabular 引擎。‘

DirectQuery 增强,现在DirectQuery 可以用更好的性能来生成更简单的查询。

DAX对变量的支持,变量可以存储一个表达式的结果作为命名变量,因此可以传递一个参数到其他的measure 表达式。

一旦变量表达式的结果值被计算,值不会被改变,即使这个变量引用了另一个表达式。

 

SQL Server Reporting Services (SSRS)的增强

Report Builder已经包含了modern 主题。

对于最新的浏览器,报表渲染已经支持HTML5 标准。

 

 

SQL Server Integration Service (SSIS)的增强

oData v4 协议支持,SSIS 错误列支持,高级日志级别支持。

之前SSIS目录只提供了四种日志级别:None, Basic, Performance ,Verbose

新的高级日志级别移除了之前不够灵活性的日志级别

新机制:当events 触发的时候可以收集event 上下文

新的ssis_logreader 角色,允许访问所有视图相关的SSISDB 操作日志

新的日志自定义级别定义日志和events 收集

允许event 上下文的收集,例如变量值,任务属性,连接字符串

 

 

Master Data Service(MDS)的增强

添加了三个特性

Many to many 的继承层次

商业规则管理的Excel 插件

合并冲突

 

查询执行的增强

增强 memory grant usage(内存授予使用率)诊断

增加了下面的扩展事件XEvents 来更好地诊断内存授予使用和问题。

Showplan xml 增加了每个线程和迭代器的memory grant usage扩展(在RunTimeCountersPerThread节点里)

query_memory_grant_blocking
query_memory_grant_resource_semaphores
query_memory_grant_usage (details on ideal vs granted vs used memory)



DBCC CHECKDB增强

1、验证持久化的计算列和过滤索引

2、当验证一个有上千分区的大表的时候,对DBCC CHECKDB做了性能提升,速度会加快

 

 

 

SQL Server 2016 ->> T-SQL新特性

https://www.cnblogs.com/jenrrychen/p/6083657.html?utm_source=itdadao&utm_medium=referral

 



运维特性
1、分区表支持直接truncate分区数据
假设TruncatePartitionTest 表是分区表,一共有10个分区
(1)truncate 分区号1到分区号6,一共6个分区的数据
TRUNCATE TABLE dbo.TruncatePartitionTest
WITH (PARTITIONS(1 TO 6)
(2)truncate 分区号1的数据
TRUNCATE TABLE dbo.TruncatePartitionTest
WITH (PARTITIONS(1));
(3)truncate 分区号1和分区号3的数据
TRUNCATE TABLE dbo.TruncatePartitionTest
WITH (PARTITIONS(1,3));
特性缺点:因为是直接truncate分区数据,如果truncate 出错无法反悔,不像以前交换分区再truncate中间表数据,交换分区出错可以再回切回去原表,中间表的数据也可以多保留几天,以免清理多了数据无法反悔


性能特性
1、增强的in-memory 特性,通过内存优化表提高30倍事务处理速度,比起基于磁盘的关系数据库和实时分析处理速度超过100倍
特性缺点:内存要足够大,比表实际占用磁盘空间要大,表启动会很慢,要把所有数据load入内存,表才可用,有丢数据风险
2、Query Store,能够捕获当前和历史执行计划和执行指标,让您可以非常容易的监控和排查查询性能问题
特性用途:有点像测试里面的回归测试,开启Query Store之后,会存储数据库中的语句所用的执行计划,当发现某个语句突然变慢,可以查看这个语句是否使用了别的执行计划而不是之前一直在用的执行计划导致性能变差
因为保存了语句使用过的执行计划,可以利用以前的执行计划做回归测试,检验SQL Server是否使用了错误的执行计划


安全特性
1、行级数据安全/行级加密,没用过,不做评价
2、动态数据掩码
特性用途:可以在建表时或建表后,对表中某些字段进行混淆,实际不修改表中数据,估计是在引擎层做了一些处理,比如邮箱、电话等字段,建表后再对某字段加数据掩码对性能没有影响,瞬间完成的,可以随时对字段去掉掩码,只对赋予了db_datareader角色用户(生产环境中的只读用户)或对表只有select权限的用户生效
3、新增Temporal Tables功能,记录了表历史上任何时间点的数据改动,系统维护对生产表的一个历史记录表
特性用途:审计数据改动或者误操作的情况下进行数据恢复,类似于chang tracking、CDC之类数据改动历史记录
特性缺点:对生产表有要求,而且操作繁琐,
(1)生产表必须有主键
(2)生产表必须要 存在两个记录有效时间范围的字段
(3)只能记录update语句和delete语句
(4)跟chang tracking一样,分区表要关闭Temporal Tables才能切换分区
(5)业务不能更新主键,否则将会导致生产表和历史表的记录错乱
(6)生产表不能有计算字段
(7)不能对生产表使用truncate table 和drop table,除非关掉Temporal Tables功能


数据修复特性
1、 DBCC CHECKDB增强,对DBCC CHECKDB做了性能提升,速度会加快,可以验证持久化计算列和过滤索引,这次增强还包括DBCC CHECKDB对一个非常大的分区数量达到上千个的分区表的性能增强

 

高可用特性
1、AlwaysOn 增强,更多的同步副本,以前版本只能2个同步副本,现在支持3个同步副本
2、AlwaysOn 增强,不需要Windows域环境就可以搭建AlwaysOn,要使用Windows 2016系统


开发特性
1、增加DROP IF EXISTS 语法,DROP <TABLE|PROCEDURE|VIEW|FUNCTION|TRIGGER> IF EXISTS <name>
特性用途:简化IF EXISTS(SELECT * FROM sys.objects WHERE name = '' AND .....)
2、原生JSON支持,增加了JSON数据类型和一些JSON处理函数
3、两个新的字符串函数 STRING_SPLIT和 STRING_ESCAPE,前者是个表函数,输入text和分隔符就可以分割字符串变成表返回,后者是为了帮助json格式的数据转义特殊字符,比如斜杠
特性用途:不需要再像以前要自己写分割函数
4、从SQL2016开始,SQL Server管理器SSMS要单独下载安装,安装包不提供SSMS

 

posted @ 2015-09-04 22:01  桦仔  阅读(1196)  评论(0编辑  收藏  举报