Оценка размера кучи
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Для оценки размера пространства, требуемого для хранения данных в куче, можно использовать следующую процедуру.
Укажите количество строк в новой таблице:
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 в процентах от общей изменяемой ширины для более точного подсчета общего размера таблицы.
Примечание.
Можно сочетать столбцы varchar, nvarchar, varbinaryили sql_variant , в результате чего общая ширина определенной таблицы превысит 8 060 байт. Длина каждого из этих столбцов должна быть в пределах 8000 байт для столбцов типа varchar, nvarchar, varbinary или sql_variant. Тем не менее их общая ширина в таблице может превышать предел в 8 060 байт.
Если в таблице нет столбцов переменной ширины, присвойте параметру 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, ntextxmlи image сложен. Достаточно просто прибавить ожидаемую среднюю величину значений LOB к общему размеру кучи.
Сжатие
Размер сжатой кучи нельзя вычислить заранее.
Разреженные столбцы
Сведения о требованиях разреженных столбцов к месту на диске см. в разделе Use Sparse Columns.
См. также
Кучи (таблицы без кластеризованных индексов)
Описание кластеризованных и некластеризованных индексов
Создание кластеризованных индексов
Создание некластеризованных индексов
Оценка размера таблицы
Оценка размера кластеризованного индекса
Оценка размера некластеризованного индекса
Оценка размера базы данных