理解SQL SERVER中的逻辑读,预读和物理读
www.91xueit.com韩老师IT系统培训课程优化SQL性能,你必须理解数据库查询数据的细节,在查询分析器中打开IO统计,setstatisticsioon,就能查看查询过程关于逻辑
韩老师IT系统培训课程
优化SQL性能,你必须理解数据库查询数据的细节,在查询分析器中打开IO统计,set statistics io on ,就能查看查询过程 关于逻辑读,预读和物理读的显示。下面给大家讲解数据库查询数据的细节,你也就明白了什么是关于逻辑读,预读和物理读 要想把这几个概念弄清楚必须了解数据库查询数据的细节。
SQL SERVER数据存储的形式在谈到几种不同的读取方式之前,首先要理解SQL SERVER数据存储的方式.SQL SERVER存储的最小单位为页(Page).每一页大小为8k,SQL SERVER对于页的读取是原子性,要么读完一页,要么完全不读,不会有中间状态。而页之间的数据组织结构为B树(请参考我之前的博文).所以SQL SERVER对于逻辑读,预读,和物理读的单位是页.
SQL SERVER一页的总大小为:8K
但是这一页存储的数据会是:8K=8192字节-96字节(页头)-36字节(行偏移)=8060字节
所以每一页用于存储的实际大小为8060字节.
比如上面AdventureWorks中的Person.Address表,通过SSMS看到这个表的数据空间为:
我们可以通过公式大概推算出占用了多少页:2.250*1024*1024/8060(每页的数据容量)≈293 - 表中非数据占用的空间≈290(上图中的逻辑读取数)
SQL SERVER查询语句执行的顺序SQL SERVER查询执行的步骤如果从微观来看,那将会非常多。这里为了讲述逻辑读等概念,,我从比较高的抽象层次来看:
下面我解释一下图。当遇到一个查询语句时,SQL SERVER会走第一步,分别为生成执行计划(占用CPU和内存资源),同步的用估计的数据去磁盘中取得需要取的数据(占用IO资源,这就是预读),注意,两个第一步是并行的,SQL SERVER通过这种方式来提高查询性能.
然后查询计划生成好了以后去缓存读取数据.当发现缓存缺少所需要的数据后让缓存再次去读硬盘(物理读)
最后从缓存中取出所有数据(逻辑读)。
下面我再通过一个简单的例子说明一下:
这个估计的页数数据可以通过这个DMV看到:
当我们第一次查询完成后,再次进行查询时,所有请求的数据这时已经在缓存中,SQL SERVER这时只要对缓存进行读取就行了,也就是只用进行逻辑读:

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Java开发中如何解决数据库查询数量溢出问题标题:Java开发中如何解决数据库查询数量溢出问题摘要:随着互联网的发展和数据量的逐渐增大,数据库查询的数量也越来越大。在Java开发中,由于内存的限制,可能会遇到数据库查询数量溢出的问题。本文将介绍几种解决这个问题的方法。正文:优化数据库查询语句首先,我们可以从优化数据库查询语句的角度来解决这个问题。我们可以使用

Laravel中间件:为应用程序添加数据库查询和性能监控导言:在开发Web应用程序时,数据查询和性能监控是非常重要的。Laravel提供了一种方便的方式来处理这些需求,即中间件。中间件是在请求和响应之间进行处理的一种技术,它可以在请求到达控制器之前或响应返回给用户之后执行一些逻辑。本文将介绍如何使用Laravel中间件来实现数据库查询和性能监控。一、创建中间

PHP数据库查询技巧:如何使用mysqli_query函数执行SQL查询在开发PHP应用程序时,与数据库的交互是一个非常重要的部分。对于查询操作,PHP提供了一些内置的函数来执行SQL语句。本文将重点介绍mysqli_query函数的使用方法,帮助开发者更好地进行数据库查询操作。一、mysqli_query函数介绍mysqli_query函数是PHP的内置函

在ReactQuery中实现数据库查询的错误处理机制ReactQuery是一个用于管理和缓存数据的库,它在前端领域越来越受欢迎。在应用程序中,我们经常需要与数据库进行交互,而数据库查询可能会出现各种错误。因此,实现一个有效的错误处理机制对于保证应用程序的稳定性和用户体验至关重要。第一步是安装ReactQuery。使用以下命令将其添加到项目中:n

Laravel是一款流行的PHP开发框架,提供了一系列的工具和辅助函数来加快Web应用程序的开发速度。其中,EloquentORM是Laravel框架中用于数据库操作的工具之一,让Laravel开发者可以更快捷地对数据库进行查询和操作。在本篇文章中,我们将深入探讨如何使用EloquentORM进行数据库查询。安装EloquentORM首先,我们需要在L

在ReactQuery中优化数据库查询的前端性能策略在现代的前端开发中,我们经常需要与后端的数据库进行交互,获取数据来渲染页面。然而,频繁的数据库查询可能会导致性能问题,特别是当页面需要渲染大量的数据时。在这种情况下,我们可以使用ReactQuery来优化数据库查询的前端性能。ReactQuery是一个用于管理数据查询和状态的JavaScr

在当前互联网时代,随着数据的爆炸式增长,数据库成为了一个服务的核心。数据库的性能和速度更是直接影响了网站及其应用的用户体验和可用性,因此如何优化数据库查询是开发人员需要着重研究的一个问题。而在PHP语言中,通过对数据库查询语句的优化,可以提高程序的性能,减少服务器的负担,提高服务的稳定性。本文将从以下几个方面,介绍如何优化数据库查询:一、使用索引在进行查询时
