SQL Server慢 分析和监控工具SQL Server Profiler使用详解

           作为开发人员,在实际数据库应用中,难免遇到SQL Server查询、更新或者插入等操作慢的情况,那么如何去分析’定位具体在哪步慢呢?下面对于SQL Server数据库慢 分析和监控工具SQL Server Profiler使用详解进行说明,具体步骤和过程如下:

一、 在SQL Server Management Studio->工具-->SQL Server Profile打开

SQL Server Profiler工作原理

那么对于上面的图:

1、SQL Server事件是指由SQL Server本身内部触发的活动,或者由客户端与SQL Server进行连接时在SQL Server内部触发的活动。事件包含很多不同的种类。

2、因为事件发生在SQL Server的内部,SQL Trace的任务就是根据Filter来捕获自己感兴趣的事件。

3、一旦事件被SQL Trace捕获,那么发生的事件与相关的事件信息就会被保存在内存的队列中。

4、SMO(Server Management Objects),是可以直接的访问SQL Server的对象模型。其实,SQL Trace对于我们而言,就可以将之看成是一个黑盒,我们能做的就是通过一些方式和工具去与这个黑盒交互,SQL Profiler和系统的存储过程就是这样的工具。

二、新建跟踪任务

登陆成功后可看到主界面,文件-->新建跟踪

切换到“事件选择”选项卡,选择需要监控的事件,这次主要是监控慢SQL,因此只勾选了SQL:BatchCompleted的所有选项,如果有存储过程,则勾上RPC:Complated的选项

三、 慢SQL事件选择

点击 列筛选器,如下

我们从上图上依次说明为:

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

        配置列筛选器,选择Duration项,过滤掉低于100ms的SQL记录,只看大于等于100ms的SQL,点击确定并运行,现在测试,就先不作配置,将会显示所有SQL日志。

如图可见已经启动profile,接下来执行效果

Duration列为执行完成用时,通过这个字段可以看出SQL用时,点击这一行,下面会显示出这个SQL的具体语句,可见这是一个存储过程的语句,比较复杂,因此执行时间也较长。

有了这个工具,我们可以针对这些语句进行优化,我们的优化思路是:

1、降低存储过程的使用频率与复杂度,把复杂逻辑交给程序去处理

2、找出where查询条件中未配置索引的列,加入索引

下一篇:Mysql 查询当前日期下某个字段重复且有多条记录的数据_mysql 通过时间查询出来的数据有重复-CSDN博客 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿享天开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值