代码之家  ›  专栏  ›  技术社区  ›  Paulj

SQL统计信息IO扫描计数解释

  •  19
  • Paulj  · 技术社区  · 16 年前

    这个问题很简单,但我在谷歌上没有找到一个很好的解释。当使用set statistics io on时,在Management Studio的消息窗口中提供逻辑读取和扫描计数。如果我有:

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

    扫描计数意味着什么?

    5 回复  |  直到 10 年前
        1
  •  13
  •   SQLMenace    16 年前

    从联机书籍

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

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

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

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

    这里也可以看到: http://technet.microsoft.com/en-us/library/ms184361.aspx

        2
  •  17
  •   Jeff Atwood    14 年前

    就“扫描台”而言 方法 我能找到的最好的方法是:

    扫描计数只是指在查询期间访问表或索引的次数。 它可以是完全扫描、部分扫描,也可以只是一个搜索。

    换句话说,扫描计数本身就是 信息不足 继续进行。您需要确切地知道这些扫描是什么——所以您必须查看实际的执行计划以了解更多细节。归根结底,它本身不是一个非常有用的度量标准!

    另外:

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

    不幸的是, 这些天的扫描计数不是很有用。 . 嗯,嗯, 如果你看到一个像19223这样的数字,这个表可能已经被访问了 通过嵌套循环连接多次。

    曾经有一段时间,“scan count”简单地表示“Times table accessed”, 但那是很久以前的事了,可能在SQL 6.5中。你唯一能得到的时间 定义为0的扫描计数包含类似…

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

    …其中,SQL Server可以断定查询不会返回 任何行,不访问表。

        3
  •  12
  •   Gennady Vanin Геннадий Ванин Mikael Svenson    14 年前

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

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

    • 物理读数
      此值指示从磁盘读取的页数;它始终小于或等于逻辑读取的值。性能监视器显示的缓冲区缓存命中率值是根据逻辑读取和物理读取值计算的,如下所示:

    • 预读
      read ahead reads值指示在处理查询时使用read ahead机制读取到缓存中的页数。查询不一定要使用这些页面。如果最终需要一个页面,逻辑读取将被计数,而物理读取则不被计数。高值意味着物理读取的值可能较低,缓存命中率可能高于…[被vgv8截断]

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

    〔1〕
    第4章。查询性能疑难解答。监控查询性能
    在Microsoft_?SQL Server_ 二千零五 :查询优化
    作者:Kalen Delaney


    发布者:微软出版社
    发布日期: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出版社出版
    http://technet.microsoft.com/en-us/library/cc917719.aspx#ECAA

        5
  •  1
  •   Irawan Soetomo    11 年前

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