怎么查找执行比较慢的sql语句-DBA给的建议

  • 1.使用sql动态视图

如下:

select top 10 b.text,a.total_worker_time,a.total_logical_reads,a.total_elapsed_time,execution_count
from sys.dm_exec_query_stats a
CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) as b
order by total_worker_time/execution_count desc 

查看联机帮助文档视图:sys.dm_exec_query_stats可得到所有字段含义,主要有

total_worker_time:总的cpu消耗时间

total_logical_reads:逻辑读次数

total_elapsed_time:耗时

execution_count:执行次数。

total_worker_time/execution_count desc 表示每次执行需要消耗多少cpu,按照倒叙排序,找到最消耗cpu的sql语句。text

 

上面只可以查找SqlServer清空缓存之后的数据,如果SqlServer重启过,或者SqlServer由于内存不足导致执行计划被释放。那么是无法找到的。

  • 2.使用攻击profiler。新建跟踪:

勾选以下事件。第一个是存储过程,第二个是sql语句

筛选器选择超过100秒的为慢sql(单位为毫秒),点击确定。如下:

 



感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted @   cctext  阅读(1690)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示