在平時優化sql的時候,最長用的就是:set statistics on,它可以用來檢視我們寫的查詢語句到底效能如何,不過,究竟這個效能的指標是怎麼樣的呢?首先需要明白的,就是各項資料的意義。
輸出項含義
table
表的名稱。
scan count
執行的掃瞄次數。
logical reads
從資料快取讀取的頁數。
physical reads
從磁碟讀取的頁數。
read-ahead reads
為進行查詢而放入快取的頁數。
lob logical reads
從資料快取讀取的text、ntext、image或大值型別 (varchar(max)、nvarchar(max)、varbinary(max)) 頁的數目。
lob physical reads
從磁碟讀取的text、ntext、image或大值型別頁的數目。
lob read-ahead reads
為進行查詢而放入快取的text、ntext、image
或大值型別頁的數目。
掃瞄計數(scan count):在查詢中涉及到的表被訪問的次數。在我們的例子中,其中的表只被訪問了1次,由於查詢中不包括連線命令,這一資訊並不是十分有用,但如果查詢中包含有乙個或多個連線,則這一資訊是十分有用的。(乙個迴圈外部的表的scan count值為1,但對於乙個迴圈內的表而言,其值為迴圈的次數。可以想象得到,對於乙個迴圈內的表而言,其scan count值越小,它所使用的資源越少,查詢的效能也就越高。因此在調節乙個帶連線的查詢的效能時,需要關注scan count的值,在進行調節時,注意觀察它是增加還是減少了。)
邏輯讀取(logical reads):這是set statistics io或set statistics time命令提供的最有用的 資料。我們知道,sql server在可以對任何資料進行操作前,必須首先把資料讀取到其資料緩衝區中。此外,我們也知道sql server何時會從資料緩衝區中讀取資料,並把資料讀取到大小為8k位元組的頁中。那麼logical reads的意義是什麼呢?logical reads是指sql server為得到查詢中的結果而必須從資料緩衝區讀取的頁數。在執行查詢時,sql server不會讀取比實際需求多或少的資料,因此,當在相同的資料集上執行同乙個查詢,得到的logical reads的數字總是相同的。(sql server執行查詢時的logical reads值每一次這個數值是不會變化的。因此,在進行查詢效能的調節時,這是乙個可以用來衡量你的調節措施是否成功的乙個很好的標準。如果 logical reads值下降,就表明查詢使用的伺服器資源減少,查詢的效能有所提高。如果logical reads值增加,則表示調節措施降低了查詢的效能。在其他條件不變的情況下,乙個查詢使用的邏輯讀越少,其效率就越高,查詢的速度就越快。)
物理讀取(physical reads):物理讀,在執行真正的查詢操作前,sql server必須從磁碟上向資料緩衝區中讀取它所需要的資料。在sql server開始執行查詢前,它要作的第一件事就是檢查它所需要的資料是否在資料緩衝區中,如果在,就從中讀取,如果不在,sql server必須首先將它需要的資料從磁碟上讀到資料緩衝區中。我們可以想象得到,sql server在執行物理讀時比執行邏輯讀需要更多的伺服器資源。因此,在理想情況下,我們應當盡量避免物理讀操作。下面的這一部分聽起來讓人容易感到糊塗 了。在對查詢的效能進行調節時,可以忽略物理讀而只專注於邏輯讀。你一定會納悶兒,剛才不是還說物理讀比邏輯讀需要更多的伺服器資源嗎?情況確實是這樣, sql server在執行查詢時所需要的物理讀次數不可能通過效能調節而減少的。減少物理讀的次數是dba的一項重要工作,但它涉及到整個伺服器效能的調節,而 不僅僅是查詢效能的調節。在進行查詢效能調節時,我們不能控制資料緩衝區的大小或伺服器的忙碌程度以及完成查詢所需要的資料是在資料緩衝區中還是在磁碟 上,唯一我們能夠控制的資料是得到查詢結果所需要執行的邏輯讀的次數。因此,在查詢效能的調節中,我們可以心安理得地不理會set statistics io命令提供的physical read的值。(減少物理讀次數、加快sql server執行速度的一種方式是確保伺服器的物理記憶體足夠多。)
預計(read-ahead reads):與physical reads一樣,這個值在查詢效能調節中也沒有什麼用。read-ahead reads表示sql server在執行預讀機制時讀取的物理頁。為了優化其效能,sql server在認為它需要資料之前預先讀取一部分資料,根據sql server對資料需求**的準確程度,預讀的資料頁可能有用,也可能沒用。
SQL基礎 統計資訊解釋
在平時優化sql的時候,最長用的就是 set statistics on,它可以用來檢視我們寫的查詢語句到底效能如何,不過,究竟這個效能的指標是怎麼樣的呢?首先需要明白的,就是各項資料的意義。含義table 表的名稱。scan count 執行的掃瞄次數。logical reads 從資料快取讀取的...
SQL統計資訊解釋
sql基礎 統計資訊解釋 在平時優化sql的時候,最長用的就是 set statistics on,它可以用來檢視我們寫的查詢語句到底效能如何,不過,究竟這個效能的指標是怎麼樣的呢?首先需要明白的,就是各項資料的意義。輸出項含義 table 表的名稱。scan count 執行的掃瞄次數。logic...
SQL效能 統計資訊
一 統計資訊 統計資訊主要是描述資料庫中表 索引的大小,規模,資料分布狀況等的一類資訊。last analyzed欄位表示上次統計資訊蒐集的時間,可以根據這個字段快速的了解最近一次統計資訊蒐集的時間。二 收集統計資訊的方法 1 使用gather stats job自動收集 在建立資料庫時自動建立,由...