25

简单的问题,但我在谷歌上没有找到很好的解释。使用 Set Statistics IO ON 时,在 management studio 的消息窗口中提供了逻辑读取和扫描计数。如果我有:

tblExample,扫描计数 5,逻辑读取 20

扫描计数意味着什么?

4

5 回答 5

23

至于“表扫描”的含义,我能找到的最好的是:

扫描计数仅表示在查询期间访问表或索引的次数。它可能是完全扫描、部分扫描或只是搜索。

换句话说,仅扫描计数本身不足以继续进行。您需要确切地知道这些扫描是什么——因此您必须查看实际的执行计划以获取更多详细信息。最重要的是,它本身并不是一个非常有用的指标!

此外:

http://www.eggheadcafe.com/software/aspnet/32171165/set-statistics-io-scan-count-explanation.aspx

不幸的是,这些天的扫描计数信息量不是很大。嗯,好吧,如果您看到像 19223 这样的数字,则该表可能已通过嵌套循环连接多次访问。

曾经有一段时间,“扫描计数”仅表示“访问的时间表”,但那是很久以前的事了,也许在 SQL 6.5 中。唯一可以获得具有 0 定义的扫描计数的查询是...

select *
from TestA1
where CompanyID = 1
and CompanyID = 2

... SQL Server 可以在不访问表的情况下得出该查询不会返回任何行的结论。

于 2010-08-06T02:31:22.970 回答
18

来自在线书籍

扫描计数: 执行的索引或表扫描的数量。

逻辑读取: 从数据缓存读取的页数。

物理读取: 从磁盘读取的页数。

预读: 为查询放入缓存的页数。

另请参阅:http ://technet.microsoft.com/en-us/library/ms184361.aspx

于 2009-01-14T19:40:27.940 回答
16

如果继续收集msdn引用。然后 [1] 在 [2] 中重复:

  • " Logical Reads
    该值表示处理查询所需的页面访问总数。从数据缓存中读取每个页面,无论是否有必要将该页面从磁盘带入缓存以进行任何给定的读取。该值为总是至少和物理读取的值一样大并且通常大于物理读取的值。可以多次读取同一页(例如从索引驱动查询时),因此表的逻辑读取计数可以大于表中的页数。

  • Physical Reads
    该值表示从磁盘读取的页数;它始终小于或等于 Logical Reads 的值。Performance Monitor 显示的 Buffer Cache Hit Ratio 的值是根据 Logical Reads 和 Physical Reads 值计算得出的,如下所示:

  • Read Ahead Reads
    Read Ahead Reads 值表示在处理查询时使用预读机制读入高速缓存的页数。这些页面不一定由查询使用。如果最终需要页面,则计算逻辑读取但不计算物理读取。高值意味着 Physical Reads 的值可能较低并且缓存命中率可能高于... [被 vgv8 截断]

  • 扫描计数
    Scan Count 值表示访问相应表的次数。嵌套循环连接的外部表的扫描计数为 1。对于内部表,扫描计数可能是“通过循环”访问表的次数。逻辑读取数由扫描计数乘以每次扫描访问的页数的总和确定。但是,即使对于嵌套循环连接,内表的扫描计数也可能显示为 1。SQL Server 可能会将所需行从内表复制到缓存中的工作表中,并使用此工作表访问实际数据行。在计划中使用此步骤时,通常不会在 STATISTICS IO 输出中指示它。您必须使用 STATISTIC TIME 的输出,以及有关使用的实际处理计划的信息,确定执行查询所涉及的实际工作。对于连接中涉及的两个表,散列连接和合并连接通常将扫描计数显示为 1,但这些类型的连接可能涉及更多的内存。您可以在执行查询时检查 sysprocesses 中的 memusage 值,但与 physical_io 值不同的是,这不是累积计数器,仅对当前运行的查询有效。一旦查询完成,就无法查看它使用了多少内存。” 这不是累积计数器,仅对当前运行的查询有效。一旦查询完成,就无法查看它使用了多少内存。” 这不是累积计数器,仅对当前运行的查询有效。一旦查询完成,就无法查看它使用了多少内存。”

[1]
第 4 章。查询性能故障排除。监控
Microsoft® SQL Server™ 2005
内部的查询性能: Kalen Delaney 的 查询调优和优化


出版商:Microsoft Press
Pub 日期:2007 年 9 月 26 日
印刷 ISBN-10:0-7356-2196-9
印刷 ISBN-13:978-0-7356-2196-1
页数:448

[2]
监控查询性能
优化查询性能
作者:Ron Soukup,Kalen Delaney,
第 14 章,来自 Microsoft SQL Server 7.0 内部,Microsoft Press 出版
http://technet.microsoft.com/en-us/library/cc917719.aspx#ECAA

于 2010-11-09T16:34:01.670 回答
9

在这里对此进行了相当全面的总结。

于 2010-11-20T19:35:19.513 回答
0

忽略扫描计数,这并不重要。专注于如何降低逻辑读取。基于http://www.practicalsqldba.com/2013/07/sql-server-performance-tuning.html

于 2014-03-07T04:38:51.230 回答