AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 1765
Accepted
Gaius
Gaius
Asked: 2011-03-17 03:43:45 +0800 CST2011-03-17 03:43:45 +0800 CST 2011-03-17 03:43:45 +0800 CST

在 Server Management Studio 中显示查询计划

  • 772

另一个 SQL 服务器问题:我有一个简单的查询,它为我提供了自重置计数器以来 CPU 最密集的 SQL:

select top 10  
    sum(qs.total_worker_time) as total_cpu_time,  
    sum(qs.execution_count) as total_execution_count, 

    qs.plan_handle, st.text  
from  
    sys.dm_exec_query_stats qs 
cross apply sys.dm_exec_sql_text(qs.plan_handle) as st
group by qs.plan_handle, st.text 
order by sum(qs.total_worker_time) desc

问题1:究竟是什么plan_handle?它似乎不是计划的散列,就像在 Oracle 中一样。我问是因为我希望能够检测到语句计划发生变化的情况。

问题 2:一旦有了 plan_handle,我就会对实际的计划感兴趣。所以我这样做,例如:

select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)

在 query_plan 列中,我得到一个链接,当我单击该链接时会显示一个 XML 文档。如果我将它作为whatever.sqlplan 保存在磁盘上,我可以在Windows 中双击它,它会在Management Studio 中正确显示。肯定有办法避免这一步?!

问题 3:有没有办法将 XML 转换回文本格式,就像过去的 SET SHOWPLAN_TEXT 一样?我希望能够以图形方式查看它们,但也希望以某种有意义的方式自动区分它们。

谢谢!

sql-server-2005 performance
  • 2 2 个回答
  • 3065 Views

2 个回答

  • Voted
  1. SQLRockstar
    2011-03-17T04:13:04+08:002011-03-17T04:13:04+08:00

    A1:plan_handle 是一组语句或批处理的哈希。

    A2:不,dm_exec_query_plan 以 XML 格式返回查询计划,因此您需要单击它才能看到图表。

    A3。尝试这个:

    SELECT query_plan 
    FROM sys.dm_exec_text_query_plan (0x06000100A27E7C1FA821B10600,0,-1);
    
    • 9
  2. Best Answer
    Jeff
    2011-03-20T16:56:02+08:002011-03-20T16:56:02+08:00

    我在 Wrox Press 的 SQL Server 2008 Internals and Troubleshooting 一书中找到了以下提示:

    如果您使用连接到 SQL 2005 服务器的 SQL 2008 SSMS,当您单击 XML 查询计划时,它将自动为您加载图形查询计划。

    我使用同一本书中的以下查询验证了它是否有效:

    select session_id, text, query_plan
    from sys.dm_exec_requests
    cross apply sys.dm_exec_sql_text(sql_handle)
    cross apply sys.dm_exec_query_plan(plan_handle)
    

    此外,如果您还没有看过它,请查看 SQL Sentry 的免费计划资源管理器。您必须首先将 XML 作为 .sqlplan 保存到磁盘,但它提供了一个更易于使用的 SQL 执行计划视图。希望有一天有人会想出一个可视化执行计划差异工具。:D

    • 7

相关问题

  • 您如何针对繁重的 InnoDB 工作负载调整 MySQL?

  • 如何确定是否需要或需要索引

  • 从 SQL Server 2008 降级到 2005

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve