首页 > 数据库 > mysql教程 > 为什么我的窗口聚合查询显示高逻辑读取?

为什么我的窗口聚合查询显示高逻辑读取?

Linda Hamilton
发布: 2024-12-24 04:15:11
原创
163 人浏览过

Why Are My Windowed Aggregate Queries Showing High Logical Reads?

具有公共子表达式假脱机的窗口聚合函数执行计划中的高逻辑读取

在执行计划中经常观察到大型表报告的高逻辑读取利用公共子表达式线轴。工作表逻辑读取的公式为:

Worktable Logical Reads = 1 + NumberOfRows * 2 + NumberOfGroups * 4
登录后复制

说明

与传统的假脱机表不同,工作表按行读取计数逻辑读取,导致逻辑读取计数膨胀。这是因为工作表位于服务器内部,并且哈希页计数对于分析来说价值较低。

公式细分如下:

  1. 1x 逻辑读取: 工作表已创建并初始化。
  2. 每个逻辑读取次数为 2 倍Row: 主假脱机读取每行两次,一次插入到工作表中,另一次从工作表中读取以进行聚合。辅助线轴还读取每行两次。
  3. 每组 4 次逻辑读取: 主线轴发出一行来指示每个新分区的开始,并输出一个虚拟行来完成最后一组的处理。这些额外的行占 4x 计数。

其他见解

Paul White 在他的博客文章中解释说该公式与执行计划一致,其中两个辅助线轴被完全读取两次,并且主线轴发出(组数 1)行。额外的行由主线轴发出,表示最终组的结束。

结论

工作表逻辑读取的公式是理解膨胀逻辑的有用工具。在具有公共子表达式假脱机的执行计划中观察到的读取计数。通过认识到工作表对逻辑读取的计数不同,可以更轻松地解释读取统计数据并评估计划的效率。

以上是为什么我的窗口聚合查询显示高逻辑读取?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板