다음은 SQL Server Internals에 대해 배우기 시작하는 간단한 데모 스크립트입니다. 쿼리의 개별 동작을 확인하려면 Paul Randal's SQLSkills Blog으로 이동하십시오.
이 블로그의 다른 게시물은 DBCC 페이지와 같은 주제를 다루며 페이지 및 DBCC IND의 내용을 볼 수 있습니다. DBCC IND는 테이블/색인에 대한 할당 맵을 보여줍니다. 이 모든 주제를 자세히 다루는 Microsoft SQL Server 2008 Internals 사본을 읽는 것이 좋습니다. 로그 레코드 데모 스크립트는 두 가지 선택을 위해
미스가 물리적으로 표시됩니다
거래 읽기 및 미리 읽기 다음은 버퍼 풀에 디스크에서 읽고 있습니다 읽습니다. 그런 다음 쿼리 엔진은 이러한 페이지를 사용하며 이것은 논리적 읽기입니다. 따라서 warm select의 io stats에는 실제 읽기 또는 미리 읽기가 없으므로 버퍼 풀에 이미있는 모든 페이지가 필요합니다. 버퍼 풀의 내용에 대한
/* -- 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) –