估計帶有聚集索引的表的大小
下列步驟可用於估計儲存帶有聚集索引的表上的資料和任何附加的非聚集索引所需的空間。
計算儲存資料所用的空間。
計算儲存聚集索引所用的空間。
計算儲存每個附加非聚集索引所用的空間。
彙總計算所得的值。
對於每個計算,都要指定將在表中出現的行數。表中的行數將對錶的大小有直接影響:
表中的行數 = num_rows
計算儲存資料所用的空間
有關如何計算儲存資料所用空間的更多資訊,請參見估計表的大小。
記下計算所得的值:
儲存資料所用的空間= data_space_used
計算儲存聚集索引所用的空間
下列步驟可用於估計儲存聚集索引所需的空間。
聚集索引定義可以包括固定長度和可變長度列。為了估計聚集索引的大小,需要指定索引行中這兩組列的每一組所占用的空間。
索引鍵中的列數= num_ckey_cols
所有固定長度鍵列中的位元組總和= fixed_ckey_size
索引鍵中的可變長度列數= num_variable_ckey_cols
所有可變長度鍵列的最大值= max_var_ckey_size
如果聚集索引中有固定長度列,那麼索引行的一部分將為空位圖保留。計算大小:
索引空位圖(cindex_null_bitmap) = 2 + (( num_ckey_cols + 7) / 8 )
僅使用上述表示式中的整數部分,而去掉其餘部分。
如果索引中有可變長度列,請確定儲存索引行中的這些列需使用的空間:
可變長度列的總大小(variable_ckey_size) = 2 + (num_variable_ckey_cols x 2) + max_var_ckey_size
如果沒有可變長度列,請將variable_ckey_size 設定為0。
此公式假設所有可變長度鍵列均百分之百充滿。如果預計可變長度鍵列占用的儲存空間比例較低,則可以按照該比例調整結果以對整個索引大小得出乙個更準確的估計。
計算索引行大小:
索引行總大小(cindex_row_size) = fixed_ckey_size + variable_ckey_size + cindex_null_bitmap + 1 + 8
下一步,計算每頁的索引行數(每頁有
8096
個可用位元組):
每頁的索引行數(cindex_rows_per_page) = ( 8096 ) / (cindex_row_size + 2)
由於索引行不能跨頁,所以每頁的索引行數應向下捨入到最接近的整數。
下一步,計算儲存索引的每一級別的所有索引行所需的頁數。
頁數(第0 級)(num_pages_clevel_0) = (data_space_used / 8192) / cindex_rows_per_page
頁數(第1 級)(num_pages_clevel_1) = num_pages_clevel_0 / cindex_rows_per_page
重複第二個計算,將從前面的第 n
級中計算的頁數除以cindex_rows_per_page,直到指定的第 n
(num_pages_clevel_n) 級頁數等於1(索引根頁)。例如,若要計算第二個索引級別所需的頁數:
頁數(第2 級)(num_pages_clevel_2) = num_pages_clevel_1 / cindex_rows_per_page
對於每一級別,預計的頁數應向上捨入到最接近的整數。
彙總儲存各索引級別所需頁數:
總頁數
(num_cindex_pages) = num_pages_clevel_0 + num_pages_clevel_1 +
num_pages_clevel_2 + ...+ num_pages_clevel_n
計算聚集索引的大小(每頁總共有
8192
位元組):
聚集索引大小(位元組)= 8192 x num_cindex_pages
計算儲存每個附加非聚集索引所用的空間
下列步驟可用於估計儲存每個附加的非聚集索引所需空間量。
非聚集索引定義可以包括固定長度和可變長度列。為了估計非聚集索引的大小,需要計算索引行中這兩組列的每一組所占用的空間。
索引鍵中的列數= num_key_cols
所有固定長度鍵列中的位元組總和= fixed_key_size
索引鍵中的可變長度列數= num_variable_key_cols
所有可變長度鍵列的最大值= max_var_key_size
如果索引中有固定長度列,那麼索引行的一部分將為空位圖保留。計算大小:
索引空位圖(index_null_bitmap) = 2 + (( num_key_cols + 7) / 8 )
僅使用上述表示式中的整數部分,而去掉其餘部分。
如果索引中有可變長度列,請確定儲存索引行中的這些列需使用的空間:
可變長度列的總大小(variable_key_size) = 2 + (num_variable_key_cols x 2) + max_var_key_size
如果沒有可變長度列,請將variable_key_size 設定為0。
此公式假設所有可變長度鍵列均百分之百充滿。如果預計可變長度鍵列占用的儲存空間比例較低,則可以按照該比例調整結果以對整個索引大小得出乙個更準確的估計。
計算非葉級索引行大小:
非葉級索引行總大小(nl_index_row_size) = fixed_key_size + variable_key_size + index_null_bitmap + 1 + 8
計算每頁的非葉級索引行數:
每頁的非葉級索引行數
(nl_index_rows_per_page) =
( 8096 ) / (nl_index_row_size + 2)
由於索引行不能跨頁,所以每頁的索引行數應向下捨入到最接近的整數。
計算葉級索引行大小:
葉級索引行總大小(index_row_size) = cindex_row_size + fixed_key_size + variable_key_size + index_null_bitmap + 1
最後乙個值1 表示索引行首結構。cindex_row_size 是聚集索引鍵的索引行總大小。
計算每頁的葉級索引行數:
每頁的葉級索引行數(index_rows_per_page) = ( 8096 ) / (index_row_size + 2)
由於索引行不能跨頁,所以每頁的索引行數應向下捨入到最接近的整數。
根據為非聚集索引指定的填充因子,計算每頁保留的可用索引行數。有關更多資訊,請參見
填充因子。
每頁的可用索引行數(free_index_rows_per_page) = 8096 x ((100 - fill_factor) / 100) / index_row_size
計算中使用的填充因子為整數值,而不是百分數。
由於索引行不能跨頁,所以每頁的索引行數應向下捨入到最接近的整數。
計算儲存索引的每一級別的所有索引行所需的頁數:
頁數(第0 級)(num_pages_level_0) = num_rows / (index_rows_per_page - free_index_rows_per_page)
頁數(第1 級)(num_pages_level_1) = num_pages_level_0 / nl_index_rows_per_page
重複第二個計算,將從前面的第 n
級中計算的頁數除以nl_index_rows_per_page,直到指定的第 n
(num_pages_level_n) 級頁數等於1(根頁)。
例如,若要計算第二個和第三個索引級別所需頁數:
資料頁數(第2 級)(num_pages_level_2) = num_pages_level_1 / nl_index_rows_per_page
資料頁數(第3 級)(num_pages_level_3) = num_pages_level_2 / nl_index_rows_per_page
對於每一級別,預計的頁數應向上捨入到最接近的整數。
彙總儲存各索引級別所需頁數:
總頁數(num_index_pages) = num_pages_level_0 + num_pages_level_1 +num_pages_level_2 + ...+ num_pages_level_n
計算非聚集索引的大小:
非聚集索引大小(位元組)= 8192 x num_index_pages
計算表的大小
計算表的大小:
估計表的大小(二) 估計帶有聚集索引的表的大小
估計帶有聚集索引的表的大小 下列步驟可用於估計儲存帶有聚集索引的表上的資料和任何附加的非聚集索引所需的空間。計算儲存資料所用的空間。計算儲存聚集索引所用的空間。計算儲存每個附加非聚集索引所用的空間。彙總計算所得的值。對於每個計算,都要指定將在表中出現的行數。表中的行數將對錶的大小有直接影響 表中的行...
估計表的大小(二) 估計帶有聚集索引的表的大小
估計帶有聚集索引的表的大小 下列步驟可用於估計儲存帶有聚集索引的表上的資料和任何附加的非聚集索引所需的空間。計算儲存資料所用的空間。計算儲存聚集索引所用的空間。計算儲存每個附加非聚集索引所用的空間。彙總計算所得的值。對於每個計算,都要指定將在表中出現的行數。表中的行數將對錶的大小有直接影響 表中的行...
估計表的大小(二) 估計帶有聚集索引的表的大小
估計帶有聚集索引的表的大小 下列步驟可用於估計儲存帶有聚集索引的表上的資料和任何附加的非聚集索引所需的空間。計算儲存資料所用的空間。計算儲存聚集索引所用的空間。計算儲存每個附加非聚集索引所用的空間。彙總計算所得的值。對於每個計算,都要指定將在表中出現的行數。表中的行數將對錶的大小有直接影響 表中的行...