Поделиться через


Оценка размера кучи

Для оценки размера пространства, требуемого для хранения данных в куче, можно использовать следующую процедуру.

  1. Укажите количество строк в новой таблице:
    Num_Rows = количество строк в таблице
  2. Укажите количество столбцов с фиксированной и изменяемой длиной, а также рассчитайте необходимый размер места для их хранения.
    Вычислите размер, занимаемый каждой из этих групп столбцов в строке данных. Размер столбца зависит от типа данных и длины. Дополнительные сведения см. в разделе Типы данных (компонент Database Engine).
    Num_Cols = общее количество столбцов (фиксированной и переменной длины) Fixed_Data_Size = общий размер в байтах всех столбцов фиксированной длины Num_Variable_Cols = число столбцов переменной длины Max_Var_Size = максимальный размер в байтах всех столбцов переменной длины
  3. Часть строки, называемая битовой картой NULL, зарезервирована для управления свойством столбца принимать значение NULL. Вычислите ее размер:
    Null_Bitmap = 2 + ((число_столбцов + 7) / 8) Следует использовать только целую часть этого выражения и отбросить остаток.
  4. Вычислите размер данных с переменной длиной.
    Если таблица содержит столбцы с переменной длиной, определите, сколько пространства потребуется для хранения столбцов в строке:
    Variable_Data_Size = 2 + (число_перем_столбцов x 2) + макс_объем_перем_столбцов Формула исходит из предположения, что все столбцы переменной длины заполнены на 100%. Если предполагается, что будет использовано меньше места для хранения столбца изменяемой длины, можно изменить значение Max_Var_Size в процентах от общей изменяемой длины для более точного подсчета общего размера таблицы.
    ms189124.note(ru-ru,SQL.90).gifПримечание.
    SQL Server 2005 вводит возможность совмещать столбцы varchar, nvarchar, varbinary или sql_variant, что приводит к превышению установленной ширины таблицы в 8 060 байт. Длина каждого из этих столбцов не должна превышать ограничение в 8 000 байт для столбцов типа varchar, nvarchar, varbinary и sql_variant. Тем не менее их общая ширина в таблице может превышать ограничение 8 060 байт. Дополнительные сведения см. в разделе Превышающие размер страницы данные строки, превышающие 8 КБ.
    Если в таблице нет столбцов переменной ширины, присвойте параметру ***Variable\_Data\_Size*** значение 0.
  5. Вычислите общий размер строк:
    Row_Size = объем_фикс_данных + объем_перем_данных + битсхема_неопр + 4 Значение 4 в формуле — это служебные данные заголовка строки данных.
  6. Вычислите количество строк на страницу (8 096 свободных байт на страницу):
    Rows_Per_Page = 8096 / (размер_строки + 2) Так как размер строк не приводит к разрыву страниц, общее количество строк на страницу необходимо округлить до меньшего целого значения целой строки. Значение 2 в формуле соответствует записи строки в массиве областей памяти страницы.
  7. Вычислите количество страниц, необходимое для хранения всех строк:
    Num_Pages = число_строк / строк_на_стр Вычисленное количество страниц должно быть округлено в большую сторону до ближайшей целой страницы.
  8. Вычислите размер пространства, требуемого для хранения данных в куче (всего 8192 на страницу):
    Размер кучи (в байтах) = 8192 x Num_Pages

Эти вычисления не учитывают следующие факторы.

  • Секционирование
    Размер служебных данных секционирования минимален, но его сложно рассчитать. Он не столь важен, чтобы включать в расчеты.
  • Размещение страниц
    Предусмотрена, по меньшей мере, одна IAM-страница, используемая для отслеживания страниц, выделенных куче, но размер служебных данных минимален, и алгоритма точного детерминированного вычисления количества используемых IAM-страниц не существует.
  • Значения LOB
    Алгоритм точного определения пространства, используемого для хранения значений типов данных LOB varchar(max), varbinary(max), nvarchar(max), text, ntext, xml, и image, сложен. Достаточно просто прибавить ожидаемую среднюю величину значений LOB к общему размеру кучи.

См. также

Основные понятия

Правила проектирования кластеризованного индекса
Создание индексов (компонент Database Engine)
Правила проектирования некластеризованных индексов
Предполагаемый размер таблицы
Оценка размера кластеризованного индекса
Оценка размера некластеризованного индекса

Другие ресурсы

Оценка размера базы данных

Справка и поддержка

Получение помощи по SQL Server 2005