我是 .Net 开发人员。我即将进行数据库升级(从 SQL Server 2005 到 SQL Server 2012)。数据库团队将处理迁移。但是我看到论坛帖子说迁移后,即使数据量和用户数量几乎相同,查询执行的时间也太长了。一个主要原因是execution plan
这些服务器之间的变化。参考:从SQL Server 2005迁移到2012后的性能问题
因此,我正在考虑从我当前的生产服务器本身存储实际执行计划的可能性。在 Oracle 中,我可以找到一个基线特性:-
在 SQL Server 中,实现此目的的通常做法是什么?
注意:我提到了 Creating a baseline for SQL Server,但它没有说明任何关于基线的内容execution plan
您只需从计划缓存中提取最相关查询的执行计划。我会查询sys.dm_exec_query_stats,并加入sys.dm_exec_query_plan和sys.dm_exec_sql_text以分别获取计划和查询文本。在sys.dm_exec_query_stats中,您可以提取具有最高 IO、CPU、执行计数等的查询——任何对您来说最重要的。
展望未来,SQL Server 2016 引入了查询存储:
使用查询存储监视性能
请参阅此示例查询以获取这些执行计划。现在按 CPU 消耗排序:
将 SQL 2005 迁移到 2012 的一些其他技巧: