SQL Server 2016的数据库范围内的配置详解

SQL Server 2016真的让人眼前一亮。几天前微软就提供了RCO(候选发布版)版本的下载。我已经围观了一圈RCO版本,其中一个最拽的功能是数据库范围内的配置(Database Scoped Configuration),在今天的文章里我想谈谈它。补充几句:装好之后,居然发现没有SSMS,崩溃中,原来是在向导中就有独立的安装程序,好吧!

这配色,真是低调有内涵。

另外,如过你的电脑已经安装了就【Microsoft Visual Studio 2010 Shell(独立)Redistributable Package 】,卸载掉吧,好像会影响SSMS的安装。

启动画面。

登录界面。

数据库范围内的配置

我们知道,SQL Server有很多配置选项只能在SQL Server实例级别进行全局配置。例如MAXDOP选项(当你不使用资源调控器时)。另外微软提供我们大量不同的跟踪标记(Trace Flags)可以修改SQL Server的内部行为。微软现在最终宣布这些领域,SQL Server 2016会为我们提供现存的配置选项,在数据库级别就可以配置,而不使用特定的跟踪标记(Trace Flags)。

我们来详细看下它们。使用早期参数估计(Legacy Cardinality Estimation )选项,你可以控制SQL Server是否使用老的还是SQL Server 2014里引入的新的参数估计。这是个新的配置选项,以前可以通过2312和9481跟踪标记来实现。

MAXDOP选项就不用解释了!终于你可以在数据库级别控制MAXDOP!这真的太拽了!尤其对于Sharepoint。我来看看SharePoint的后续版本会不会支持数据库级别的MAXDOP...对了,我已经很期待在数据库级别1的MAXDOP的数据库,来回避可恶的CXPACKET等待。

参数探查(Parameter Sniffing)!微软称它为特色,我叫它为BUG,通常来说参数探查是个好事,因为查询优化器基于你首次提供的输入值来编译查询计划。这很棒,但缺点是生成的查询计划对提供输入参数敏感,且只对那些参数进行优化。如果你后来用不同的参数值重用缓存的查询计划,就会影响你的性能。

只用这个配置选项,现在你可以控制查询优化器是否使用参数探查。它可以用来替换4136跟踪标记。如果你禁用参数探查,当你使用OPTIMIZE FOR UNKNOWN查询提示时,SQL Server内部使用同样的行为——它不会给你优化的性能,但会给你一致的性能……

最后你有查询优化修补程序(Query Optimizer Fixes configuration option)。这个配置选项启用或停用一些特定的查询修补程序,它用来代替跟踪标记4199。

小结

我真的很喜欢数据库范围内的配置!尤其是MAXDOP选项。对于Sharepoint来说,它是个巨大的优势,如果我们只针对运行Sharepoint的特定数据库使用1的MAXDOP,剩下的一切会比配置实例的MAXDOP好很多。

对于这些新的配置选项,你觉得如何?喜欢它们么?请尽情留言。

时间: 2024-12-22 15:50:51

SQL Server 2016的数据库范围内的配置详解的相关文章

SQL Server 树形表非循环递归查询的实例详解_MsSql

很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例. --通过子节点查询父节点 WITH TREE AS( SELECT * FROM Areas WHERE id = 6 -- 要查询的子 id UNION ALL SELECT Areas.* FROM Areas, TREE WHERE TREE.PId = Areas.Id ) SELECT Area FROM TREE --通过父节点查询子节点 WIT

SQL Server 树形表非循环递归查询的实例详解

很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例. --通过子节点查询父节点 WITH TREE AS( SELECT * FROM Areas WHERE id = 6 -- 要查询的子 id UNION ALL SELECT Areas.* FROM Areas, TREE WHERE TREE.PId = Areas.Id ) SELECT Area FROM TREE --通过父节点查询子节点 WIT

SQL Server CROSS APPLY和OUTER APPLY的应用详解_mssql2005

SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能.新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表达式都可以,APPLY必选先逻辑地计算左表达式.这种计算输入的逻辑顺序允许吧右表达式关联到左表表达式. APPLY有两种形式,一个是OUTER APPLY,一个是CROSS APPLY,区别在于指定OUTER,意味着结果集中将包含使右表表达式为空的左表表达式中的行,而指定CROSS,则相反,结果集中不包含使右表

SQL Server实现自动循环归档分区数据脚本详解

概述 大家应该都知道在很多业务场景下我们需要对一些记录量比较大的表进行分区,同时为了保证性能需要将一些旧的数据进行归档.在分区表很多的情况下如果每一次归档都需要人工干预的话工程量是比较大的而且也容易发生纰漏.接下来分享一个自己编写的自动归档分区数据的脚本,原理是分区表和归档表使用相同的分区方案,循环利用当前的文件组,话不多说了,来一起看看详细的介绍吧. 一.创建测试数据 ----01创建文件组 USE [master] GO ALTER DATABASE [chenmh] ADD FILEGRO

使用SQL Server判断文件是否存在后再删除(详解)_MsSql

在SQL Server中可以使用系统内部存储过程xp_fileexist判断文件是否存在,如果存在再使用xp_cmdshell删除文件.xp_fileexist除了可以判断文件是否存在外,还可以判断文件夹是否存在,下面是下使用这两个的示例. 删除文件存储过程 ALTER proc [dbo].[delFile_P] ( @path nvarchar(200)) as declare @result int exec master.dbo.xp_fileexist @path,@result ou

MySQL数据库服务器集群配置详解介绍

一.介绍 这篇文档旨在介绍如何安装配置基于2台服务器的MySQL数据库集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务器作为管理节点,但这台服务器可以在集群启动完成后关闭.同时需要注意的是 并不推荐在集群启动完成后关闭作为管理节点的服务器.尽管理论上可以建立基于只有2台服务器的MySQL集群,但是这样的架构,一旦一台服务器宕机之后集 群就无法继续正常工作了,这样也就失去了集群的意义了.出于这个原因

SQL Server Alwayson创建代理作业的注意事项详解

前言 Always On 可用性组活动辅助功能包括支持在辅助副本上执行备份操作. 备份操作可能会给 I/O 和 CPU 带来很大的压力(使用备份压缩). 将备份负荷转移到已同步或正在同步的辅助副本后,您可以使用承载第一层工作负荷的主副本的服务器实例上的资源,您可以创建主数据库的任何类型的备份. 也可以创建辅助数据库的日志备份和仅复制完整备份.下面话不多说了,来一起看看详细的介绍吧. 一.概念 1.辅助副本上支持的备份类型 BACKUP DATABASE :在辅助副仅支持数据库.文件或文件组的仅复

SQL SERVER FOR XML PATH 行转列实例详解

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主. 一.FOR XML PATH 简单介绍 那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:        接下来我们来看应用FOR XML PATH的查询结果语句如下:  代码如下 复制代码 SELECT * FROM @hob

深入SQL SERVER合并相关操作Union,Except,Intersect的详解_MsSql

对于结果集有几个处理,值得讲解一下1. 并集(union,Union all)这个很简单,是把两个结果集水平合并起来.例如SELECT * FROM AUNIONSELECT * FROM B[注意]union会删除重复值,也就是说A和B中重复的行,最终只会出现一次,而union all则会保留重复行.2. 差异(Except)就是两个集中不重复的部分.例如SELECT * FROM AEXCEPTSELECT * FROM B这个的意思是,凡是不出现在B表中的A表的行. 3. 交集(inter