WEB开发网
开发学院数据库MSSQL Server SQL Server 2005 中的批编译、重新编译和计划缓存... 阅读

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

上一页  1 2 3 4 5 6 7 8  下一页

Tags:SQL Server 编译

编辑录入:coldstar [复制链接] [打 印]
赞助商链接