DB2 基本概念
在DB2中由上至下的幾個概念:
實例(Instance),
數據庫(Database),
表空間(TableSpace),
容器(Container)
在一個操作系統中,DB2數據服務可以同時運行多個實例(有別於Oracle在一個系統內只能起一個實例).
數據庫定義在實例中,一個實例可以包含多個數據庫。在同一個實例中的不同數據庫是完全獨立的,分別擁有自己獨立的系統編目表。
表空間有2種管理方式:
DMS(Database management Space)方式
SMS(System manegement Space)方式
DMS與SMS方式在表空間建立時指定,建好後不能轉換。對於DMS方式,一個表空間對應了一個或多個容器(Container),容器指定了數據的物理存儲位置。對於SMS方式,只能夠指定一個目錄,不能夠增加。
表空間具有以下類型:
系統編目表空間(SysCatSpace)
系統臨時表空間(SysTempSpace)
用戶表空間(UserSpace)
用戶臨時表空間(UserTempSpace)
一個數據庫中必須存在兩個系統基本的表空間,分別是系統編目表空間與系統臨時表空間。在數據庫中創建的任何對象都以在系統編目表空間中增加記錄的方式體現,對於臨時表空間,其占用磁盤大小是根據使用情況動態伸縮的,即僅在需要時才分配磁盤空間,並在使用後進行回收。此外,若用戶需要創建表,則需要創建用戶表空間,若需要使用臨時表,則需要創建用戶臨時表空間。
容器分為三種類型:
Files 文件
Devices 設備
Directory 目錄
文件與設備,用於DMS方式的表空間;
目錄,用於SMS方式的表空間,此種方式不需要人工管理數據存儲文件,DB2可根據情況在目錄中自動增加存儲文件,只要磁盤空間允許。
實質上,表空間是數據存儲的邏輯位置定義,容器則是數據存儲的物理位置定義。
數據庫的性能
影響一個數據庫的性能主要有以下因素:
磁盤(Disk)
內存(Memory)
處理器(CPU)
網絡(Network)
其中以磁盤最為顯著,90%的性能瓶頸可能來自於磁盤的IO競爭;
其次是內存,一方面是指物理內存的總量要滿足需求,另一方面是指與內存相關的配置參數應正確配置;
當然處理器的性能也很重要,多路CPU會對哪些依賴計算能力的復雜SQL查詢起到顯著的效果;
網絡不屬於主要因素,屬於客觀的環境因素,是指過慢的網速會對數據的傳輸造成影響。以下列出一些對於提高數據庫性能有效的方法:
對於運行數據庫服務的服務器可以盡可能的配置多塊物理磁盤,每塊的容量不必太大,這樣可以有效的分擔數據存儲與讀取操作過程的磁盤IO競爭。即采用多塊小容量的磁盤在性能上要優於僅采用一塊大容量的磁盤。
如果條件允許,盡量使數據存儲服務與操作系統分別運行在物理分開的磁盤上。
采用DMS(Database Management Space)管理方式的表空間。
在物理不同的磁盤上創建多個表空間。然後可以將數據和索引分別存放在不同的表空間,這樣可以顯著的提高性能。還可以把一個使用頻繁的大表縱向拆成多個小表,分別存放在不同的表空間中,然後用一個視圖進行聯合。
DB2服務器可以管理裸設備,即除系統以及DB2服務運行磁盤以外,為DB2數據存放單獨准備磁盤,可以是多塊,分區後不需要格式化,創建裸設備後直接交給DB2進行管理,用於存儲數據。
系統的臨時表空間對數據庫性能影響很大,當由管理的物理內存不能滿足數據庫操作的需要時,DB2便會把臨時數據寫到磁盤上,這時便用到了系統臨時表空間,並且這種情況會經常發生。
盡量在磁盤靠近最內層磁道的位置安放數據,因為此處磁盤的訪問速度較快。
與性能相關的主要參數
DB2的參數配置分為兩個級別,一個是實例級別,另一個是數據庫級別。對數據服務性能影響較大的參數主要在數據庫級別配置。以下是三個比較重要的內存配置參數:
bufferpagelocklistsortheap
bufferpage: 由同一個數據庫中的所有對象共享。
sortheap: 用於排序的內存交換區,非共享,不宜設置太大,否則,很容易引起內存耗盡,因為每一個事務都會申請獨立的內存用於排序。