Set Statistics IO ON和Profiler里面的逻辑读不一样?

guohao0826 2011-03-24 05:33:24
1、Set Statistics IO ON
2、打开profiler跟踪

执行SQL: SELECT * FROM data_dict WHERE table_name='s_Order'

结果:在消息面板里显示
表'data_dict'。扫描计数1,逻辑读取204 次,物理读取12 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

在Profiler里面显示Reads为228


各位客官,能告诉我为什么这么简单的sql SET STATISTICS IO ON 出来的结果 和 profiler出来的结果不一样?

大家也可以试一试,简单情况下 reads=逻辑读。 稍微复杂点 reads等于什么?

这种情况经常出现
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
guohao0826 2011-03-25
  • 打赏
  • 举报
回复
淡然是同一条SQL啦。

一般在清除缓存的时候 profiler统计出来的结果 和 set statistics io on 出来的结果不一样。

这个是咋回事?

那个为准
sysuleiw 2011-03-25
  • 打赏
  • 举报
回复
其实Set Statistics IO ON这个逻辑读时从缓存读,因此缓存读为204
物理读就是硬盘读,其实sql从硬盘读应该包括两个过程,即从硬盘读到缓存,再从缓存度,因此这是两个过程,所以就是12*2=24
综上所述,204+24=228
所以profiler没有区分逻辑读和物理读,应该是两者之和

楼主验证下……
obuntu 2011-03-24
  • 打赏
  • 举报
回复
profiler 里的跟踪是针对这条语句吗?
Mr_Nice 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ssp2009 的回复:]

Profiler本身也会有逻辑读取?。。!
[/Quote]

Profiler本身也会消耗资源。
快溜 2011-03-24
  • 打赏
  • 举报
回复
Profiler本身也会有逻辑读取?。。!

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