Вот простой демонстрационный скрипт, с которого можно начать знакомство с внутренними компонентами SQL Server.Чтобы увидеть отдельные действия запроса, перейдите по ссылке Блог SQLSkills Пола Рэндала .
Другие посты в этом блоге будут посвящены таким темам, как DBCC PAGE, что позволит вам увидеть содержимое PAGE иDBCC IND, который покажет вам карты размещения для таблиц / индексов.Я рекомендую прочитать копию Microsoft SQL Server 2008 Internals, в которой подробно рассматриваются все эти темы.
Демонстрационный сценарий записей журнала транзакций
Для двух вариантов выбора пропуски отображаются как физические чтения и чтения с опережающим чтением, это чтения с диска в пул буферов.Затем механизм запросов использует эти страницы, и это логическое чтение.Таким образом, для статистики 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
Для содержимого пула буферов начальныйДело в том, что это DMV
SELECT *
FROM sys.dm_os_buffer_descriptors