【问题标题】:How are logical reads calculated?如何计算逻辑读取?
【发布时间】:2011-01-06 18:32:34
【问题描述】:

我已经阅读了逻辑读取的定义:

http://msdn.microsoft.com/en-us/library/ms184361.aspx

上面写着:

“从数据缓存中读取的页数。”

我有两个表(table_1 的行数是 141,table_2 是 16.811),当我运行这两个查询时,它会给出以下结果。

SELECT * FROM Table_1

results
Scan count 1, logical reads 6, physical reads 0, read-ahead reads 0.

SELECT * FROM Table_2

results
scan count 1, logical reads 701, physical reads 0, read-ahead reads 0

如果逻辑读取是“从数据缓存读取的页数”。那么什么是页面?是怎么计算的?

【问题讨论】:

    标签: sql tsql sql-server-2000 performance query-analyzer


    【解决方案1】:

    页面是SQL Server 使用的最小物理数据单元。

    一个页面的长度为8K,可能包含多个表记录、索引记录等信息。

    即使一行是10 字节长,也需要读取整个页面。

    在您的情况下,一个页面平均包含大约 20 行。

    【讨论】:

    • 所以 20 行的平均值取决于行的大小,对吗?就像一个很大的行可以填满一页?
    • @stckvrflw:是的。如果您的表中有可变长度数据类型(如VARCHARVARBINARY),则记录大小也将是可变的。此外,记录可以删除,它们的空间不会立即重复使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2014-01-14
    相关资源
    最近更新 更多