獲得關(guān)于設(shè)計(jì)索引以及數(shù)據(jù)分區(qū)鍵、物化查詢(xún)表、IBM® DB2® Universal Database™(DB2 UDB)多維聚類(lèi)的專(zhuān)家?guī)椭esign Advisor 是 DB2 UDB 內(nèi)置的,它能提供您所需的幫助。下面介紹了如何將它用于 OLTP 數(shù)據(jù)庫(kù)。
簡(jiǎn)介
DB2 UDB V8.2 引入了一種名為 Design Advisor 的新工具,該工具使用范圍更廣,可用來(lái)替代 Index Advisor。除了索引外,Design Advisor 還提供關(guān)于物化查詢(xún)表(MQT)、多維集群表(MDC)和數(shù)據(jù)分區(qū)功能(Data Partitioning Feature,DPF)分區(qū)鍵的建議。 即使對(duì)于那些只對(duì)索引感興趣的 DBA,Design Advisor 也好于先前版本的 Index Advisor。本文是由兩部分組成的一個(gè)系列的第 1 部分,旨在探索 Design Advisor 在在線事務(wù)處理(online transaction processing,OLTP)數(shù)據(jù)庫(kù)方面的使用,主要關(guān)注的是如何設(shè)計(jì)適當(dāng)?shù)乃饕匀〉幂^高的性能。
通過(guò)介紹一些特定的例子、考察一些陷阱和常見(jiàn)問(wèn)題,并突出強(qiáng)調(diào) V8.2 的增強(qiáng),我們將演示該工具的效用。第 2 部分將介紹關(guān)于 MQT、MDC 和 DPF 分區(qū)鍵的更多細(xì)節(jié),重點(diǎn)分析數(shù)據(jù)倉(cāng)庫(kù)環(huán)境。
Design Advisor 的價(jià)值
Design Advisor 所提供的建議能與數(shù)據(jù)庫(kù)調(diào)優(yōu)專(zhuān)家的建議相媲美。對(duì)于非專(zhuān)家來(lái)說(shuō),該工具的好處是可以獲得更好的設(shè)計(jì)。對(duì)于專(zhuān)家來(lái)說(shuō),Design Advisor 可以節(jié)省他們寶貴的時(shí)間,因?yàn)?Design Advisor 可以提供一個(gè)初始的設(shè)計(jì),然后由專(zhuān)家進(jìn)一步改進(jìn)設(shè)計(jì)。Design Advisor 還可以提供對(duì)專(zhuān)家的設(shè)計(jì)的獨(dú)立確認(rèn)。
Design Advisor 可以使性能提高多少百分比呢?這取決于初始設(shè)計(jì)的質(zhì)量。然而,提高的幅度是很明顯的。題為 DB2 UDB: The Autonomic Computing Advantage 的 DB2 Magazine 電子書(shū)中包含一個(gè)完整的案例研究,該研究顯示,性能提升了 84%;也就是說(shuō),設(shè)計(jì)經(jīng)過(guò)改進(jìn)之后,對(duì)于相同的工作負(fù)載,現(xiàn)在的運(yùn)行時(shí)間是原來(lái)的 15%。
Design Advisor 何時(shí)有幫助
在很多情況下,DBA 都希望使用 Design Advisor。其中兩種重要的情況是,在生產(chǎn)之前使用 Design Advisor,以及在將一個(gè)系統(tǒng)投入生產(chǎn)之后使用它。關(guān)于在生產(chǎn)之前何時(shí)使用 Design Advisor 的例子包括:
- 在應(yīng)用程序開(kāi)發(fā)的初始階段創(chuàng)建一組新的索引。
- 在應(yīng)用程序系統(tǒng)測(cè)試期間改善性能不佳的查詢(xún)。
還可以將 Design Advisor 用于生產(chǎn)系統(tǒng),根據(jù)以下情況更改索引:
- 實(shí)際生產(chǎn)情況與開(kāi)發(fā)期間的估計(jì)有差別。例如,某一列被訪問(wèn)的頻率超過(guò)預(yù)期;某個(gè)表遠(yuǎn)遠(yuǎn)大于預(yù)期;某些查詢(xún)比預(yù)期執(zhí)行得更頻繁。
- 在系統(tǒng)的運(yùn)行生命周期中模式設(shè)計(jì)發(fā)生了改變。應(yīng)用程序在其運(yùn)行生命周期中常常會(huì)得到調(diào)整,例如為生成報(bào)告而添加一個(gè)新的列或新的查詢(xún)。
- 數(shù)據(jù)庫(kù)老化。隨著數(shù)據(jù)庫(kù)的老化,性能將逐漸下降,因?yàn)楸頃?huì)越來(lái)越大,使用模式也發(fā)生了變化,并且工作量也有所增加。
Design Advisor 經(jīng)常與其他 DB2 特性一起使用。例如:
- Health Monitor。您可以設(shè)置 Health Monitor,使之在出現(xiàn)排序溢出之類(lèi)的情況時(shí)發(fā)出警報(bào)。然后采用 Design Advisor 來(lái)幫助發(fā)現(xiàn)有助于緩解這種性能下降的索引。
- Visual Explain。您可能正在使用 Visual Explain 或相關(guān)特性來(lái)檢查查詢(xún)?cè)L問(wèn)計(jì)劃。您也許注意到被掃描的表過(guò)多。那么這時(shí)可以使用 Design Advisor,看看索引是否能導(dǎo)致不需要掃描那么多表的訪問(wèn)計(jì)劃。
Design Advisor 概述以及 V8.2 中的新特性
您可以將 Design Advisor 作為一種 GUI 工具,或者通過(guò)命令行來(lái)使用它。在 V8.2 中,您可以從一個(gè)新的地方來(lái)訪問(wèn)這個(gè) GUI。在 Control Center 中,可以右擊您想要處理的數(shù)據(jù)庫(kù)。在彈出的菜單中,選擇 Design Advisor...。
命令行命令仍然是: db2advis。是使用 GUI 還是使用命令行?這基本上取決于個(gè)人偏好。兩者在功能上差別很小。
確定需要使用 Design Advisor 之后,請(qǐng)遵循下面列出的步驟來(lái)使用該工具。對(duì)于每一步,我們列出了 V8.2 中適用于 OLTP 數(shù)據(jù)庫(kù)(其中最相關(guān)的就是索引)的一些關(guān)鍵的增強(qiáng)。
表 1. V8.2 中的新特性
步驟 |
V8.2 中的新特性 |
1. 收集和描述提供給 Design Advisor 的工作負(fù)載 |
該工具支持其他提供工作負(fù)載的方法:(1) 在 GUI 中從一個(gè)文件裝載工作負(fù)載,或者 (2) 從 Event Monitor 獲得工作負(fù)載 |
2. 決定何時(shí)以及如何運(yùn)行該工具 |
由于采用了新的工作負(fù)載壓縮技術(shù),所以運(yùn)行該工具時(shí)所需的資源更少 |
3. 回顧建議 |
(1) Design Advisor 現(xiàn)在考慮更大范圍的索引類(lèi)型,包括:雙向索引和帶 INCLUDE 列的 UNIQUE 索引。(2) 有更多關(guān)于建議的詳細(xì)信息:例如,與各條 SQL 語(yǔ)句相關(guān)的改進(jìn) |
4. 后續(xù)步驟 |
您可以生成關(guān)于建議的一個(gè)報(bào)告,并將其保存到一個(gè)文件中 |