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