SQL Server 中的逻辑读与物理读

SQL Server 中的逻辑读与物理读

首先要理解逻辑读和物理读:

  •   预读:用估计信息,去硬盘读取数据到缓存。预读100次,也就是估计将要从硬盘中读取了100页数据到缓存。
  •   物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存再次去读硬盘。物理读10页,从硬盘中读取10页数据到缓存。
  •   逻辑读:从缓存中取出所有数据。逻辑读100次,也就是从缓存里取到100页数据。

  SQL Server存储的最小单位是页,每一页大小为8K,SQL Server对于页的读取是原子性的,要么读完一页,要么完全不读。即使是仅仅要获得一条数据,也要读完一页。而页之间的数据组织结构为B树结构。所以SQL Server对于逻辑读、预读、物理读的单位是页。

示例:

<span>SQL Server 中的逻辑读与物理读</span><span>SQL Server 中的逻辑读与物理读</span>

      SQL SERVER一页的总大小为:8K

      但是这一页存储的数据会是:8K=8192字节-96字节(页头)-36字节(行偏移)=8060字节

      所以每一页用于存储的实际大小为8060字节.

      我们可以通过公式大概推算出占用了多少页:2032*1024/8060(每页的数据容量)≈258- 表中非数据占用的空间≈290(上图中的逻辑读取数)

      基本上,逻辑读、物理读、预读都等于是扫描了多少个页。

      SQL SERVER查询语句执行的顺序

  当SQL Server执行一个查询语句时,SQL Server会开始第一步,生成查询计划,查询处理器需要读取各个表的定义及表上各个索引的统计信息,当查询计划生成后,真正交给查询执行器执行时,SQL server 才会使用另外一个线程将查询“可能需要的数据”从磁盘读取的缓冲区中(前提是数据不在缓存中),这就是预读。SQL Server通过这种方式来提高查询性能。

  查询计划生成好了以后去缓存读取数据,当发现缓存缺少所需要的数据后让缓存再次去读硬盘(物理读),然后从缓存中取出所有数据(逻辑读)。

  估计的页数可以通过DMV看到:select * from sys.dm_db_index_physical_stats… ,page_count 显示为254;

      此时再执行之前的查询语句:

    <span>SQL Server 中的逻辑读与物理读</span>

     Storage engine notices pattern and kicks off read ahead, which starts to read data not yet requested into buffer pool. These are counted as read ahead reads, but not as logical or physical reads.Next time the scan or seek needs data, it is already in the buffer pool, so only logical io, no physical io.

    从外国论坛上看的,不难理解,就是第二次查询时,如果数据已经再缓存中了,那么只有逻辑读,没有物理读了,因为直接在缓存中可以找到这些数据了。
参考http://www.cnblogs.com/CareySon/archive/2011/12/23/2299127.html

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119762.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【HTML响应式项目】成人教育官网前端页面(HTML+CSS+JS实现三端适应)

    【HTML响应式项目】成人教育官网前端页面(HTML+CSS+JS实现三端适应)项目源码已上传至码云仓库:云南农业职业技术学院/HTML响应式成人教育官网前端页面(HTML+CSS+JS实现)项目演示地址:成人教育网AAP端下载地址:成人教育网APP端.apk-互联网文档类资源-CSDN下载目录项目源码已上传至码云仓库:https://gitee.com/ynavc/sss项目演示地址:http://ynavc.gitee.io/sss一、电脑端效果图1、首页2、所有课程3、新闻资讯4、教师团队5、关于我们二、手机端效果图.

    2022年7月20日
    17
  • 网页下载文件错误_python安装报错

    网页下载文件错误_python安装报错如图,使用webdriver的过程中出现如下提示,代码正常,下载地址正常,在正常浏览器中也可以成功下载文件但是模拟浏览器却无法成功获取文件;尝试了开发模式启动、禁用或启用js等等,都没有成功,快要放弃chrome准备改选firefox的时候,看到了一个解决方法:此方法只针对一种情况有效:如果你在下载路径前加了r,转义了原始字符串,如下那么,去掉“r”试一下成功了如有问题请留言…

    2025年11月20日
    3
  • 转:三款免费好用的Gif录屏神器

    转:三款免费好用的Gif录屏神器原文链接:三款免费好用的Gif录屏神器自己用了ScreenToGif版本2.14.1下载地址原文内容:三款免费好用的Gif录屏神器2018年06月02日18:52:21独家雨天阅读数:147531.免费开源的GIF录制工具ScreenToGif官网地址:http://www.screentogif.c…

    2026年1月29日
    3
  • vue组件注册可以是以下哪种方式_自定义vue组件分三个步骤

    vue组件注册可以是以下哪种方式_自定义vue组件分三个步骤组件的组织通常一个应用会以一棵嵌套的组件树的形式来组织:例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。为了能在模板中使用,这些组件必须先注册以便

    2022年7月29日
    10
  • react-navigation重复点击多次跳转的解决方案

    react-navigation重复点击多次跳转的解决方案废话在react-native@0.44版本之后,官方废弃了之前的导航Navigator,用react-navigation替代react-natvigation于2017年1月份开源,在3个月时间内,GitHub上star数达4000+,备受推崇,由于其性能体验堪比原生,而且使用方便,最后被FB钦点为“御用导航”但是在使用过程中还是发现了一个问题:在触发页面跳转的View上重复、快

    2022年5月7日
    84
  • 13 万字 C 语言从入门到精通保姆级教程2021 年版

    13万字C语言保姆级教程,从入门到精通。

    2022年4月9日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号