SQL Server利用事件跟踪器Profiler排查系统问题或性能瓶颈

SQL Server
348
0
0
2022-05-31

一、问题提出:

在企业中有各式各样的C/S系统或B/S系统(网站),其中有很多是使用SQL Server作为后端数据库支撑,有些系统是自建的,有些是购买的,在使用过程中经常会出现各式各样的异常问题,而其中通过数据库的调整能解决的问题不在少数,而排查SQL server的问题的最好的工具就是事件跟踪器SQL Server Profiler。

事件跟踪器Profiler能跟踪数据库执行的每一条SQL语句和存储过程,通过跟踪到的这些语句可以给我们解决问题提供很好的帮助。

二、Profiler的基本使用:

这里是以SQL Server 2016的操作为示范,打开SQL Server Management Studio---工具----SQL Server Profiler来启动跟踪工具。然后在跟踪工具中链接要跟踪的服务器,然后默认参数运行即可跟踪。

SQL Server利用事件跟踪器Profiler排查系统问题或性能瓶颈

启动事件跟踪器

三、跟踪特定某台电脑操作:

在排查系统问题的时候,我们往往是操作特定的某一个电脑,而默认跟踪的是所有电脑连接的操作;我们是根据Profiler中的ClientProcessID(客户端处理器ID)来识别的,首先我们用特定这台电脑查询一个比较特殊的条件的功能或语句,在Profiler的跟踪记录里搜索到这条语句,这样就找到了这台电脑的ClientProcessID,如下图我是在特定电脑中执行了select * from t_log where fuserid=8860这条语句,在跟踪记录搜索这条语句然后就能找到了ClientProcessID=38416:

SQL Server利用事件跟踪器Profiler排查系统问题或性能瓶颈

找到ClientProcessID=38416

然后是停止跟踪设置跟踪过滤条件,如图所示按照数字表示顺序操作即可,这样就只跟踪特定这台电脑的操作了:

SQL Server利用事件跟踪器Profiler排查系统问题或性能瓶颈

设置跟踪过滤条件

四、SQL性能瓶颈排查:

系统速度慢有很多方面原因造成的,其中很多慢的原因都是数据库的性能问题造成的,这时候就需要找出到底是哪个或哪些SQL语句或存储过程慢,这里主要就可以依据Profiler的跟踪结果来排查,如下图CPU、Reads、Writes、Duration分别显示了当前语句执行中CPU占用时间、磁盘读次数、磁盘写次数、整个语句持续的时间,数据异常大的就要重点排查了,找到位置就事半功倍了。具体SQL优化的方法就不再详细说了,一句话两句话也说不完,以后有机会专门写一篇sql优化的文章吧。

SQL Server利用事件跟踪器Profiler排查系统问题或性能瓶颈

慢查询查找定位