ここでは、SQL Server内部について学習するための簡単なデモスクリプトを示します。クエリの個々の動作を確認するには、Paul Randal's SQLSkills Blogにアクセスしてください。
このブログの他の記事は、DBCC PAGEのようなトピックをカバーしています。これは、PAGEとDBCC INDの内容を見ることができ、テーブル/インデックスの割り当てマップを表示します。これらのトピックをすべて網羅したMicrosoft SQL Server 2008 Internalsのコピーを読むことをお勧めします。
2を選択するために
トランザクションログレコードデモスクリプト
に物理読み込みおよび先読み読み取りとしてミスが示され、これらは、ディスクからバッファー・プールに読み込みます。クエリエンジンはこれらのページを使用し、これが論理読み取りです。したがって、ウォームセレクトのio統計では、物理的な読み込みや先読みの読み込みが行われないため、バッファプール内にすでに存在するすべてのページが必要になります。バッファプールの内容を出発点については
/* -- Cleanup Script
USE master
DROP DATABASE ExampleDB
*/
SET NOCOUNT ON
SET STATISTICS IO OFF
GO
CREATE DATABASE ExampleDB
GO
USE ExampleDB
GO
-- Force a CHECKPOINT to CLEAR the Transaction Log
CHECKPOINT
GO
-- Show Empty Transaction Log
SELECT * FROM fn_dblog(NULL,NULL)
GO
-- CREATE SIMPLE TABLE
CREATE TABLE NewTable
(
A int identity NOT NULL PRIMARY KEY,
B char(8000) NOT NULL DEFAULT ('')
)
GO
-- Show Transaction Log With CREATE TABLE records
SELECT * FROM fn_dblog(NULL,NULL)
GO
-- Force a CHECKPOINT to CLEAR the Transaction Log
CHECKPOINT
GO
PRINT 'INSERT Start'
GO
INSERT NewTable
VALUES (DEFAULT)
GO 1000
PRINT 'INSERT End'
GO
-- Show Transaction Log With INSERT records
SELECT * FROM fn_dblog(NULL,NULL)
GO
-- Turn On IO Statistics (these appear in the messages tab)
SET STATISTICS IO ON
GO
-- Force a CHECKPOINT to CLEAR the Transaction Log and modified buffer pages
CHECKPOINT
GO
-- DROP CLEAN BUFFERS to empty cache
DBCC DROPCLEANBUFFERS
GO
PRINT 'SELECT Start Cold Cache'
GO
SELECT * FROM NewTable
GO
PRINT 'SELECT End Cold Cache'
GO
PRINT 'SELECT Start Warm Cache'
GO
SELECT * FROM NewTable
GO
PRINT 'SELECT End Warm Cache'
GO
-- Force a CHECKPOINT to CLEAR the Transaction Log
CHECKPOINT
GO
DROP TABLE NewTable
-- Show Transaction Log With DROP TABLE records
SELECT * FROM fn_dblog(NULL,NULL)
GO
PageSplit拡張イベントは、次の中で改善されるまで、ログは見て最高の場所ですあなたの質問のポイント2.2に関しては、このDMV
SELECT *
FROM sys.dm_os_buffer_descriptors
ですバージョン。 [いくつかのサンプルコードはこちら](http://sqlblog.com/blogs/michael_zilberstein/archive/2011/04/25/35175.aspx) –