AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 71722
Accepted
Michael Green
Michael Green
Asked: 2014-07-17 19:25:19 +0800 CST2014-07-17 19:25:19 +0800 CST 2014-07-17 19:25:19 +0800 CST

逻辑读取计数不同

  • 772

在这篇文章中,作者多次运行查询。我注意到逻辑读取在执行过程中略有不同。总共读了几千页,相差2页左右。从上下文来看,我似乎很清楚,在两次之间不会有写活动。如果计划发生变化,我预计会有比零点几分之一更大的变化。

Q:在没有数据写入的情况下,哪些因素会导致SQL Server对同一个查询报告不同的逻辑读取计数?

sql-server data-pages
  • 1 1 个回答
  • 304 Views

1 个回答

  • Voted
  1. Best Answer
    Paul White
    2014-12-12T14:27:21+08:002014-12-12T14:27:21+08:00

    在没有数据写入的情况下,哪些因素会导致 SQL Server 为同一查询报告不同的逻辑读取计数?

    对于堆表,据我所知没有任何机制会导致这种情况。

    我注意到作者报告的逻辑读取仅在使用压缩时有所不同。这表明表重建包含在每次执行中。重建语句未指定MAXDOP = 1,因此会生成一个并行计划。行在运行时重建中跨线程分布的方式不是确定性的(它取决于时间),因此堆的最终结构会有所不同。这是我能够重现已发布结果的唯一方法。

    对于聚簇表(或一般的索引结构的查找/扫描),逻辑读取可能因预读活动而异。预读从 b 树的上层读取页面以识别要在扫描之前读取的页面,从而导致不同数量的“额外”逻辑读取,具体取决于存储系统的时间和特性。使用全局跟踪标志 652 禁用预读可用于演示这一点。

    我提到预读方面只是为了完整性,因为有问题的表是一个堆。堆扫描确实使用预读,但这是由 IAM 页面驱动的。IAM 页面不构成主表结构的一部分(与 b 树的上层不同),因此这些额外的读取不会由STATISTICS IO.

    • 3

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve