软件介绍
SQL Server Profiler 使用一款数据库性能检测软件,可以对表、视图、存储过程、触发器、函数等等进行事实检测,并且我们可以讲这些数据保存到文件或者表中方便观察。可室我们平时开发中对数据性能优化和快速找出数据库方便面的问题。
下载及安装
使用方法
打开系统主菜单 —> sqlserver几 —> 性能工具 —> sql server profiler(下图)
然后文件 —> 新建跟踪 —> 显示跟踪属性窗口(下图)
首先那个select%是个筛选监测的TextData。那个%是个通配符,他的意思就是筛选select开口的语句。当然这你自己可以随便定义,如update%,delete%….。
把那个排除不包含值的行也给带上,然后确定,运行。
然后在数据库中运行一句select。你会发现他检测到了(下图)。
每列以此向右,从EventClass开始,我给你讲讲都是什么。
事件分类,申请了语句,应用程序名称,操作系统用户,数据库用户,cpu占用率,读数据库次数,写数据库次说,执行脚本用时,应用程序进程号,开始时间,结束时间等。
事件选择,你就把鼠标放上去,他下面有中文的注释。自己好好看看,然后根据你自己的需要把事件勾选上来。
然后文件 —> 另存为,可以把这些监测到的数据保存为文件,或数据表。
结果分析:
1、查找持续时间最长的查询
一般情况下,最长查询时间的查询语句就是最影响性能的原因存在。它不仅占用数据库引擎大量的时间,还浪费系统资源,还影响数据库应用系统的交互速度。再对数据用应用系统进行优化时,先找出他,对其优化,在创建跟踪时,勾上TSQL-SQL:BatchCompleted.跟Stored Procedures-RPC:completed。这样就能找出来这个最长时间查询然后对其进行分析优化。
1 2 3 |
select TextData,Duration,CPU from <跟踪的表> where EventClass=12 -- 等于12表示BatchCompleted事件 and CPU<(0.4*Duration) --如果cpu的占用时间,小于执行sql语句时间的40%,说明该语句等待时间过长 |
2、最占用系统资源的查询。就是占用cpu时间,跟读写IO的次数。建议事件包含Connect、Disconnect、ExistingConnection、SQL:BatchCompleted、RPC:completed,列包含writes,reads,cpu。
3、检测死锁。在访问量,并发量都很大的数据库中,如果设计稍不合理,就有可能造成死锁,给系统性能带来影响。事件包含:RPC:Starting、SQL:BatchStarting、Lock:DeadLock(死锁事件)、Lock:DeadLockChaining(死锁的事件序列)。
使用数据库引擎优化顾问分析解决数据库性能
打开系统主菜单 —> sqlserver几 —> 性能工具 —> 数据库引擎优化顾问(下图)
打开之后,你在上一个工具中保存的的文件,你就在这里的工作负荷中选文件,表就选表。
把要分析的数据库跟数据库的表选上,也就是下面的用于工作负荷分析的数据库选择,跟下面的要优化的数据库和表,把他选对。
然后选则你想要的优化选项(下图)
根据需要,选上,高级选项里面通常可以默认。确定。。
然后点左上角有一个开始分析。
发布者:柚子,转转请注明出处:https://ityouzi.com/archives/sql-server-profiler.html