估計堆的大小

2022-01-22 03:27:26 字數 1777 閱讀 3638

可以使用以下步驟估計在堆中儲存資料所需的空間量:

指定表中顯示的行數:

num_rows= 表中的行數

指定固定長度和可變長度列的數量,並計算儲存所需的空間:

計算每組列在資料行中所佔據的空間。列的大小取決於資料型別和長度說明。有關詳細資訊,請參閱 資料型別(資料庫引擎)。

num_cols= 總列數(固定長度和可變長度)

fixed_data_size= 所有固定長度列的總位元組大小

num_variable_cols= 可變長度列的數量

max_var_size= 所有可變長度列的最大總位元組大小

保留行中稱為空位圖的部分以管理列的為空性。計算大小:

null_bitmap= 2 + ((num_cols+ 7) / 8)

只應使用該表示式的整數部分。而去掉其餘部分。

計算可變長度資料的大小:

如果表中有可變長度列,請確定在行中儲存這些列需使用的空間:

variable_data_size= 2 + (num_variable_colsx 2) +max_var_size

此公式假設所有可變長度列均百分之百充滿。如果預計可變長度列占用的儲存空間比例較低,則可以按照該比例調整max_var_size值,從而對整個表大小得出乙個更準確的估計。

注意您可以組合varcharnvarcharvarbinarysql_variant列,使得定義的表的總寬度超過 8,060 位元組。對於varcharnvarcharvarbinarysql_variant中的每一列,其長度仍必須限定在 8,000 位元組以內。但是,表中這些列的組合寬度可超過 8,060 位元組的限制。有關詳細資訊,請參閱行溢位資料超過 8 kb。

如果沒有可變長度列,請將variable_data_size設定為 0。

計算總的行大小:

row_size=fixed_data_size+variable_data_size+null_bitmap+ 4

公式中的值 4 是資料行的行標題開銷。

= 8096 / (row_size+ 2)

因為行不跨頁,所以每頁的行數應向下捨入到最接近的整數。公式中的數值 2 是計算行數時引入的行大小餘量。

計算儲存所有行所需的頁數:

num_pages=num_rows/rows_per_page

估計的頁數應向上捨入到最接近的整數。

計算在堆中儲存資料所需的空間量(每頁的總位元組為 8192):

堆大小(位元組)= 8192 xnum_pages

此計算不考慮以下因素:

from:

估計表大小(三) 估計無聚集索引的表的大小

估計無聚集索引的表的大小 下列步驟可用於估計儲存沒有聚集索引的表上的資料和任何附加的非聚集索引所需的空間。計算儲存資料所用的空間。計算儲存每個附加非聚集索引所用的空間。彙總計算所得的值。對於每個計算,都要指定將在表中出現的行數。表中的行數將對錶的大小有直接影響 表中的行數 num rows 計算儲存...

估計表大小(三) 估計無聚集索引的表的大小

估計無聚集索引的表的大小 下列步驟可用於估計儲存沒有聚集索引的表上的資料和任何附加的非聚集索引所需的空間。計算儲存資料所用的空間。計算儲存每個附加非聚集索引所用的空間。彙總計算所得的值。對於每個計算,都要指定將在表中出現的行數。表中的行數將對錶的大小有直接影響 表中的行數 num rows 計算儲存...

估計表大小(三) 估計無聚集索引的表的大小

估計無聚集索引的表的大小 下列步驟可用於估計儲存沒有聚集索引的表上的資料和任何附加的非聚集索引所需的空間。計算儲存資料所用的空間。計算儲存每個附加非聚集索引所用的空間。彙總計算所得的值。對於每個計算,都要指定將在表中出現的行數。表中的行數將對錶的大小有直接影響 表中的行數 num rows 計算儲存...