在用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,操作符略多