当前位置:首页 > 系统运维 > 正文内容

详解SQL Server 2008迁移查询计划

a8116255311年前 (2015-10-04)系统运维11

大多数情况下,将数据库升级到 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 app *** sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APP *** 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

步骤 2:创建计划指南以强制实施计划

在计划指南中使用 XML 格式的查询计划(通过上述任一 *** 获取),将该查询计划作为字符串文字复制并粘贴在 sp_create_plan_guide 的 OPTION 子句中指定的 USE PLAN 查询提示中。

在 XML 计划本身中,先将计划中出现的引号 (') 通过第二个引号进行转义,然后再创建计划指南。 例如,对于包含 WHERE A.varchar = 'This is a string' 的计划,必须通过将该代码修改为 WHERE A.varchar = ''This is a string'' 来进行转义。

下面的示例为步骤 1 中收集的查询计划创建计划指南,并在 @hints 参数中插入此查询的 XML 显示计划。 为简洁起见,此示例中仅包括部分显示计划输出

EXECUTE sp_create_plan_guide
@name = N'Guide1',
@stmt = N'SELECT City, StateProvinceID, PostalCode

FROM Person.Address ORDER BY PostalCode DESC;',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION(USE PLAN N''<ShowPlanXML xmlns=''''

http://schemas.microsoft.com/sqlserver/2004/07/showplan''''
Version=''''0.5'''' Build=''''9.00.1116''''>
<BatchSequence><Batch><Statements><StmtSimple>

</StmtSimple></Statements></Batch>
</BatchSequence></ShowPlanXML>'')';
GO

步骤 3:验证计划指南是否适用于查询

再次运行查询,并检查生成的查询计划。 您应看到该计划与您在计划指南中指定的计划相符。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/22476.html

分享给朋友:

“详解SQL Server 2008迁移查询计划” 的相关文章

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

很多使用Windows 7系统的朋友都想小编反应,假如暂停使用电脑,鼠标会出现停顿现象,这是怎么回事呢 该怎么解决呢 下面就和小编一起去看下Windows 7 usb鼠标停顿的解决方法吧。 由于Windows 7系统中有一项USB选择性暂停造成的。这项设置主要为了节电,当他检测到用户没有对系统进行...

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

在某些电脑中,机器内部蜂鸣器与系统的声音输出方案是相关联的,这样一来会导致当系统输出声音时,即使电脑没有连接外部音响或耳机,也会通过内置蜂鸣器发出“嘟嘟哔哔”的声音。这个问题主要出现在Windows 7电脑中,假如你的电脑恰好遇到了这样的问题,可参考下面的方法来解决: 1、在桌面“计算机”图标上右...

微软今天正式停止对windows 7的主流支持

微软今天正式停止对windows 7的主流支持

北京时间1月13日消息,根据计划,微软将于2015年1月13日正式结束对Windows 7SP1的“主流支持”,而这也标志着“扩展支持”阶段的开始,这个阶段将于2020年1月14日结束。 2013年10月份,微软终止销售独立的Windows 7系统安装包,并要求制造商于2014年10月份停止生...

windows 7系统开机后出现黑屏提示Windows无法启动

windows 7系统开机后出现黑屏提示Windows无法启动

一些用户的Windows 7系统开机后出现黑屏,代码为 Windows无法启动: WindowsSystem32ConfigSystem”。这个问题该如何修复呢?现在小编就给大家分析一下吧。 其实这个代码的意思是引导文件丢失了,引导文件(NTLDR)一般存放于C盘根目录下,是一个具有隐藏和只读属性...

ubuntu14.04打开个几个应用窗口最小化后怎么切换呢?

ubuntu14.04打开个几个应用窗口最小化后怎么切换呢?

ubuntu14.04应用窗口列表在哪里?在ubuntu下打开个几个应用窗口最小化后怎么切换呢,应用窗口列表在哪里呢? 1、多打开几个chrome浏览器窗口。 2、然后都做最小化处理。 3、现在我们在桌面左边的面板上找到"左右两边有小白点"的chrome浏览器应用图标,这就是chr...

Ubuntu 14.04安装Wine以便使用Windows应用

Ubuntu 14.04安装Wine以便使用Windows应用

假如你想要在Ubuntu上使用Windows应用,就需要用到Wine了,除了支持Linux系统外,Wine还可运行于其他系统,是个非常使用的软件,下面小编就以Ubuntu 14.04为例,给大家介绍下Ubuntu 14.04安装Wine的步骤。 Ubuntu 14.04安装Wine的步骤 1...