加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

详解SQL Server 2008迁移查询计划

发布时间:2016-09-16 00:35:05 所属栏目:MsSql教程 来源:站长网
导读:大多数情况下,将数据库升级到 SQL Server 2008 会提高查询性能。 但是,如果您具有已针对性能进行过认真优化的任务关键查询,在升级前最好为每个查询创建一个
大多数情况下,将数据库升级到 SQL Server 2008 会提高查询性能。 但是,如果您具有已针对性能进行过认真优化的任务关键查询,在升级前最好为每个查询创建一个计划指南,以保留这些查询的查询计划。 如果在升级后,查询优化器为一个或多个查询选择了效率较低的计划,则可以启用这些计划指南并强制查询优化器使用升级前的计划。

若要在升级前创建计划指南,请按照以下步骤执行操作:

通过使用 sp_create_plan_guide 存储过程并在 USE PLAN 查询提示中指定查询计划来记录每个任务关键查询的当前计划。

验证计划指南是否适用于此查询

将数据库升级到 SQL Server 2008。

计划保留在升级后的数据库中的计划指南中,如果在升级后计划的性能出现退步,则这些计划将用作后备计划。

建议您在升级后不要启用计划指南,因为由于统计信息进行了更新,您可能会错过新版本中的更好计划或者重新编译所带来的益处。

如果在升级后选择了效率较低的计划,可以激活所有计划指南或部分计划指南以取代新计划。

示例

下面的示例显示如何通过创建计划指南来为查询记录升级前的计划。

步骤 1:收集计划

计划指南中记录的查询计划必须采用 XML 格式。 可通过以下方式生成 XML 格式的查询计划:

SET SHOWPLAN_XML 
SET STATISTICS XML

查询 sys.dm_exec_query_plan 动态管理函数的 query_plan 列。

SQL Server Profiler Showplan XML、Showplan XML Statistics Profile 和 Showplan XML For Query Compile 事件类。

下面的示例通过查询动态管理视图收集语句

SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC;

的查询计划。

USE AdventureWorks;
GO
SELECT query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, DEFAULT, DEFAULT) AS qp
WHERE st.text LIKE N'SELECT City, StateProvinceID,

PostalCode FROM Person.Address ORDER BY PostalCode DESC;%';

GO

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读