前言:
本章主要介绍一下SQL Server Profiler(事件探查器),通过探查器,来分析语句运行的效果。
--SQL Server Profiler
['prəʊfaɪlə(r)]
事件探查器
SQL Profiler是一个图形界面和一组系统存储过程,其作用如下:
-图形化监视SQL Server查询;
-在后台收集查询信息;
-分析性能;
-诊断像死锁之类的问题;
-调试T-SQL语句;
-模拟重放SQL Server活动;
-也可以使用SQL Profiler捕捉在SQL Server实例上执行的活动。这样的活动被称为Profiler跟踪。
1、Profiler跟踪
2、事件
一个事件表现SQLServer中执行的各种活动。
这些活动可以简单地分类为事件类:
--游标事件
--锁事件
--存储过程事件
--T-SQL事件
--资源压力
资源压力主要包含如下内容:
1、SQL活动涉及哪一类的CPU使用?
2、使用了多少内存?
3、涉及多少I/0操作?
4、SQL活动执行了多长时间?
5、特定的查询执行的频率有多高?
6、查询面对哪类错误和警告?
http://msdn.microsoft.com/zh-cn/library/ms175927%28v=sql.100%29.aspx
3、事件列
4、列筛选器
5、跟踪模板
6、跟踪数据
实战:
1、在客户最繁忙的时段进行跟踪(1-2小时,视情况而定,会有些客户的数据量非常大,可能只能跟踪30分钟左右,这样可以多次跟踪以达到目的。)
2、将跟踪的数据存为跟踪表。(大概20万左右的数据量,100家门店以上的客户一般30分钟就能达到这个值)
3、--前20个最耗CPU的单个语句
select top 20 * from sql_test(nolock) where textdata is not null order by cpu desc
(sql_test是刚才保存的跟踪表名)
4、--20个累计最耗CPU的语句
select top 20 substring(textdata,1,200),count(*),
SUM(cpu),SUM(cpu)/ COUNT(*)
from sql_test(nolock)
where textdata is not null
group by substring(textdata,1,200)
order by SUM(cpu) desc
5、分析CPU
一般来说,单次执行CPU耗费值
(单位ms,1000ms=1秒):
1000以下是比较少的。
1000-1W是比较多的。
5W以上是必须立即整改的。这是单个值耗费资源比较多的。
6、分析Duration
[djuˈreɪʃn]
一般来说,单次执行Duration耗费值
(单位ms,1000ms=1秒;
可设置为微秒,1秒=1000000微秒):
1000以下是处理时间较短的。
1000-1W是处理时间较长的。
5W以上是出现阻塞,必须查看原因的。
---------------------------华丽的分割线-----------------------------------