SQL Server 2016引入了非常棒的新特性叫“数据库级别配置”,该功能可以改善和简化配置SQL Server的工作。数据库管理员现在可以使用T-SQL语句在单个数据库级别控制各种数据库配置设置。目前,该功能在SQL Server 2016和Azure SQL 数据库 V12中已支持。微软公司的一篇博文提到该功能时表示,该功能尤其适合在Azure SQL数据库中使用,因为以前在云平台环境中有一些设置选项根本不能在数据库级别配置。
早期的SQL Server版本中,数据库管理员只能在SQL Server实例级别使用相关跟踪标记启用配置设置,包括MAXDOP, CLEAR PROCEDURE……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
![TechTarget微信公众号二维码](/wp-content/uploads/res/images/spriteimg/ttweixin.jpg)
TechTarget
官方微博
![TechTarget中国官方微博二维码](/wp-content/uploads/res/images/spriteimg/ttweibo.jpg)
TechTarget中国
SQL Server 2016引入了非常棒的新特性叫“数据库级别配置”,该功能可以改善和简化配置SQL Server的工作。数据库管理员现在可以使用T-SQL语句在单个数据库级别控制各种数据库配置设置。目前,该功能在SQL Server 2016和Azure SQL 数据库 V12中已支持。微软公司的一篇博文提到该功能时表示,该功能尤其适合在Azure SQL数据库中使用,因为以前在云平台环境中有一些设置选项根本不能在数据库级别配置。
早期的SQL Server版本中,数据库管理员只能在SQL Server实例级别使用相关跟踪标记启用配置设置,包括MAXDOP, CLEAR PROCEDURE CACHE, PARAMETER SNIFFING 和 LEGACY CARDINALITY ESTIMATION。而现在,从SQL Server 2016开始,你可以直接使用T-SQL脚本做这些配置了。
ALTER DATABASE SCOPED CONFIGURATION语句支持用户在同一个SQL Server实例下基于应用需求为每个数据库分别设置配置。它还支持对SQL Server AlwaysOn可用组灾备软件中的主数据库和从数据库副本做设置,根据它们的预期负载进行配置。此外,你可以控制哪个数据库用户或用户组可以设置这些配置项,使用“ALTER ANY DATABASE SCOPE CONFIGURATION”控制权限功能。
SQL Server 2016支持的数据库域级配置选项
下面我们详细看看在SQL Server 2016和Azure SQL数据库 V12中,有哪些数据库级别的配置选项可用。我们先从MAXDOP开始了解。你可以使用数据库域级配置设置MAXDOP参数为指定数值,控制针对某个数据库可运行的并行数据库查询最大数量。微软公司官方博客表示,该选项可以使你避免在服务器级别使用“SP_CONFIGURE”选项,它可以在整个SQL Server层面设置,但是在Azure SQL 数据库中不支持。
如果你使用AlwaysOn可用组,你可以为联机事务处理主数据库和从数据库设置不同的MAXDOP值,可以用来运行报表系统。下面是配置脚本样例:
图1:为主数据库和从数据库设置MAXDOP值的样例T-SQL脚本
“CLEAR PROCEDURE CACHE”语句可以清理指定用户数据库存储过程缓存,而不影响相同SQL Server实例下的其它数据库。下面是使用脚本清除主数据库存储过程缓存的样例:
图2:清理主数据库存储过程缓存的样例T-SQL脚本
基数估计预测数据库查询可能返回的行数,可以用于优化查询。SQL Server 2016的“LEGACY_CARDINALITY_ESTIMATION”关键字用来配置使用技术估计,该功能是从SQL Server 2012以及更早的数据库版本引入的,而不是从2014以后的版本引入的。传统的估计方案在某些情况下可以帮助避免查询性能下降,可以通过使用跟踪标记来完成。不过,下面我们将展示通过T-SQL代码直接实现的方式:
图3:对主数据库和辅助数据库启用“LEGACY_CARDINALITY_ESTIMATION”的T-SQL脚本样例
“PARAMETER_SNIFFING”可以启用或禁用数据库引擎编译和优化查询时的输入参数和变量值。如果你决定完全禁用这个选项,SQL Server查询优化器将用统计数据代替来做优化。你以前可能使用“跟踪标记4136”或者“OPTIMIZE FOR UNKNOWN”查询提示实现过类似结果。
图4:在数据库级别禁用参数探测
“QUERY_OPTIMIZER_HOTFIXES”参数支持在数据库级别启用或禁用查询优化器补丁。查询优化器补丁是bug修复包,微软公司发布这些包是为了处理一些与查询优化器有关的问题。因为微软公司在SQL Server 2012和2014之间对查询优化器做了修改,那么不让过期补丁干扰当前查询优化器就是很重要的事。“QUERY_OPTIMIZER_HOTFIXES”支持按数据库选择是否使用最新优化器补丁,不用考虑数据库的兼容性级别。补丁默认通常是关闭状态,以前你必须使用“跟踪标记4199”来启用或关闭。现在你可以使用下面的方式来做了:
图5:在数据库级别使用T-SQL脚本启用“QUERY_OPTIMIZER_HOTFIXES”样例
SQL Server 2016还引入了新的动态管理视图(DMV)sys.database_scoped_configurations,它支持查看当前数据库域配置信息,帮助监控和管理数据库性能。使用DMV,你还可以获取AlwaysOn可用组的主数据库和辅助数据库配置信息。要访问该视图,我们可以使用以下命令:
图6:使用sys.database_scoped_configurations视图的T-SQL脚本样例
翻译
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux版SQL Server即将发布 Windows数据库增加HA特性
新发布的预告版SQL Server软件有一系列社区技术预览版本,其中有一些通用的可用性功能尚未支持,预计将会在今年发布。