Конечно, я что-то упускаю или делаю что-то не так.Насколько мне известно, 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')
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