簡介
DB2 Universal Database®(UDB)是第一個支援多媒體和Web的關聯式資料庫管理系統,它的功能非常強大,足以滿足大公司的需求,並且它非常靈活,足以滿足中小企業的要求。DB2 產品系列軟體和網際網路技術的結合使我們可以方便地跨不同平台訪問資訊、使用資訊並且保證資訊安全。全世界有30 多萬家公司的6000 多萬個DB2 使用者依賴於 IBM 資料管理解決方案。
DB2 UDB 為大多數需要電子商務的應用程式(比如電子商務、企業資源計劃、客戶關係管理、供應鏈管理、Web自助服務和商業智慧)提供支援。這是一種可伸縮的、工業級資料庫,非常適合用作電子商務發展過程中的資料管理基礎。
聯機交易處理(Online transaction processing,OLTP)是一類能為面向事務應用程式提供便利的應用程式,並可用來管理面向事務的應用程式,它通常用於處理許多行業的資料輸入和檢索事務,這些行業包括銀行、航空、郵購、超市和製造業。通常,OLTP 工作負載包括許多並發啟動並執行短事務。如今的聯機交易處理日益要求支援跨網路以及可能包括多家公司的事務。因此,新的 OLTP 軟體使用了客戶機/伺服器處理和代理軟體,這種軟體允許事務在一個網路的不同電腦平台上運行。
在任何一種資料庫系統中,效能是最重要的因素之一。本文根據由運行 OLTP 類型的效能基準測試程式(TPC-C、TPC-W、Trade2 等)所得到的經驗,著重討論了許多 DB2 效能調優技巧。雖然資料庫應用程式的效能會受許多因素影響,但是我們著重討論配置而不是諸如容量規劃、資料庫設計或應用程式設計之類的因素。
本文的組織圖如下:
有關效能的一些基本要素
更新目錄統計資訊,這部分強調收集和維護最新資料庫統計資訊的重要性,缺少這項工作常常是導致許多效能問題的源頭所在。
監控和調優資料庫配置參數,這部分按照重要性的順序描述了一列資料庫管理員參數和資料庫參數。通常,沒必要嘗試列表中的所有參數以實現效能目標。可以只嘗試其中位於列表頂部的那幾個,以查看是否有效能方面的改進。
有了這些技巧,就可以啟動自己的 OLTP 應用程式並使其擁有非常好的運行效能。
有關效能的一些基本要素
有足夠的記憶體。
對於 32 位系統,每個 CPU 至少使用 512 MB 的 RAM,最高可達每台機器 4 GB,以支援大量並發使用者所需的緩衝池、DB2 代理程式和其它共用記憶體對象。(請參閱 “緩衝池大小(BUFFPAGE)”一節以擷取有關緩衝池的更多資訊。)可能需要更多的記憶體來支援在本地運行或作為預存程序啟動並執行應用程式。在 AIX® 上 JFS 檔案快取可以使用額外的記憶體來補充緩衝池。
對於 64 位元系統,緩衝池實際上可以是任何大小。但是,對於使用大型資料庫的大多數電子商務 OLTP 應用程式,緩衝池大小實際上不需要超過 8 GB。越大當然越好,但是在某一點,當緩衝池命中率達到 98+% 時,會隨記憶體的增加命中率反而下降。並發使用者的數目(它影響 DB2 代理程式的數量)決定需要多少記憶體。
每個使用者串連至資料庫(即 DB2 代理程式)所需的記憶體數量取決於應用程式所執行的 SQL 陳述式的性質 - 比如開啟的並發遊標數以及所需的排序和臨時空間的數量。對於 OLTP 應用程式,所需的排序和臨時空間會比較少,一次只開啟少數並發遊標。
經驗:對於每個 DB2 代理程式,在 UNIX 中最少使用 1 MB 記憶體,在 Windows 中最少使用 500 KB 記憶體。如果使用了受防護的預存程序,那麼除了運行預存程序應用程式所需的記憶體之外,每個使用者串連還有兩個 DB2 代理程式。
有足夠的 I/O 處理能力。
必須有足夠的磁碟裝置來確保充分的 I/O 並行性,以支援大容量的並發事務。對於中等工作負載而言,每個 CPU 至少應當有 5 到 10 個磁碟,對於高 I/O OLTP 工作負載而言,至少要有 20 個磁碟。作業系統(包括調頁空間)、DB2 日誌和 DB2 資料表空間應當擁有各自的專用磁碟。應當有多個磁碟用於 DB2 日誌、表和索引。
估計良好效能所需的 I/O 處理能力的正確方式,實際上是製作事務原型並找出每個事務需要多少 I/O,以及每秒需要處理多少事務。然後找出磁碟控制卡和磁碟子系統的 I/O 速率以協助確定需要多少控制器和磁碟。
有足夠的網路頻寬。
必須有足夠大的網路頻寬以支援工作負載。請確保網路或任何中間集線器都不會成為瓶頸。當支援遠端存取時這一點尤為重要。例如,T1 線路支援 1.544 Mb/s,這僅為 0.193 MB/s,而通常的 10 Mb/s 以太區域網路可以支援 1.25 MB/s,輸送量為 T1 線路的 6 倍。在 UNIX 上使用諸如 netstat 這樣的命令可以監控串連上的流量。
使用 DB2 控制中心(DB2 Control Center)的 DB2 效能設定精靈(DB2 Performance Configuration Wizard)來設定初始的 DB2 資料庫管理員(Database Manager)和資料庫配置(Database Configuration)參數。
這個工具會詢問您一系列有關工作負載性質的問題,以便確定配置參數值的起始設定。您可以修改這些參數以滿足生產工作負載的需要。
適當地為表列建立索引。
確保查詢中進行串連操作的列都有索引。
如果為 ORDER BY 和 GROUP BY 所涉及的列建立了索引,那麼可以提高效能。
也可以將經常被訪問的資料作為 INCLUDE 子句中的列包含在索引中。
根據所使用的表和 SQL 陳述式,使用索引建議程式程式(Index Advisor)(也稱為索引嚮導 (Index Wizard),可以從 DB2 控制中心調用該程式)來協助確定使用一組合適的索引。