首頁 資料庫 mysql教程 理解SQL SERVER中的逻辑读,预读和物理读

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

Jun 07, 2016 pm 05:36 PM
培訓課程 資料庫查詢

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1669
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
在 React Query 中實作資料庫查詢的錯誤處理機制 在 React Query 中實作資料庫查詢的錯誤處理機制 Sep 28, 2023 pm 02:40 PM

在ReactQuery中實作資料庫查詢的錯誤處理機制ReactQuery是一個用於管理和快取資料的函式庫,它在前端領域越來越受歡迎。在應用程式中,我們經常需要與資料庫進行交互,而資料庫查詢可能會出現各種錯誤。因此,實現一個有效的錯誤處理機制對於確保應用程式的穩定性和使用者體驗至關重要。第一步是安裝ReactQuery。使用以下命令將其新增至項目:n

Laravel中間件:為應用程式新增資料庫查詢和效能監控 Laravel中間件:為應用程式新增資料庫查詢和效能監控 Jul 28, 2023 pm 02:53 PM

Laravel中間件:為應用程式新增資料庫查詢和效能監控導言:在開發網頁應用程式時,資料查詢和效能監控是非常重要的。 Laravel提供了一種方便的方式來處理這些需求,即中間件。中間件是在請求和回應之間進行處理的技術,它可以在請求到達控制器之前或回應返回給使用者之後執行一些邏輯。本文將介紹如何使用Laravel中間件來實現資料庫查詢和效能監控。一、創建中間

Java開發中如何解決資料庫查詢數量溢位問題 Java開發中如何解決資料庫查詢數量溢位問題 Jun 29, 2023 pm 06:46 PM

Java開發中如何解決資料庫查詢數量溢出問題標題:Java開發中如何解決資料庫查詢數量溢出問題摘要:隨著互聯網的發展和資料量的逐漸增大,資料庫查詢的數量也越來越大。在Java開發中,由於記憶體的限制,可能會遇到資料庫查詢數量溢出的問題。本文將介紹幾種解決這個問題的方法。正文:優化資料庫查詢語句首先,我們可以從最佳化資料庫查詢語句的角度來解決這個問題。我們可以使用

PHP資料庫查詢技巧:如何使用mysqli_query函數執行SQL查詢 PHP資料庫查詢技巧:如何使用mysqli_query函數執行SQL查詢 Jul 29, 2023 pm 04:42 PM

PHP資料庫查詢技巧:如何使用mysqli_query函數執行SQL查詢在開發PHP應用程式時,與資料庫的互動是非常重要的部分。對於查詢操作,PHP提供了一些內建的函數來執行SQL語句。本文將重點放在mysqli_query函數的使用方法,幫助開發者更好地進行資料庫查詢操作。一、mysqli_query函數介紹mysqli_query函數是PHP的內建函

如何使用 PHP 查詢資料庫並顯示結果 如何使用 PHP 查詢資料庫並顯示結果 May 02, 2024 pm 02:15 PM

使用PHP查詢資料庫並顯示結果的步驟:連接資料庫;查詢資料庫;顯示結果,遍歷查詢結果的行並輸出特定列資料。

PHP高效能:如何最佳化資料庫查詢 PHP高效能:如何最佳化資料庫查詢 Jun 04, 2023 am 08:40 AM

在當前網路時代,隨著資料的爆炸性成長,資料庫成為了一個服務的核心。資料庫的效能和速度更是直接影響了網站及其應用程式的使用者體驗和可用性,因此如何優化資料庫查詢是開發人員需要著重研究的問題。而在PHP語言中,透過對資料庫查詢語句的最佳化,可以提高程式的效能,減少伺服器的負擔,提高服務的穩定性。本文將從以下幾個方面,介紹如何最佳化資料庫查詢:一、使用索引在進行查詢時

PHP中如何進行全文檢索? PHP中如何進行全文檢索? May 13, 2023 am 08:00 AM

隨著網路技術的不斷發展,資料量的爆炸性成長和各種文字資料的廣泛應用,全文檢索成為了非常重要的技術。全文檢索是一種能夠快速、準確地找到文字資料的方法,廣泛應用於搜尋引擎、論壇、部落格、電商網站等應用程式場景。在PHP程式設計中,如何實現全文檢索呢?一、什麼是全文檢索?在傳統的關係型資料庫中,我們通常會使用SQL語句進行模糊查詢,但是當資料量較大時,這種查詢方法會

PHP實作資料庫查詢和結果對應的方法? PHP實作資料庫查詢和結果對應的方法? Jul 01, 2023 am 09:04 AM

PHP是一種非常受歡迎的伺服器端程式語言,它非常靈活,易於學習和使用。在開發Web應用程式時,資料庫查詢和結果映射是非常重要的步驟。在本文中,我們將探討PHP如何實作資料庫查詢和結果對應的方法。首先,讓我們來了解一下什麼是資料庫查詢和結果映射。資料庫查詢是透過資料庫伺服器檢索資料的過程。結果映射是將資料庫查詢的結果轉換成程式中可以使用的資料結構的過程。 PHP提供

See all articles