本文從數據庫設計、查詢優化、查詢的優化、並發控制以及客戶/服務器模式等方面對DB2數據庫的系統性能優化進行了深入的研究探討,供您參考,希望能夠對您有所啟迪。
DB2是一種高性能的大型關系數據庫管理系統,廣泛的應用在客戶/服務器體系結構中。評價系統性能優化的標准有:吞吐量、響應時間、並行能力等。本文從數據庫的設計、查詢的優化、並發控制以及客戶/服務器模式這四個角度來討論優化系統性能。
設計數據庫
1. 熟悉業務系統
對業務系統的熟悉程度對整個數據庫系統的性能有很大影響,一個對業務不熟悉的設計人員,盡管有豐富的數據庫知識,也很難設計出性能最佳的數據庫應用系統。
2. 規范化與非規范化
數據庫被規范化後,減少了數據冗余,數據量變小,數據行變窄。這樣DB2的每一頁可以包括更多行,那麼每一區裡的數據量更多,從而加速表的掃描,改進了單個表的查詢性能。但是,當查詢涉及多個表的時候,需要用很多連接操作把信息從各個表中組合在一起,導致更高的CPU和I/O花銷。那麼,有很多時候需要在規范化和非規范化之間保持平衡,用適當的冗余信息來減少系統開銷,用空間代價來換取時間代價。有訂單信息表OrderDetail,它裡面記錄了投遞員信息,收款員信息,物品信息,價格策略,客戶信息…..這些信息分別在投遞員信息表、收款員信息表、物品信息表、價格策略表、客戶信息表中存放。如果按照規范化的要求,OrderDetail查詢時就必須要與這麼多個表進行連接或者嵌套查詢。如果OrderDetail表中的數據量是在百萬級的,那麼一次查詢所需要的時間可能會達到好幾個小時。事實上,只要在設計時保證數據的邏輯有效性,很多信息都可以直接冗余在OrderDetail表中,這些冗余的數據能夠極大的提高查詢的效率,從而減少CPU和I/O操作。
3. 數據條帶化
如果一個表的記錄條數超過一定的規模,那麼最基本的查詢操作也會受到影響,需要將該表根據日期水平劃分,把最近、最經常用的數據和歷史的、不經常用的數據劃分開來,或是根據地理位置、部門等等進行劃分。還有一種劃分方式――垂直劃分,即把一個屬性列很多的表分割成好幾個小表,比如把經常用到的屬性放在一個表裡,不經常用到的屬性放在另一個表裡,這樣可以加快表的掃描,提高效率。