Rumah pangkalan data tutorial mysql 理解SQL SERVER中的逻辑读,预读和物理读

理解SQL SERVER中的逻辑读,预读和物理读

Jun 07, 2016 pm 05:36 PM
kursus latihan Pertanyaan pangkalan data

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对于逻辑读,预读,和物理读的单位是页.

image

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

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

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

      比如上面AdventureWorks中的Person.Address表,通过SSMS看到这个表的数据空间为:

image

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

SQL SERVER查询语句执行的顺序

      SQL SERVER查询执行的步骤如果从微观来看,那将会非常多。这里为了讲述逻辑读等概念,,我从比较高的抽象层次来看:

image

      图有些粗糙。

      下面我解释一下图。当遇到一个查询语句时,SQL SERVER会走第一步,分别为生成执行计划(占用CPU和内存资源),同步的用估计的数据去磁盘中取得需要取的数据(占用IO资源,这就是预读),注意,两个第一步是并行的,SQL SERVER通过这种方式来提高查询性能.

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

      最后从缓存中取出所有数据(逻辑读)。

      下面我再通过一个简单的例子说明一下:

image

      这个估计的页数数据可以通过这个DMV看到:

image

    当我们第一次查询完成后,再次进行查询时,所有请求的数据这时已经在缓存中,SQL SERVER这时只要对缓存进行读取就行了,也就是只用进行逻辑读:

image

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Laksanakan mekanisme pengendalian ralat untuk pertanyaan pangkalan data dalam React Query Laksanakan mekanisme pengendalian ralat untuk pertanyaan pangkalan data dalam React Query Sep 28, 2023 pm 02:40 PM

Melaksanakan mekanisme pengendalian ralat pertanyaan pangkalan data dalam ReactQuery ReactQuery ialah perpustakaan untuk mengurus dan menyimpan data, dan ia menjadi semakin popular dalam medan bahagian hadapan. Dalam aplikasi, kita sering perlu berinteraksi dengan pangkalan data, dan pertanyaan pangkalan data boleh menyebabkan pelbagai ralat. Oleh itu, melaksanakan mekanisme pengendalian ralat yang berkesan adalah penting untuk memastikan kestabilan aplikasi dan pengalaman pengguna. Langkah pertama ialah memasang ReactQuery. Tambahkannya pada projek menggunakan arahan berikut: n

Bagaimana untuk menyelesaikan masalah limpahan nombor pertanyaan pangkalan data dalam pembangunan Java Bagaimana untuk menyelesaikan masalah limpahan nombor pertanyaan pangkalan data dalam pembangunan Java Jun 29, 2023 pm 06:46 PM

Bagaimana untuk menyelesaikan masalah limpahan nombor pertanyaan pangkalan data dalam pembangunan Java Tajuk: Bagaimana untuk menyelesaikan masalah limpahan nombor pertanyaan pangkalan data dalam pembangunan Java Abstrak: Dengan pembangunan Internet dan peningkatan secara beransur-ansur dalam jumlah data pertanyaan pangkalan data juga semakin meningkat. Dalam pembangunan Java, disebabkan oleh had memori, anda mungkin menghadapi masalah limpahan dalam bilangan pertanyaan pangkalan data. Artikel ini akan memperkenalkan beberapa cara untuk menyelesaikan masalah ini. Teks: Mengoptimumkan pernyataan pertanyaan pangkalan data Pertama, kita boleh menyelesaikan masalah ini dari perspektif mengoptimumkan pernyataan pertanyaan pangkalan data. kita boleh gunakan

Laravel middleware: Tambahkan pertanyaan pangkalan data dan pemantauan prestasi pada aplikasi anda Laravel middleware: Tambahkan pertanyaan pangkalan data dan pemantauan prestasi pada aplikasi anda Jul 28, 2023 pm 02:53 PM

Laravel Middleware: Menambah Pertanyaan Pangkalan Data dan Pemantauan Prestasi pada Aplikasi Pengenalan: Pertanyaan data dan pemantauan prestasi adalah sangat penting semasa membangunkan aplikasi web. Laravel menyediakan cara mudah untuk mengendalikan keperluan ini, iaitu perisian tengah. Middleware ialah teknologi yang mengendalikan antara permintaan dan respons. Ia boleh melakukan beberapa logik sebelum permintaan mencapai pengawal atau selepas respons dikembalikan kepada pengguna. Artikel ini akan memperkenalkan cara menggunakan perisian tengah Laravel untuk melaksanakan pertanyaan pangkalan data dan pemantauan prestasi. 1. Buat bahagian tengah

