本章主要介绍一下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 以上是出现阻塞,必须查看原因的。
---------------------------华丽的分割线-----------------------------------
SQL Server数据库优化实战(二)
标签:sql server 数据库 优化 事件探查器 sql server profiler
查看更多关于SQL Server数据库优化实战(二)的详细内容...