Размер страницы данных в SQL 2019 - PullRequest
0 голосов
/ 08 июля 2019

Конечно, я что-то упускаю или делаю что-то не так.Насколько мне известно, SQL-сервер имеет размер страницы данных 8086. Однако результаты моего теста не складываются.

Тестовые сценарии

 CREATE table dbo.Heap
(
 Val varchar(8000) not null
);
--Fill it with half the page size data
 insert into dbo.Heap    
 SELECT  replicate('0',4043)


SELECT  [avg_page_space_used_in_percent],[min_record_size_in_bytes],[avg_record_size_in_bytes],[max_record_size_in_bytes]
from sys.dm_db_index_physical_stats(db_id(),object_id(N'dbo.Heap'),0,null,'DETAILED'); 

SELECT
      bf.*   
    FROM sys.dm_os_buffer_descriptors bf
	INNER JOIN sys.allocation_units AS au
    ON au.[allocation_unit_id] = bf.[allocation_unit_id]
	INNER JOIN sys.partitions AS p
    ON au.[container_id] = p.[partition_id]
	INNER JOIN sys.indexes AS i
    ON i.[index_id] = p.[index_id] AND p.[object_id] = i.[object_id]
WHERE p.[object_id] > 100 
    and [database_id] = DB_ID () AND p.[object_id]=OBJECT_ID('Heap')
enter image description here

sys.dm_db_index_physical_stats скажите, что половина страницы данных заполнена.Согласно sys.dm_os_buffer_descriptors на странице имеется 4040 свободного места.

Чего я не понимаю, так это max_record_size_in_bytes + Free_space_in_bytes= 8096 откуда исходит extar 10 байт?

Платформа: SQL 2019

1 Ответ

0 голосов
/ 08 июля 2019

При использовании анатомии страницы и статьи Пола Рэндала статей, структура страницы данных 8K для вашего примера выглядит следующим образом:

SELECT
      96 --page header
    + 2 --Two bytes of record metadata (record type)
    + 2 --Two bytes pointing forward in the record to the null bitmap
    + 0 --Fixed length portion of the record, containing the columns storing data types that have fixed lengths
    + 2 --Two bytes for count of columns in the record
    + 1 --Variable number of bytes to store null bitmap
    + 2 --Two bytes for the count of variable-length columns
    + 2 --Two bytes per variable length column, giving the offset to the end of the column value
    + 4043 --column data
    + 4040 --page free space
    + 2 --record slot array
--total 8192
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...