[转]sql server性能分析--执行sql次数和逻辑次数

SQLServer性能分析技巧
本文介绍了一种通过SQL Server系统性能分析的方法,包括清除缓存并执行特定查询来定位执行频繁且消耗资源较多的SQL语句,帮助快速定位性能瓶颈。
 目前在做一个项目优化时,想通过数据库层分析sql server系统性能,查了一下网上代码,修改了一下标题和DMVs代码,以下代码可以用来分析系统运行一段时间后,那些语句是系统忙的sql语句。做为参考。

   另类使用:

     一次在分析一个对账功能时,查看系统代码,看了半天,写得太不规范,又不写注释,看不明白。最后用了下面一个小技巧,和大家一起分享:

 就是在测量功能时,先以下命令清除sql server的缓存:

 

dbcc freeProcCache
 

在点击某个按钮,执行完后,在执行下面语句,就可以知道系统运行什么sql和多少次,其主要慢的语句是那些了。  


     
SELECT creation_time N ' 语句编译时间 '
,last_execution_time N
' 上次执行时间 '
,total_physical_reads N
' 物理读取总次数 '
,total_logical_reads
/ execution_count N ' 每次逻辑读次数 '
,total_logical_reads N
' 逻辑读取总次数 '
,total_logical_writes N
' 逻辑写入总次数 '
, execution_count N
' 执行次数 '
, total_worker_time
/ 1000 N ' 所用的CPU总时间ms '
, total_elapsed_time
/ 1000 N ' 总花费时间ms '
, (total_elapsed_time
/ execution_count) / 1000 N ' 平均时间ms '
,
SUBSTRING (st. text , (qs.statement_start_offset / 2 ) + 1 ,
((
CASE statement_end_offset
WHEN - 1 THEN DATALENGTH (st. text )
ELSE qs.statement_end_offset END
- qs.statement_start_offset) / 2 ) + 1 ) N ' 执行语句 '
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
where SUBSTRING (st. text , (qs.statement_start_offset / 2 ) + 1 ,
((
CASE statement_end_offset
WHEN - 1 THEN DATALENGTH (st. text )
ELSE qs.statement_end_offset END
- qs.statement_start_offset) / 2 ) + 1 ) not like ' %fetch% '
ORDER BY total_elapsed_time / execution_count DESC ;
posted on 2011-06-15 13:54 流光映雪 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/wangjianhui/archive/2011/06/15/2081443.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值