理解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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java 개발 시 데이터베이스 쿼리 수 오버플로 문제 해결 방법 제목: Java 개발 시 데이터베이스 쿼리 수 오버플로 문제 해결 방법 요약: 인터넷의 발달과 데이터 양의 점진적인 증가로 인해 데이터베이스 쿼리도 증가하고 있습니다. Java 개발 시 메모리 제한으로 인해 데이터베이스 쿼리 수가 오버플로되는 문제가 발생할 수 있습니다. 이 기사에서는 이 문제를 해결하는 여러 가지 방법을 소개합니다. 텍스트: 데이터베이스 쿼리문 최적화 먼저, 데이터베이스 쿼리문 최적화 관점에서 이 문제를 해결할 수 있습니다. 우리는 사용할 수 있습니다

PHP를 사용하여 데이터베이스를 쿼리하고 결과를 표시하는 단계: 데이터베이스에 연결하여 결과를 표시하고 쿼리 결과의 행을 탐색하고 특정 열 데이터를 출력합니다.

Laravel 미들웨어: 애플리케이션에 데이터베이스 쿼리 및 성능 모니터링 추가 소개: 웹 애플리케이션을 개발할 때 데이터 쿼리 및 성능 모니터링은 매우 중요합니다. Laravel은 이러한 요구 사항, 즉 미들웨어를 처리하는 편리한 방법을 제공합니다. 미들웨어는 요청과 응답 사이를 처리하는 기술로, 요청이 컨트롤러에 도달하기 전이나 응답이 사용자에게 반환된 후에 일부 논리를 수행할 수 있습니다. 이 글에서는 Laravel 미들웨어를 사용하여 데이터베이스 쿼리 및 성능 모니터링을 구현하는 방법을 소개합니다. 1. 중간 만들기

PHP 데이터베이스 쿼리 팁: mysqli_query 함수를 사용하여 SQL 쿼리를 수행하는 방법 PHP 애플리케이션을 개발할 때 데이터베이스와의 상호 작용은 매우 중요한 부분입니다. 쿼리 작업을 위해 PHP는 SQL 문을 실행하는 몇 가지 내장 함수를 제공합니다. 이 기사에서는 개발자가 데이터베이스 쿼리 작업을 더 잘 수행할 수 있도록 mysqli_query 함수를 사용하는 방법에 중점을 둘 것입니다. 1. mysqli_query 함수 소개 mysqli_query 함수는 PHP에 내장된 함수입니다.

ReactQuery에서 데이터베이스 쿼리의 오류 처리 메커니즘 구현하기 ReactQuery는 데이터를 관리하고 캐싱하기 위한 라이브러리이며 프런트엔드 분야에서 점점 인기를 얻고 있습니다. 애플리케이션에서는 종종 데이터베이스와 상호 작용해야 하며 데이터베이스 쿼리로 인해 다양한 오류가 발생할 수 있습니다. 따라서 효과적인 오류 처리 메커니즘을 구현하는 것은 애플리케이션 안정성과 사용자 경험을 보장하는 데 중요합니다. 첫 번째 단계는 ReactQuery를 설치하는 것입니다. 다음 명령을 사용하여 프로젝트에 추가합니다.n

ReactQuery에서 데이터베이스 쿼리를 최적화하기 위한 프런트엔드 성능 전략 현대 프런트엔드 개발에서는 페이지를 렌더링하기 위한 데이터를 얻기 위해 백엔드 데이터베이스와 상호 작용해야 하는 경우가 많습니다. 그러나 데이터베이스 쿼리를 자주 수행하면 특히 페이지에서 대량의 데이터를 렌더링해야 하는 경우 성능 문제가 발생할 수 있습니다. 이 경우 ReactQuery를 사용하여 데이터베이스 쿼리의 프런트엔드 성능을 최적화할 수 있습니다. ReactQuery는 데이터 쿼리 및 상태를 관리하기 위한 JavaScr입니다.

Laravel은 웹 애플리케이션 개발 속도를 높이기 위한 일련의 도구와 도우미 기능을 제공하는 인기 있는 PHP 개발 프레임워크입니다. 그 중 EloquentORM은 Laravel 프레임워크에서 데이터베이스 작업에 사용되는 도구 중 하나로, Laravel 개발자가 데이터베이스를 보다 빠르게 쿼리하고 운영할 수 있도록 해줍니다. 이 기사에서는 데이터베이스 쿼리에 EloquentORM을 사용하는 방법을 살펴보겠습니다. EloquentORM 설치 먼저, 설치해야 합니다.

오늘날 인터넷 시대에는 데이터의 폭발적인 증가와 함께 데이터베이스가 서비스의 핵심이 되었습니다. 데이터베이스의 성능과 속도는 웹 사이트와 해당 애플리케이션의 사용자 경험과 유용성에 직접적인 영향을 미칩니다. 따라서 데이터베이스 쿼리를 최적화하는 방법은 개발자가 집중해야 할 문제입니다. PHP 언어에서는 데이터베이스 쿼리문의 최적화를 통해 프로그램의 성능을 향상시키고, 서버의 부담을 줄이며, 서비스의 안정성을 향상시킬 수 있습니다. 이 기사에서는 다음 측면에서 데이터베이스 쿼리를 최적화하는 방법을 소개합니다. 1. 쿼리 수행 시 인덱스 사용
