Как известно, страница всегда имеет размер 8 КБ (8192 байта) и содержит два основных раздела: заголовок и текст. Заголовок имеет фиксированный размер 96 байтов и имеет одинаковое содержимое и формат независимо от типа страницы.
У меня есть таблица с двумя столбцами типа данных int:
IF OBJECT_ID('t1', 'U') IS NOT NULL
DROP TABLE t1;
CREATE TABLE t1 ( C1 INT
,C2 INT)
Вставьте 477 строк в t1:
;WITH cte AS
(
SELECT 1 AS ValueFor_C1
,1 AS ValueFor_C2
UNION ALL
SELECT ValueFor_C1 + 1
,ValueFor_C2 + 1
FROM cte
WHERE ValueFor_C1 < 477
)
INSERT INTO t1
SELECT *
FROM cte
OPTION (MAXRECURSION 0)
4 байта + 4 байта = 8 байтов на один размер строки.
(477 строк * 8 байт) + 92 байта = размер таблицы 3908 байт.
8192 байта - 3908 байтов = 4284 байта свободного места осталось.
Но page_count показывает, что данные занимают две страницы:
SELECT i.name,
i.type_desc,
s.page_count,
s.record_count,
s.index_level
FROM sys.indexes i
JOIN sys.dm_db_index_physical_stats(DB_ID(N'AdventureWorks2012'),
OBJECT_ID(N'dbo.t1'),
NULL,
NULL,
'DETAILED') AS s
ON i.index_id = s.index_id
WHERE i.object_id = OBJECT_ID(N'dbo.t1');
name type_desc page_count record_count index_level
NULL HEAP 2 477 0
Почему создаются две страницы вместо одной страницы?