2017-12-17 7 views
0

SQL Server(2014)でIO STATISTICSの出力を理解し、AdventureWorksをデータベースとして使用しようとしています。さまざまなキャッシュをクリーニングした後でも、論理的な読み込みがIOスタティックで表示されるのはなぜですか?

は、ここでは、コードにある

DBCC FREESYSTEMCACHE('ALL') 
DBCC FREESESSIONCACHE 
DBCC FREEPROCCACHE 
DBCC FLUSHPROCINDB(7) 
CHECKPOINT 
DBCC DROPCLEANBUFFERS 

SET STATISTICS TIME ON 
SET STATISTICS IO ON 
SELECT * FROM [HumanResources].[Employee] 
SET STATISTICS TIME OFF 
SET STATISTICS IO OFF 

出力は

SQL Serverの実行時間である: CPU時間= 0ミリ秒、経過時間= 0ミリ秒。

(290行が該当) テーブル '従業員'。スキャン回数1、論理は物理的には1を読み込み、9を読み込み、先読みが7を読み込み、ロブ論理は、ロブ物理的には0を読み込み、0を読み込み、先読みは0

SQL Serverの実行時間読み込むロブ: CPUを時間= 15ms、経過時間= 105ms。

すべてのキャッシュとバッファをクリーニングした後でも、なぜ論理読み取りが0になるのではなく、物理読み取りが10になるのはなぜですか(すでに1つの+ 9ページの論理読み取り)?論理的な読み取りの私の理解は、データキャッシュから読み取られたページの数です(言い換えれば、SQL Serverのテーブルのデータのキャッシュ)。

答えて

2

すべてのページ読み取りは、バッファー・プール内のページから読み取られ、論理読み取りです。

単一の物理的な読み取りとは、1ページがディスクからバッファプールに読み込まれるのを待つだけで済むという意味です。

残りはで読み込まれ、クエリが必要とした時点ですでにキャッシュに入っていました。

7と1が8ではないので、ページの矛盾が1つも残ります。9.おそらくメカニズムです。https://blogs.msdn.microsoft.com/ialonso/2011/12/09/the-read-ahead-that-doesnt-count-as-read-ahead/

関連する問題