不過需要注意的是,如果身份證復印件等信息經常需要用到的,那麼也最好將他們分開在兩個表中。只是將存放復印件信息的表也存放在性能比較好的硬盤中,以提高訪問這些數據的效率。之所以仍然需要將他們分開存放,這主要是考慮到備份的性能。因為這些LOB數據類型會降低數據庫的備份效率,為此可以在數據庫比較空閒的時候對這些LOB數據所在的表空間進行獨立的備份。
規則三:索引數據、長字段數據、普通數據分開存放。
筆者在進行表空間設計的時候,往往會將索引數據、長字段數據與普通數據分開來存放。即將一個表空間用來存放索引數據,一個表空間用來存儲長字段數據,另一個表空間庸才存儲普通的數據。這主要是通過在建立表的時候為這些數據類型建立不同的表,然後將表根據數據類型分類的不同將他們存放在不同的表空間中。這主要是根據三種數據的作用不同而考慮的。眾所周知,給表設置索引之後可以在很大程度上提高數據庫的性能。這主要是因為如果設置索引好,數據庫系統會先從索引找查找數據。查找相應的數據後會直接根據記錄序列號從其他表中讀取相關記錄。也即是說只在索引表中查詢,而不會在其他表中查找記錄。所以說如果能夠提高索引表的工作效率,那麼就可以在很大程度上提高數據庫的查詢性能。為此筆者建議,將索引數據存放在單獨的表空間中。如果硬件條件允許的話,並且企業對於查詢具有比較高的性能要求,就將索引表空間存放在單獨的硬盤中,以防止硬盤的I/O爭用。如果硬件條件不允許的話,那麼至少也要將這個索引表空間存放在性能比較高的硬盤上。
另外為了提高索引的工作效率,最好不講在長字段上添加索引。如對於文本型的字段,雖然也可以為其添加索引。但是給其添加索引的話,工作效率並不會很高。此時將這個索引數據存放在單獨的表空間中,這個表空間就會變得很大。根據筆者這麼多年的工作經驗,可以告訴大家,在長字段上設置索引,是得不償失的。
將長字段分開來存放,還有一個原因就是節省存儲空間。根據使用的經驗,長字段的使用效率是比較低的。也就是說,在長字段數據類型中,一定會存在沒有使用的空間。所以會有一定程度的浪費。具體的浪費數量要根據長字段的數據類型大小以及在列中出現的數據的大小是否相對一致。因為長字段數據會被系統盡可能的平均分配到頁面中。而長字段數據的最後頁面往往不能夠占滿其規定的字節,為此對於長字段來說,存儲空間的浪費是不可避免的。故最好是將他們存放在不同的表中。這並不是說可以避免空間的浪費,而是指在有需要的時候可以更加方便的回收這些被浪費的空間。
在DB2數據庫中,是按照表、表空間、數據庫三個級別來存儲數據的。由於表空間的設置直接跟數據庫的性能相關。為此在表空間中數據表的部署是否合理就直接影響到數據庫的運行效率。