Я готовлюсь к экзамену по SQL Server (70-431). У меня есть книга от Sybex "SQL Server 2005 - Внедрение и сопровождение" . Я немного запутался в оценке размера стола.
Во 2-й главе объясняется, как это сделать:
- Подсчитайте размер строки по формуле:
Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + Row_Header
.
Fixed_Data_Size
- сумма всех размеров столбцов фиксированной длины (простая сумма)
Variable_Data_Size = 2 + (num_variable_columns × 2) + max_varchar_size
, num_variable_columns
- количество столбцов переменной длины, max_varchar_size
- максимальный размер столбца varchar
null_bitmap = 2 + ((number of columns + 7) ÷ 8)
(округлено)
Row_header
всегда равно 4
.
- Расчет строк на странице по формуле:
Rows_Per_Page = 8096 ÷ (Row_Size + 2)
(округлено в меньшую сторону)
- Оценка количества строк в таблице. Допустим, в таблице 1000 строк.
- Расчет необходимого количества страниц:
No_Of_Pages = 1,000 / Rows_Per_Page
(округлено)
- Общий размер:
Total_Size = No_Of_Pages * 8,192
, где 8 192 - это размер одной страницы.
Так что для меня все совершенно ясно. Я сделал один пример и проверил ответы в книге, что мои расчеты верны. Но есть один вопрос, который меня смущает.
Вопрос: у нас есть таблица со следующей схемой:
Name Datatype
-------------------
ID Int
VendorID Int
BalanceDue Money
DateDue Datetime
Ожидается, что в этой таблице будет около 5000 строк. Вопрос (буквально): «Сколько места займет таблица Receivables?»
Так что мой ответ прост:
null_bitmap = 2 + ((4+7) / 8) = 3.375 = 3 (rounded)
fixed_datasize = 4 + 4 + 8 + 8 = 24
variable_datasize = 0
row_header = 4 (always)
row_size = 3 + 24 + 0 + 4 = 31
Но в ответе они опускают row_header
и не добавляют 4
. Это ошибка в книге или row_header
добавляется только в некоторых случаях (которые не упомянуты в книге)? Я думал, что, возможно, row_header
добавляется, только если в таблице есть поля переменной длины, но есть еще одно упражнение, в котором нет полей переменной длины и добавлено row_header
. Буду признателен, если кто-нибудь объяснит мне это. Благодаря.