Bagaimana untuk menanyakan pangkalan data dan memaparkan keputusan menggunakan PHP Bagaimana untuk menanyakan pangkalan data dan memaparkan keputusan menggunakan PHP May 02, 2024 pm 02:15 PM

Langkah-langkah untuk menggunakan PHP untuk menanyakan pangkalan data dan memaparkan keputusan: sambungkan ke pangkalan data menanyakan hasil carian, merentasi baris keputusan pertanyaan dan mengeluarkan data lajur tertentu;

Petua pertanyaan pangkalan data PHP: Cara menggunakan fungsi mysqli_query untuk melaksanakan pertanyaan SQL Petua pertanyaan pangkalan data PHP: Cara menggunakan fungsi mysqli_query untuk melaksanakan pertanyaan SQL Jul 29, 2023 pm 04:42 PM

Petua pertanyaan pangkalan data PHP: Cara menggunakan fungsi mysqli_query untuk melaksanakan pertanyaan SQL Semasa membangunkan aplikasi PHP, berinteraksi dengan pangkalan data adalah bahagian yang sangat penting. Untuk operasi pertanyaan, PHP menyediakan beberapa fungsi terbina dalam untuk melaksanakan pernyataan SQL. Artikel ini akan memberi tumpuan kepada cara menggunakan fungsi mysqli_query untuk membantu pembangun melaksanakan operasi pertanyaan pangkalan data dengan lebih baik. 1. Pengenalan kepada fungsi mysqli_query Fungsi mysqli_query ialah fungsi terbina dalam PHP.

Prestasi Tinggi PHP: Cara Mengoptimumkan Pertanyaan Pangkalan Data Prestasi Tinggi PHP: Cara Mengoptimumkan Pertanyaan Pangkalan Data Jun 04, 2023 am 08:40 AM

Dalam era Internet semasa, dengan pertumbuhan data yang pesat, pangkalan data telah menjadi teras perkhidmatan. Prestasi dan kelajuan pangkalan data secara langsung mempengaruhi pengalaman pengguna dan kebolehgunaan tapak web dan aplikasinya Oleh itu, cara mengoptimumkan pertanyaan pangkalan data adalah isu yang perlu difokuskan oleh pembangun. Dalam bahasa PHP, melalui pengoptimuman pernyataan pertanyaan pangkalan data, prestasi program dapat ditingkatkan, beban pada pelayan dapat dikurangkan, dan kestabilan perkhidmatan dapat ditingkatkan. Artikel ini akan memperkenalkan cara mengoptimumkan pertanyaan pangkalan data dari aspek berikut: 1. Menggunakan indeks semasa melakukan pertanyaan

Bagaimana untuk melaksanakan pertanyaan pangkalan data dan pemetaan hasil dalam PHP? Bagaimana untuk melaksanakan pertanyaan pangkalan data dan pemetaan hasil dalam PHP? Jul 01, 2023 am 09:04 AM

PHP ialah bahasa pengaturcaraan sebelah pelayan yang sangat popular yang sangat fleksibel dan mudah dipelajari dan digunakan. Pertanyaan pangkalan data dan pemetaan hasil adalah langkah yang sangat penting semasa membangunkan aplikasi web. Dalam artikel ini, kami akan meneroka cara PHP melaksanakan pertanyaan pangkalan data dan pemetaan hasil. Mula-mula, mari kita fahami apakah pertanyaan pangkalan data dan pemetaan hasil. Pertanyaan pangkalan data ialah proses mendapatkan semula data melalui pelayan pangkalan data. Pemetaan keputusan ialah proses menukar hasil pertanyaan pangkalan data kepada struktur data yang boleh digunakan dalam atur cara. PHP menyediakan

Pembangunan Laravel: Bagaimana untuk menggunakan Eloquent ORM untuk pertanyaan pangkalan data? Pembangunan Laravel: Bagaimana untuk menggunakan Eloquent ORM untuk pertanyaan pangkalan data? Jun 14, 2023 pm 12:47 PM

Laravel ialah rangka kerja pembangunan PHP yang popular yang menyediakan satu siri alat dan fungsi pembantu untuk mempercepatkan pembangunan aplikasi web. Antaranya, EloquentORM ialah salah satu alat yang digunakan untuk operasi pangkalan data dalam rangka kerja Laravel, membolehkan pembangun Laravel membuat pertanyaan dan mengendalikan pangkalan data dengan lebih cepat. Dalam artikel ini, kami akan menyelidiki cara menggunakan EloquentORM untuk pertanyaan pangkalan data. Pasang EloquentORM Mula-mula, kita perlu memasang

See all articles