如何找出你性能最差的SQL Server查询


这篇文章将为大家详细讲解有关如何找出你性能最差的SQL Server查询,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。SQL Server的一个优点是它本身能回答几乎所有你的问题,因为SQL Server在各个DMV和DMF里存储了很多故障排除信息。另一方面这也是个缺点,因为你必须知道各个DMV/DMF,还有如何把它们解释和关联在一起。至于你的最差性能SQL Server查询的一个最重要的DMV是sys.dm_exec_query_stats。对于每个缓存的执行计划,SQL Server存储了这个执行计划在运行时的详细信息。另外SQL Server告诉你这个查询消耗的CPU时间和I/O读取。当我对性能很差的SQL Server进行故障排除时,这是我经常使用的基本DMV之一。当你对sys.dm_exec_query_stats进行一个简单的SELECT查询,你会得到有很多不同列的一个非常广泛的记录集——有大量的不同数字。我们来仔细看下它们。对于每个缓存的执行计划,SQL Server给你下列度量的信息:Worker Time (columns …_工作者时间)Physical Reads (columns …_物理读)Logical Writes (columns …_逻辑写)Logical Reads (columns …_逻辑读)SQLCLR Time (columns …_公共语言运行时间)Elapsed Time (columns …_运行时间)Row Count (columns …_行数)对于每个度量,你得到4个集合信息的不同列:总值(Total value)上个值(Last value)最小值(Min value)最大值(Max value)手上有了这些信息找出你性能最差的查询是什么。但首先你要知道什么是你的性能瓶颈——CPU还是I/O限制?如果你的性能瓶颈是CPU限制,你可以用下列查询问SQL Server根据CPU消耗列出前5个最差性能的查询:– Worst performing CPU bound queries
SELECT TOP 5
st.text,
qp.query_plan,
qs.*
FROM sys.dm_exec_qu 香港云主机ery_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY total_worker_time DESC
GO你可以看到这里我使用了简单的ORDER BY total_worker_time DESC来返回CPU密集的查询。另外也通过调用sys.dm_exec_sql_textsys.dm_exec_query_plan DMF来抓取SQL语句和执行计划本身。下列代码显示如何依据I/O消耗来找出你性能最差的查询。– Worst performing I/O bound queries
SELECT TOP 5
st.text,
qp.query_plan,
qs.*
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY total_logical_reads DESC
GO当在你面前有SQL语句和执行计划时,你可以进一步分析查询找出是什么引起高CPU或I/O消耗。关于如何找出你性能最差的SQL Server查询就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关推荐: Linux ssh免秘钥登陆怎么实现

这篇文章主要介绍“Linux ssh免秘钥登陆怎么实现”,在日常操作中,相信很多人在Linux ssh免秘钥登陆怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux ssh免秘钥登陆怎么实现”的疑惑有所帮助!接下来,…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 10/06 17:35
Next 10/06 18:46

相关推荐