随笔分类 - 03.执行计划
Execution Plans
摘要:首先我们来看一个带排序的查询,点击工具栏的显示包含实际的执行计划。1 SELECT * FROM AdventureWorks2008R2.Person.Person WHERE FirstName LIKE 'w%' ORDER BY 1从执行计划里可以看出,SELECT运算符包含了内存授予(Me...
阅读全文
摘要:在这一期的性能调优培训里,我想详细讲解下SQL Server里的并行执行计划(Parallel Execution Plans) 。执行一个有并行执行计划的查询,意味着SQL Server从执行计划里进行必须的运算符需要使用多线程。首先我会介绍下并行执行计划里最常用的运算符,然后我们来分析下SQL ...
阅读全文
摘要:在上一篇文章里,我讨论了使用临时表如何引起SQL Server里的重编译。在文章最后我提到,今天这篇文章我会聚焦表变量(Table Variables)的更多信息,它可以避免重编译的昂贵开销。我们来详细分析下。表变量(Table Variables)表变量总局限于提交到SQL Server的批处理语...
阅读全文
摘要:这篇文章我想谈下SQL Server里一个非常重要的性能调优话题:重编译(Recompilations) 。当你执行非常简单的存储过程(使用临时表)时,就会发生。今天我想奠定SQL Server里重编译的基础,它们为什么会发生,下篇文章我会向你展示通过不同方式重写你的存储过程避免重编译。什么是重编译...
阅读全文
摘要:今天我想谈下性能调优培训里的重编译(Recompilations)。当你执行一个查询,SQL Server里另一个变动使你执行计划的剩余部分无效,就会发生重编译。在那个情况下SQL Server需要保证你执行计划的准确性,重编译就会被触发。重编译会给你的SQL Server带来额外的CPU开销。什么...
阅读全文
摘要:在参数嗅探(Parameter Sniffing)(1/2)里,我介绍了SQL Server里参数嗅探的基本概念和背后的问题。如你所见,当缓存的计划被SQL Server盲目重用时,会带来严重的性能问题。今天我会向你展示下如何处理这个问题,即使用不同的技术克服它。索引(Index)上次我们讨论造成参...
阅读全文
摘要:这个问题会在参数话的SQL语句(例如存储过程)与SQL Server里的计划缓存机制结合的时候会出现。这个文章分为2个部分,第1部分会介绍下参数嗅探(Parameter Sniffing)的概况,第2部分我们介绍下如何解决这个问题。什么是参数嗅探(Parameter Sniffing)在SQL Se...
阅读全文
摘要:在这一期的性能调优培训里,我想详细谈下SQL Server里计划缓存及其副作用。在上一周你已经学到,每个提交给SQL Server的逻辑查询会编译成物理执行计划。那个执行计划然后会被缓存,即被称为计划缓存,用作后期的重用。首先我们来看下即席SQL语句(adhoc SQL statements,对应的...
阅读全文
摘要:欢迎回到性能调优培训。今天标志着第3个月的培训开始了,这个月我们全部学习SQL Server里的执行计划。执行计划在SQL Server里是你需要理解的,最重要的概念,对它做出有效的调整,就可以提高查询性能。因此今天我会大致介绍下SQL Server里的执行计划,还有你如何读懂它们。为什么会有执行计...
阅读全文