數據庫的運行效率是數據庫的關鍵,如何提高效率成為了每個DBA都在思考的問題,表空間的設置無疑是其中的關鍵。下文就將為您介紹讓數據表合理的映射到表空間的方法。
在DB2數據庫中,是按照表、表空間、數據庫三個級別來存儲數據的。由於表空間的設置直接跟數據庫的性能相關。為此在表空間中數據表的部署是否合理就直接影響到數據庫的運行效率。
在DB2數據庫中,是按照表、表空間、數據庫三個級別來存儲數據的。由於表空間的設置直接跟數據庫的性能相關。為此在表空間中數據表的部署是否合理就直接影響到數據庫的運行效率。筆者認為,如果要讓數據表合理的映射到表空間,至少需要遵守如下的規則。
規則一:根據表的訪問率來映射表空間。
在一個數據庫系統中,表的訪問率是不同的。根據不完全的預測,一個數據庫中大概只有40%到50%左右的表其具有比較高的訪問率。而其他的數據表很難的才用到一回。如在一個為ERP而設計的數據庫系統中,采購訂單、銷售訂單等對應的數據表訪問率是很高的,但是成本調整單等對應的數據表一年到頭難得使用幾次。所以在數據庫部署中,數據庫管理員首先要根據企業應用的實際情況,將數據庫中的表按照其使用的頻率進行分類。然後將使用頻率高的表放在一個表空間,或者根據模塊放在幾個不同的表空間中。然後將他們存放在性能比較高的硬盤上,或者存放在活躍程度低的硬盤中。如此的話,I/O爭用的現象就會少的多,從而提高數據庫的性能。
規則二:根據字段的使用程度來規劃表。
不僅不同的表訪問頻率有很大的差別,即使是同一個表中,其字段的訪問頻率也會有很大不同。如在一些人事管理系統數據庫中,有些公司會將員工的身份證復印件或者照片掃描存放到數據庫中。這些圖片在數據庫中需要利用LOB數據類型來存放。由於這個數據類型比較大,為此無論是在查詢還是數據庫備份的時候,都會給其帶來負面的影響。如當用戶在查詢員工信息時,如果在SELECT語句中不加入字段的名稱,而采用全部查詢的方式,那麼查詢的速度會很慢。隨著圖片數量的增多,其速度會呈幾何級別下降。但是實際上,用戶平時並不需要訪問這些員工的身份證復印件或者照片信息。所以在查詢的時候,將這些沒有的信息給他們顯示出來,也是一種浪費,而且還影響數據庫的性能。
為此在設計表的時候,如果某些列不經常用到,而且這些列的數據類型又是大數據類型或者說很多都是NULL值(數據庫在處理NULL值的時候效率要比其他的只慢許多),此時最好將這些列跟其它的列分開在不同的表中存放。由於他們的訪問頻率不同,就可以按照上面第一個規則來映射表空間,以提高數據庫的訪問性能。