Оценка размера кучи
Для оценки размера пространства, требуемого для хранения данных в куче, можно использовать следующую процедуру.
Укажите количество строк в новой таблице:
Num_Rows возвращает число строк в таблице.
Укажите количество столбцов с фиксированной и изменяемой длиной, а также рассчитайте необходимый размер места для их хранения.
Вычислите размер, занимаемый каждой из этих групп столбцов в строке данных. Размер столбца зависит от типа данных и длины.
Num_Cols возвращает общее количество столбцов (фиксированной и переменной ширины)
Fixed_Data_Size возвращает общий размер в байтах всех ключевых столбцов фиксированной длины.
Num_Variable_Cols возвращает количество включенных столбцов переменной длины.
Max_Var_Size = максимальный общий размер в байтах всех столбцов переменной длины
Часть строки, называемая битовой картой NULL, зарезервирована для управления свойством столбца принимать значение NULL. Вычислите ее размер.
Null_Bitmap = 2 + ((Num_Cols + 7) / 8)
Следует использовать только целую часть этого выражения и Остаток должен быть отброшен.
Расчет размера данных с переменной длиной:
Если таблица содержит столбцы с переменной длиной, определите, сколько пространства потребуется для хранения столбцов в строке:
Variable_Data_Size* = 2 + (Num_Variable_Cols x 2) + *Max_Var_Size
Добавленные к значению ***Max\_Var\_Size*** байты необходимы для отслеживания каждого столбца переменной длины. Эта формула исходит из предположения, что все столбцы переменной длины заполнены на 100 %. Если предполагается, что будет использовано меньше места для хранения столбца изменяемой длины, можно изменить значение ***Max\_Var\_Size*** в процентах от общей изменяемой длины для более точного подсчета общего размера таблицы.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/ms143504.alert_note(SQL.110).gif" title="Примечание" alt="Примечание" /><strong>Примечание</strong></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Можно сочетать столбцы varchar, nvarchar, varbinary или sql_variant, в результате чего общая ширина определенной таблицы превысит 8060 байт. Длина каждого из этих столбцов не должна превышать ограничение в 8 000 байт, существующее для столбцов varchar, nvarchar,, varbinary и sql_variant. Тем не менее их общая ширина в таблице может превышать предел в 8 060 байт.</p></td>
</tr>
</tbody>
</table>
Если в таблице нет столбцов переменной ширины, присвойте параметру ***Variable\_Data\_Size*** значение 0.
Вычислите общий размер строк:
Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4
Значение 4 в формуле — это служебные данные заголовка строки данных.
Расчет количества строк на странице (8 096 свободных байт на страницу):
Rows_Per_Page = 8096 / (Row_Size + 2)
Так как строки не могут разрываться на разные страницы, общее количество строк на страницу необходимо округлить до меньшего целого значения целой строки. Значение 2 в формуле соответствует записи строки в массиве областей памяти страницы.
Вычислите количество страниц, необходимое для хранения всех строк:
Num_Pages* = Num_Rows / *Rows_Per_Page
Вычисленное количество страниц должно быть округлено в большую сторону до ближайшей целой страницы.
Вычислите размер пространства, требуемого для хранения данных в куче (всего 8192 на страницу):
Размер кучи (в байтах) = 8192 x Num_Pages
Этот расчет не учитывает следующие факторы.
Секционирование
Размер служебных данных секционирования минимален, но его сложно рассчитать. Он не столь важен, чтобы включать в расчеты.
Страницы размещения
Предусмотрена по меньшей мере одна IAM-страница, используемая для отслеживания страниц, выделенных куче, но размер служебных данных минимален, и алгоритма точного детерминированного вычисления количества используемых IAM-страниц не существует.
Значения LOB
Алгоритм точного определения места, используемого для хранения значений данных типа LOB varchar(max), varbinary(max), nvarchar(max), text, ntext, xml и image сложен. Достаточно просто прибавить ожидаемую среднюю величину значений LOB к общему размеру кучи.
Сжатие
Размер сжатой кучи нельзя вычислить заранее.
Разреженные столбцы
Сведения о требованиях разреженных столбцов к месту на диске см. в разделе Использование разреженных столбцов.
См. также
Основные понятия
Кучи (таблицы без кластеризованных индексов)
Описания кластеризованных и некластеризованных индексов
Создание кластеризованных индексов
Создание некластеризованных индексов
Оценка размера кластеризованного индекса
Оценка размера некластеризованного индекса