SQL Server 2005 中的批编译、重新编译和计划缓存问题(1)
2007-05-13 09:24:59 来源:WEB开发网核心提示: 三、比较 SQL Server 2000 和 SQL Server 2005 中的重新编译在 SQL Server 2000 中重新编译批处理时,将重新编译批处理中的所有语句,SQL Server 2005 中的批编译、重新编译和计划缓存问题(1)(3),而不仅仅是触发重新编译的语句,SQ
三、比较 SQL Server 2000 和 SQL Server 2005 中的重新编译
在 SQL Server 2000 中重新编译批处理时,将重新编译批处理中的所有语句,而不仅仅是触发重新编译的语句。SQL Server 2005 在该行为上做了改进,只编译导致重新编译的语句,而不是整个批处理。与 SQL Server 2000 相比,这一“语句级重新编译”功能将改善 SQL Server 2005 的重新编译行为。尤其,在批处理重新编译过程中,SQL Server 2005 所用的 CPU 时间和内存更少,而得到的编译块也更少。
语句级重新编译有一个优点显而易见:不必再只是为了减少较长的存储过程的重新编译罚点,而将其分成多个较短的存储过程。
四、计划缓存
在处理重新编译问题之前,本文将用较大的篇幅来讨论查询计划缓存的相关及重要的主题。缓存计划以便重用。如果未缓存查询计划,重用机会将为零。这种计划将在每次执行时被编译,从而导致性能低下。只有在极少数情况下,才不需要进行缓存。本文将在后面指出这些情况。
SQL Server 可缓存许多批处理类型的查询计划。以下列举了这些类型。对于每种类型,我们都说明了重用计划的必要条件。请注意,这些条件不一定充分。稍后,读者将在本文中看到完整的相关内容。
1.
特殊查询。特殊查询是一种包含 SELECT、INSERT、UPDATE 或 DELETE 语句的批处理。SQL Server 要求两个特殊查询的文本完全匹配。文本必须在大小写和空格上都匹配。例如,下列这两个查询不共享相同的查询计划。(出现在本白皮书中的所有 T-SQL 代码段都在 SQL Server 2005 的 AdventureWorks 数据库中。)
SELECT ProductID
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING AVG(OrderQty) > 5
ORDER BY ProductID
SELECT ProductID
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING AVG(OrderQty) > 5
ORDER BY ProductId
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接