對DB2 UDB v8.1 以及其數(shù)據(jù)庫進(jìn)行調(diào)優(yōu)的最好方案
以下的文章主要向大家描述的是對DB2 UDB v8.1 以及其數(shù)據(jù)庫進(jìn)行調(diào)優(yōu)的***的實踐方案,本文主要是為您從 DB2® UDB 數(shù)據(jù)庫與其應(yīng)用程序里獲得***性能提供了所需的幫助。作者聯(lián)系實踐。
討論了在開發(fā)的各個不同階段以及對生產(chǎn)系統(tǒng)可以應(yīng)用的一些技巧,包括數(shù)據(jù)庫設(shè)計和布局、數(shù)據(jù)庫配置、SQL 語句設(shè)計、維護(hù)以及監(jiān)視等方面的技巧。
簡介
性能是關(guān)系到隨需應(yīng)變型應(yīng)用程序成功與否的關(guān)鍵。當(dāng)那些應(yīng)用程序使用 IBM® DB2 Universal Database™ 作為數(shù)據(jù)存儲時,至關(guān)重要的是,從一開始就應(yīng)該知道有關(guān)如何在 DB2 UDB 上取得盡可能好的性能的基礎(chǔ)知識。在本文中,我將給出關(guān)于調(diào)優(yōu) DB2 UDB v8.1 系統(tǒng)的一些比較深入的建議。
我們將談?wù)撨@一過程中自始至終存在的性能問題。您可以遵循從創(chuàng)建一個新數(shù)據(jù)庫到運行應(yīng)用程序這之間的流程。通過本文可以看到如何使用 DB2 自動配置實用程序來初始配置數(shù)據(jù)庫管理器和數(shù)據(jù)庫環(huán)境。接著,我將討論創(chuàng)建緩沖池、表空間、表和索引的***實踐。另外,您可能還想改變一些重要配置參數(shù)的初始值,以便更好地支持應(yīng)用程序,因此我們還將簡介這些配置參數(shù)。
我們將論述基于監(jiān)視器(monitor)細(xì)節(jié)輸出的調(diào)優(yōu),從而展示如何使用快照監(jiān)視(snapshot monitoring)幫助調(diào)優(yōu) SQL、緩沖池和各種不同的數(shù)據(jù)庫管理器以及數(shù)據(jù)庫配置參數(shù)。接著,我們將進(jìn)一步研究應(yīng)用程序發(fā)送給 DB2 的 SQL。通過使用 Explain,可以生成 SQL 采用的訪問計劃(access plan),并尋找可以進(jìn)一步優(yōu)化的機(jī)會。
我們將考察 Design Advisor 這樣一個工具,它可以根據(jù)所提供的 SQL 負(fù)載推薦出新的索引,或者評估現(xiàn)有的索引。***,我們還將討論一些 DB2 SQL 選項。
此外,持續(xù)(on-going)維護(hù)對于維持***性能非常重要。所以我們將討論一些可以幫助我們進(jìn)行持續(xù)維護(hù)的實用程序。對于那些正使用 DB2 ESE Database Partitioning Feature (DPF) 的讀者,我會用一節(jié)的篇幅談?wù)摓槭箶?shù)據(jù)庫高效運行而應(yīng)該考慮的一些問題。
有時候可能會存在某種外在的瓶頸(來自 DB2)而使您無法達(dá)到性能目標(biāo),本文列出了一些常見的瓶頸,以及用于監(jiān)視這些瓶頸的實用程序。***,本文列出了一些有價值的 IBM 資源,以幫助您發(fā)現(xiàn)有價值的 DB2 信息。
本文是為那些在 DB2 數(shù)據(jù)庫管理方面有中級技能的人而寫的。
讀前須知
在開始性能調(diào)優(yōu)過程之前,應(yīng)確保您已經(jīng)應(yīng)用了***的 DB2 修訂包(fix pack)。修訂包常常會帶來性能的提高。我們要使用 DB2 FixPak 4 作為本文的基礎(chǔ)。如果您使用的是 FP4 之前的版本,那么這種環(huán)境可能不能提供這里討論的所有選項。
在進(jìn)行調(diào)優(yōu)時,***是有一個關(guān)于數(shù)據(jù)庫使用(即應(yīng)用程序運行在 DB2 上的工作負(fù)載)的可再現(xiàn)場景,這樣就可以利用這種可再現(xiàn)場景來量身定制調(diào)優(yōu)效果。例如,如果工作負(fù)載在不同的運行期間所經(jīng)歷的時間上有 10% 的變化量,那么就很難知道調(diào)優(yōu)的真正效果如何。此外,如果在兩次運行中各自的工作負(fù)載不一樣,也就難于衡量數(shù)據(jù)庫管理器和數(shù)據(jù)庫配置參數(shù)所發(fā)生的變化。
堅持跟蹤所有的變化。這樣有助于開發(fā)調(diào)優(yōu)腳本或者建議,以作為供其他 DBA 參考的歷史,同時也有助于防止遵循不良的變化。
在大多數(shù)小節(jié)的***,都有一些指向 DB2 v8 HTML Documentation 中相關(guān)小節(jié)的鏈接。在線文檔可以在 http://publib.boulder.ibm.com/infocenter/db2help/index.jsp上找到。
“十大”性能增強推動器
做了下面十件事情,您就幾乎可以使數(shù)據(jù)庫獲得***性能。通常您會發(fā)現(xiàn),通過大約 10% 的配置變化,就可以達(dá)到***性能的 90%。我將在下面適當(dāng)?shù)男」?jié)(在圓括號中標(biāo)出)中詳細(xì)討論其中的每一條:
確保有足夠的磁盤(每個 CPU 有 6-10 個磁盤才是一個好的開端)。每個表空間的容器應(yīng)該跨越所有可用的磁盤。有些表空間,例如 SYSCATSPACE 以及那些表數(shù)量不多的表空間,不需要展開到所有磁盤上,而那些具有大型用戶或臨時表的表空間則應(yīng)該跨越所有磁盤。( 表空間)。
緩沖池應(yīng)該占用可用內(nèi)存的大約 75% (OLTP) 或 50% (OLAP)( 緩沖池)。
應(yīng)該對所有表執(zhí)行 runstats,包括系統(tǒng)編目表( Runstats)。
使用 Design Advisor 為 SQL 工作負(fù)載推薦索引和檢查索引( Design Advisor)。
使用 Configuration Advisor 為應(yīng)用程序環(huán)境配置數(shù)據(jù)庫管理器和數(shù)據(jù)庫( Configuration Advisor)。
日志記錄應(yīng)該在一個獨立的高速驅(qū)動器上進(jìn)行,該驅(qū)動器由 NEWLOGPATH 數(shù)據(jù)庫配置參數(shù)指定( Experimenting)。
通過頻繁的提交可以增加并發(fā)性( SQL 語句調(diào)優(yōu))。
應(yīng)該增加 SORTHEAP,以避免排序溢出( DBM 和 DB 配置)。
對于系統(tǒng)編目表空間和臨時表空間,表空間類型應(yīng)該為 SMS,而對于其他表空間,表空間類型應(yīng)為 DMS( raw device 或者是文件)。運行 db2empfa,以便支持用于 SMS 表空間的多頁(multi-page )文件的空間分配。這將允許 SMS 表空間一次增長一個區(qū)段(Extend),而不是一頁,從而可以加快那些大型的插入操作和溢出磁盤的排序操作( 表空間)。
對于重復(fù)的語句,使用參數(shù)標(biāo)記 ( SQL 語句調(diào)優(yōu))。
創(chuàng)建數(shù)據(jù)庫
創(chuàng)建一個數(shù)據(jù)庫時,系統(tǒng)會缺省地創(chuàng)建 3 個系統(tǒng)管理存儲(System Managed Storage,SMS) 表空間(SYSCATSPACE、TEMPSPACE1 和 USERSPACE),以及一個 4 MB 的緩沖池(IBMDEFAULTBP),這些表空間和緩沖池的頁面大小都是 4 KB 。根據(jù)下面的建議,先刪除 TEMPSPACE1 和 USERSPACE 然后再重新創(chuàng)建它們,通常這是一種可取的做法。
幾乎在所有情況下, SYSCATSPACE 都不需要再作進(jìn)一步的優(yōu)化,但是如果將其容器展開到幾個磁盤上,性能上可能會有少量提升。( 稍后討論)。
在創(chuàng)建數(shù)據(jù)庫時,您可以利用自動配置選項來根據(jù)環(huán)境對數(shù)據(jù)庫進(jìn)行最初的配置。當(dāng)應(yīng)用程序以編程方式創(chuàng)建 DB2 UDB v8.1 數(shù)據(jù)庫時,這樣做很方便,因為可以將這些選項從應(yīng)用程序提供給 DB2。在自動配置數(shù)據(jù)庫時不得不用到的另一個選項是更強大的 Configuration Advisor GUI,它不但可以配置數(shù)據(jù)庫,而且還可以配置實例。
不過,要使用 Configuration Advisor,數(shù)據(jù)庫必須首先存在。我們將在 隨后的小節(jié)中討論 Configuration Advisor。
在 清單 1中,我們使用 CREATE DATABASE 命令的自動配置選項在 Windows 中創(chuàng)建了一個數(shù)據(jù)庫,該數(shù)據(jù)庫有一個跨越兩個可用磁盤的 SYSCATSPACE。
清單 1. 使用自動配置選項創(chuàng)建數(shù)據(jù)庫
- create database prod1 catalog tablespace managed by system using ('c:\\proddb\\cattbs\\01','
- d:\\proddb\\cattbs\\02') extentsize 16 prefetchsize 32 autocon圖 using mem_percent 50 workload_type simple num_stmts 10
- tpm 20 admin_priority performance num_local_apps 2 num_remote_apps 200 isolation CS bp_resizeable yes apply db and dbm
表 1顯示了有效的自動配置輸入關(guān)鍵字以及值:
表 1. 自動配置選項
關(guān)鍵字 有效值 缺省值 描述
mem_percent 1-100 25 分配給數(shù)據(jù)庫的物理存儲空間的百分比。如果本服務(wù)器(不包括操作系統(tǒng))上運行有其他應(yīng)用程序,那么將其設(shè)為小于 100 的某個值
workload_type simple, mixed, complex mixed simple 型工作負(fù)載傾向于 I/O 密集型,并且大多數(shù)是事務(wù)處理(OLTP),而 complex 型工作負(fù)載則傾向于 CPU 密集型,并且大多數(shù)是查詢(OLAP/DSS)
num_stmts 1-1000000 25 每個工作單元包含的語句條數(shù)
tpm 1-200000 60 每分鐘的事務(wù)數(shù)。
admin_priority performance, recovery, both both 優(yōu)化以獲得更好性能(每分鐘更多的事務(wù)數(shù))或更好的回復(fù)時間
num_local_apps 0-5000 0 連接的本地應(yīng)用程序的數(shù)目
num_remote_apps 0-5000 100 連接的遠(yuǎn)程應(yīng)用程序的數(shù)目
isolation RR, RS, CS, UR RR 連接到該數(shù)據(jù)庫的應(yīng)用程序的隔離級別(Repeatable Read、Read Stability、Cursor Stability 和 Uncommitted Read)。
bp_resizeable yes, no yes 是否可以在線更改緩沖池大小
- Configuration Advisor
如果您在創(chuàng)建數(shù)據(jù)庫的時候已經(jīng)使用了自動配置,那么這一步就不是很重要了。Configuration Advisor 是一個 GUI 工具,它允許根據(jù)您針對一系列問題給出的回答自動配置數(shù)據(jù)庫和實例。通過使用這種工具,常??梢匀〉孟喈?dāng)可觀的DB2 UDB v8.1 性能提升。
這個工具可以從 Control Center 中通過右鍵單擊數(shù)據(jù)庫并選擇 "Configuration Advisor" 來打開。當(dāng)您回答完所有問題后,就可以生成結(jié)果,還可以選擇應(yīng)用結(jié)果。 圖 1展示了結(jié)果頁面的屏幕快照:
圖 1. Configuration Advisor Results 屏幕
完整內(nèi)容的學(xué)習(xí),請訪問:
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0404mcarthur/
【編輯推薦】