首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逻辑读取计数变化

逻辑读取计数变化
EN

Database Administration用户
提问于 2014-07-17 03:25:19
回答 1查看 331关注 0票数 5

这个职位中,作者多次运行一个查询。我注意到逻辑读取在不同的执行中略有不同。在总共几千页的阅读中,大约有2页的差别。在我看来,从上下文中可以清楚地看到,在这段时间内不会有任何写活动。如果计划改变的话,我就会期望有更大的变化,而不是百分之一的零头。

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

EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-12-11 22:27:21

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

对于堆表,我不知道有什么机制会导致这种情况。

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

对于群集表(通常是对索引结构的查找/扫描),逻辑读取可能因提前读取活动而变化。预读从b树的上层读取页面,以便在扫描之前识别要读取的页面,从而产生不同数量的“额外”逻辑读取,这取决于存储系统的时间和特性。禁用带有全局跟踪标志652的预读功能可以用来演示这一点。

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

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/71722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档