使用 SQL Server Profiler 跟踪数据库

工具概要

如果我们的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等等,又性能低下,而我们又要对其优化,那该怎么办?首先我们要知道问题出在哪里?如果想知道问题出在哪里,并且找到它,咱们可以借助本文中要讲述的性能检测工具--SQL Server Profiler(处在sql安装文件--性能工具--sql server profiler)

SQL Server Profile 的使用

这里以 win10系统 , SQL2008R2 为例。

1、打开 SQL Server Profile工具。两种打开方式,  从 开始菜单 打开或从 数据库界面 打开,如图

 

使用 SQL Server Profiler 跟踪数据库_第1张图片

使用 SQL Server Profiler 跟踪数据库_第2张图片

2、新建跟踪

2.1  点击文件--新建跟踪

使用 SQL Server Profiler 跟踪数据库_第3张图片

2.2 输入服务器地址及账号信息

使用 SQL Server Profiler 跟踪数据库_第4张图片

2.3 设置跟踪的名称等

使用 SQL Server Profiler 跟踪数据库_第5张图片

2.4 选择要跟踪的事件 默认全部跟踪。例如 要跟踪所有的select语句 如图 列筛选器选择TextData 类似于 select% ,%是通配符,表示以select开头的语句。delete update 等也是同理。

使用 SQL Server Profiler 跟踪数据库_第6张图片

列筛选器的含义依次为:

  • ApplicationName 创建 SQL Server 连接的客户端应用程序的名称。此列由该应用程序传递的值填充,而不是由所显示的程序名填充的;
  • BinaryData 依赖于跟踪中捕获的事件类的二进制值。
  • ClientProcessID 调用 SQL Server 的应用程序的进程 ID。
  • CPU 事件使用的 CPU 时间(毫秒)。
  • Duration 事件占用的时间。尽管服务器以微秒计算持续时间,SQL Server Profiler 却能够以毫秒为单位显示该值,具体情况取决于“工具”>“选项”对话框中的设置
  • EndTime 事件结束的时间。对指示事件开始的事件类(例如 SQL:BatchStarting 或 SP:Starting)将不填充此列。
  • LoginName 用户的登录名(SQL Server 安全登录或 Windows 登录凭据,格式为“域\用户名”)
  • NTusername Windows 用户名。
  • Reads 由服务器代表事件读取逻辑磁盘的次数。
  • TextDate 依赖于跟踪中捕获的事件类的文本值;
  • SPID SQL Server 为客户端的相关进程分配的服务器进程 ID。
  • StratTime 事件(如果可用)的启动时间。
  • Writes 由服务器代表事件写入物理磁盘的次数。

2.5 设置完成后,单击“运行”按钮就可以,当然如果有兴趣的话也可以对列进行重新排列和筛选,只要单击下面相应的按钮根据提示操作就要可以了

3 跟踪页面 单击运行后的页面,常用的就那些按钮 开始、暂停、停止、清楚跟踪记录等 。鼠标悬浮就会有中文提示。可以同时启动多个跟踪,同时跟踪不同的数据库和表,还可以配合 SQL的数据库引擎优化顾问 一起使用,可以分析出来你的Sql语句性能,而且还会告诉你怎么修改会更好。

使用 SQL Server Profiler 跟踪数据库_第7张图片

分析:

1.查找持续时间最长的查询

一般情况下,最长查询时间的查询语句就是最影响性能的原因存在。它不仅占用数据库引擎大量的时间,还浪费系统资源,还影响数据库应用系统的交互速度。再对数据用应用系统进行优化时,先找出他,对其优化,在创建跟踪时,勾上TSQL-SQL:BatchCompleted.跟Stored Procedures-RPC:completed。这样就能找出来这个最长时间查询然后对其进行分析优化。

2.最占用系统资源的查询

就是占用cpu时间,跟读写IO的次数。建议事件包含Connect、Disconnect、ExistingConnection、SQL:BatchCompleted、RPC:completed,列包含writes,reads,cpu。

3.检测死锁

在访问量,并发量都很大的数据库中,如果设计稍不合理,就有可能造成死锁,给系统性能带来影响。事件包含:RPC:Starting、SQL:BatchStarting、Lock:DeadLock(死锁事件)、Lock:DeadLockChaining(死锁的事件序列)。

 

 

 

你可能感兴趣的:(数据库)