水平分割 垂直分割 和 庫表散列 概念 說明

一.水平分割

根據一列或多列數據的值把數據行放到兩個獨立的表中。即按記錄進分分割,不同的記錄可以分開保存,每個子表的列數相同。 

 

水平分區將表分爲多個表。每個表包含的列數相同,但是行更少。例如,可以將一個包含十億行的表水平分區成 12 個表,每個小表表示特定年份內一個月的數據。任何需要特定月份數據的查詢只需引用相應月份的表。

 

水平分割通常在下面的情況下使用:

(1)    表很大,分割後可以降低在查詢時需要讀的數據和索引的頁數,同時也降低了索引的層數,提高查詢速度。

(2)    表中的數據本來就有獨立性,例如表中分別記錄各個地區的數據或不同時期的數據,特別是有些數據常用,而另外一些數據不常用。

(3)    需要把數據存放到多個介質上。

 

水平分割會給應用增加複雜度,它通常在查詢時需要多個表名,查詢所有數據需要union操作。在許多數據庫應用中,這種複雜性會超過它帶來的優點,因爲只要索引關鍵字不大,則在索引用於查詢時,表中增加兩到三倍數據量,查詢時也就增加讀一個索引層的磁盤次數。

 

 

二.垂直分割

垂直分割表(不破壞第三範式),把主碼和一些列放到一個表,然後把主碼和另外的列放到另一個表中。將原始表分成多個只包含較少列的表。如果一個表中某些列常用,而另外一些列不常用,則可以採用垂直分割,另外垂直分割可以使得數據行變小,一個數據頁就能存放更多的數據,在查詢時就會減少I/O次數(每次查詢時讀取的block 就少)。其缺點是需要管理冗餘列,查詢所有數據需要join操作。

 

垂直分割表可以達到最大化利用Cache的目的。 

 

 

. 庫表散列

    表散列與水平分割相似,但沒有水平分割那樣的明顯分割界限,採用Hash算法把數據分散到各個分表中, 這樣IO更加均衡.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章