Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по структуре страницы  [new]
euronimus33
Member

Откуда:
Сообщений: 14
SQL Server 2012
IF OBJECT_ID(N'dbo.TestStructure',N'U') IS NOT NULL
DROP Table dbo.TestStructure;
GO

CREATE TABLE dbo.TestStructure
	(
		id	INT		NOT NULL,	--4 байта
		filler1	CHAR(36)	NOT NULL,	-- 36 байт
		filler2 CHAR(216)	NOT NULL	--216 байт 256 байт итого
	);
GO

DECLARE @i int = 0;
WHILE @i<30
	BEGIN
		SET @i = @i+1;
		INSERT INTO dbo.TestStructure (id,filler1,filler2)
		VALUES (@i,'a','b');
	END;
GO

SELECT	index_type_desc
		,page_count
		,record_count
		,avg_page_space_used_in_percent
FROM	sys.dm_db_index_physical_stats
		(DB_ID(N'tempdb'), OBJECT_ID(N'dbo.TestStructure'), NULL, NULL,'DETAILED');
GO


Получаем на выходе
index_type_desc = HEAP,
page_count =1,
record_count = 30,
avg_page_space_used_in_percent = 98.1961947121324

Вопрос откуда взялась такая цифра? Ведь если исходить из того, что страница равна 8060 байт, то цифра должна быть
(256*30)*100/8060 = 95.28?
Не бейте, если вопрос глупый )))
9 апр 15, 11:50    [17492871]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
Konst_One
Member

Откуда:
Сообщений: 11625
ну так пробелы то вместо данных
9 апр 15, 11:53    [17492885]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
euronimus33,

Это не цифра.
9 апр 15, 11:53    [17492890]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
euronimus33
Member

Откуда:
Сообщений: 14
Konst_One,

DECLARE @a1 AS INT, @a2 AS CHAR(36), @a3 AS CHAR(216)
SET	@a1 = 1
SET @a2 = 'a'
SET @a3 = 'b'
SELECT DATALENGTH(@a1) + DATALENGTH(@a2) + DATALENGTH(@a3)
GO

сумма 256, при чем здесь пробелы?
9 апр 15, 11:55    [17492898]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
euronimus33
Member

Откуда:
Сообщений: 14
iap,
хорошо, число
9 апр 15, 11:56    [17492902]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
Konst_One
Member

Откуда:
Сообщений: 11625
автор
When the collation code page uses double-byte characters, the storage size is still n bytes. Depending on the character string, the storage size of n bytes can be less than n characters.
9 апр 15, 12:00    [17492929]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
euronimus33,

так, служебные байты еще есть. для вашего случая их 9 на каждую строку будет (7 непосредственно в слоте и 2 в row offset array). ну и под данные + row offset array на странице 8096 выделяется.
9 апр 15, 12:03    [17492951]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
o-o
Guest
euronimus33,

вы не посчитали место под row overhead и под row offset array для каждой строки на странице.
последнее -- это 2 байта на row,
а первое меняется в зависимости от типа данных и точные цифры искать лень
9 апр 15, 12:03    [17492952]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Размер одной записи это Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4
Т.е. больше 256 в данном случае
9 апр 15, 12:04    [17492955]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
o-o
Guest
daw
ну и под данные + row offset array на странице 8096 выделяется.

и кстати, да. откуда 8060?
data pages have a fixed size of 8 KB, or 8,192 bytes.
the page header occupies the first 96 bytes of each data page (leaving
8,096 bytes for data, row overhead, and row offsets)
---
наверное с этим попутали:
The maximum size of a single data row is 8,060 bytes of in-row data.
9 апр 15, 12:07    [17492977]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
euronimus33
Member

Откуда:
Сообщений: 14
Всем спасибо. Буду переваривать
9 апр 15, 12:21    [17493056]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по структуре страницы  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
euronimus33,

Еще можете попереваривать оф. документацию:
Estimate the Size of a Heap
Estimate the Size of a Clustered Index
Estimate the Size of a Nonclustered Index
9 апр 15, 16:17    [17494592]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить