博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第16/24周 SQL Server 2014中的基数计算
阅读量:5127 次
发布时间:2019-06-13

本文共 1430 字,大约阅读时间需要 4 分钟。

大家好,欢迎回到。上个星期我们讨论在SQL Server里基数计算过程里的一些问题。今天我们继续详细谈下,SQL Server 2014里引入的新基数计算。

新基数计算

SQL Server 2014里一个增强是新的基数计算。上个星期你已经学到老基数计算有些限制,会生成错误的估计,这会导致不好的执行计划表现。截至SQL Server 2012,你一直在使用自SQL Server 7.0引入的基数计算。

当然,几年来也有很多问题被修正,但默认它们都没启用的——你需要启用SQL Server里指定的跟踪标志才可以使这些修正生效。用那个方法微软确保它们不会引入所谓的计划质量退化(Plan-Quality Regressions)。因此新的基数计算在SQL Server里是自SQL Server 7.0以来在那个领域的第一个重大改变。

新基数计算的目的是提高你执行计划的质量。但是当然,还是有情况你会看到计划的退化。因此对于你的工作负荷和指定查询,你要仔细评估下新基数计算是否可用。因此SQL Server 2014再次引入不同的跟踪标志,使用它们你可以影响查询优化器如何工作。

为了使用新基数计算,你的数据库必须设置数据库兼容级别(Database Compatibility Level)为120。当你从先前SQL Server版本还原或附加数据库,你的兼容级别会改变——因此查询优化器就不会用到新的基数计算。使用下面的查询你可以很容易得出在你SQL Server实例里,每个数据库的兼容级别: 

1 SELECT name, compatibility_level FROM sys.databases2 3 GO

如果在你面前有一个执行计划,你可以对SELECT运算符查看下它的属性窗口,看下CardinalityEstimationModelVersion属性值。70表示使用老的基数计算,120表示使用新的基数计算。

另外,SQL Server 2014提供下列2个新的跟踪标记:

  • 2312
  • 9481

使用2312跟踪标记你可以指出,你想使用SQL Server 2014新的基数计算(例如,当你想使用低于120的兼容级别)。如果你想回到老的基数计算,就可以使用9481跟踪标记。你可以在实例级别,会话级别,也可以通过QUERYTRACEON查询提示来设置这些跟踪标记。我们来看下面的例子,使用2312跟踪标记来强制使用新的基数计算。

1 SELECT * FROM Person.Person2 OPTION (QUERYTRACEON 2312)3 GO

新基数计算提供很多改变,可以带来更好的估计,更有可能带来更好的执行计划。微软已经对基数计算的下列领域进行了重写:

  • 对于多列谓语的估计
  • 如何处理自增键列问题
  • 对JOIN谓语的估计
  • 通过扩展事件的故障排除

如果你想了解这些改变的更多细节,我强烈推荐读下Joe Sack写的白皮书。 也可以阅读下。

小结

在这1期的我给你概括介绍了SQL Server 2014引入的新基数计算。

这个月我们已经对SQL Server里的统计信息进行了非常深入的学习!在过去的4个星期里,我们看到它们对获得好性能的执行计划确实非常重要。从下个星期开始,第5个月的开始了,你会学习到。请继续关注!

围观PPT:

 

转载于:https://www.cnblogs.com/woodytu/p/4649101.html

你可能感兴趣的文章
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>
vi命令提示:Terminal too wide
查看>>
引用 移植Linux到s3c2410上
查看>>
MySQL5.7开多实例指导
查看>>
[51nod] 1199 Money out of Thin Air #线段树+DFS序
查看>>
Red and Black(poj-1979)
查看>>
分布式锁的思路以及实现分析
查看>>
腾讯元对象存储之文件删除
查看>>
jdk环境变量配置
查看>>
安装 Express
查看>>
包含列的索引:SQL Server索引的阶梯级别5
查看>>
myeclipse插件安装
查看>>
浙江省第十二届省赛 Beauty of Array(思维题)
查看>>
NOIP2013 提高组 Day1
查看>>
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>