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

來源:互聯網
上載者:User

估計無叢集索引的表的大小

下列步驟可用於估計儲存沒有叢集索引的表上的資料和任何附加的非叢集索引所需的空間。

  1. 計算儲存資料所用的空間。

  2. 計算儲存每個附加非叢集索引所用的空間。

  3. 匯總計算所得的值。

對於每個計算,都要指定將在表中出現的行數。表中的行數將對錶的大小有直接影響:

表中的行數 = Num_Rows

計算儲存資料所用的空間

若要計算儲存資料所用的空間,請參見估計表的大小。

記下計算所得的值:

儲存資料所用的空間 = Data_Space_Used

計算儲存每個附加非叢集索引所用的空間

下列步驟可用於估計沒有叢集索引的表上的單個非叢集索引的大小。

  1. 如果索引定義包含固定長度和可變長度列,請計算索引行中這兩組列的每一組所佔用的空間。列的大小取決於資料類型和長度說明。有關更多資訊,請參見資料類型。

索引鍵中的列數 = Num_Key_Cols

所有固定長度鍵列中的位元組總和 = Fixed_Key_Size

索引鍵中的可變長度列數 = Num_Variable_Key_Cols

所有可變長度鍵列的最大值 = Max_Var_Key_Size

  1. 如果索引中有固定長度列,那麼索引行的一部分將為空白位元影像保留。計算大小:

索引空位元影像 (Index_Null_Bitmap) = 2 + (( Num_Key_Cols + 7) / 8 )

僅使用上述運算式中的整數部分,而去掉其餘部分。

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

可變長度列的總大小 (Variable_Key_Size) = 2 + (Num_Variable_Key_Cols x 2) + Max_Var_Key_Size

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

此公式假設所有可變長度鍵列均百分之百充滿。如果預計可變長度鍵列佔用的儲存空間比例較低,則可以按照該比例調整結果以對整個索引大小得出一個更準確的估計。

  1. 計算索引行大小:

索引行總大小 (Index_Row_Size) = Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap + 1 + 8

  1. 下一步,計算每頁的索引行數(每頁有 8096 個可用位元組):

每頁的索引行數 (Index_Rows_Per_Page) = ( 8096 ) / (Index_Row_Size + 2)

由於索引行不能跨頁,所以每頁的索引行數應向下舍入到最接近的整數。

  1. 根據為非叢集索引指定的填滿因數,計算每葉級頁保留的可用索引行數。有關更多資訊,請參見填滿因數。

每葉級頁的可用索引行數 (Free_Index_Rows_Per_Page) = 8096 x ((100 - Fill_Factor) / 100) /
Index_Row_Size

計算中使用的填滿因數為整數值,而不是百分數。

由於索引行不能跨頁,所以每頁的索引行數應向下舍入到最接近的整數。

  1. 下一步,計算儲存索引的每一層級的所有索引行所需的頁數:

頁數(第 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 / Index_Rows_Per_Page

重複第二個計算,將從前面的第 n 級中計算的頁數除以 Index_Rows_Per_Page,直到指定的第 n (Num_Pages_Level_n) 級頁數等於 1(根頁)。例如,若要計算第二個索引層級所需的頁數:

頁數(第 2 級) (Num_Pages_Level_2) = Num_Pages_Level_1 / Index_Rows_Per_Page

對於每一層級,預計的頁數應向上舍入到最接近的整數。

匯總儲存各索引層級所需頁數:

總頁數 (Num_Index_Pages) = Num_Pages_Level_0 + Num_Pages_Level_1 +Num_Pages_Level_2 + ...+ Num_Pages_Level_n

  1. 計算叢集索引的大小(每頁總共有 8192 個位元組):

非叢集索引大小(位元組) = 8192 x Num_Index_Pages

計算表的大小

計算表的大小:

表的總大小(位元組)= Data_Space_Used +  Nonclustered index size + ...n

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.