当前位置: 代码迷 >> Sql Server >> SQL Profiler 的 Reads 的值很大,该如何处理
  详细解决方案

SQL Profiler 的 Reads 的值很大,该如何处理

热度:241   发布时间:2016-04-24 09:40:51.0
SQL Profiler 的 Reads 的值很大
本帖最后由 jn40105 于 2014-11-09 12:45:49 编辑
在用SQL Server Profiler 监控数据库活动时,发现在部分指令的Reads的值特别大,下面的具体信息,请大神分析下。



Audit Logout 值大的有近 400W的

SQL:BatchStarting 和 SQL:BatchCompleted 的值:
 
    SELECT  c.name
    FROM    sysindexes i
            JOIN sysindexkeys k ON i.id = k.id
                                   AND i.indid = k.indid
            JOIN sysobjects o ON i.id = o.id
            JOIN syscolumns c ON i.id = c.id
                                 AND k.colid = c.colid
    WHERE   o.xtype = 'U'
            AND EXISTS ( SELECT 1
                         FROM   sysobjects
                         WHERE  xtype = 'PK'
                                AND name = i.name )
            AND o.name = 'DB_OrderType'
    ORDER BY o.name ,
            k.colid

------解决思路----------------------
reads是17 还是比较小的啦。

关于你说的Audit Logout  是对于登出的的审计操作,其实就是如果有人退出会话了,那么就会有一个Audit Logout ,主要是安全的监控,这个你可以去掉的,不需要监控的。
------解决思路----------------------
LZ 你看一下,这几行的 SPID 是不是一样的。如果不是一样的,那就是别会话产生的 Reads 。
------解决思路----------------------
你这个要考虑是否程序连接SQL Server的方式有问题,没有重用连接池,导致频繁断开、重连。另外虽然read在audit logout上,但是实际上是这次连接(login ~logout之间)发生的总逻辑IO,如果你这个语句不是经常使用的话,倒没多大问题,如果是要经常用,考虑换个方式,刚才执行了一下看plan,操作符略多
  相关解决方案