文章詳情頁(yè)
DB2數(shù)據(jù)庫(kù)設(shè)計(jì):取得最佳性能的準(zhǔn)則(1)
瀏覽:49日期:2023-11-10 11:02:10
在開發(fā)過程的早期作出的很多設(shè)計(jì)決定對(duì)DB2應(yīng)用程序和數(shù)據(jù)庫(kù)的性能有著巨大的影響。本文為在z/OS環(huán)境中取得更好的性能提供了一些一般性的指南和建議。 一、簡(jiǎn)介 本文的目的是為IBM業(yè)務(wù)伙伴提供關(guān)于DB2 Universal Database?(UDB)for z/OS(后面將簡(jiǎn)稱為 DB2)環(huán)境中DB2數(shù)據(jù)庫(kù)性能的重要信息。本文試圖從多處收集材料,并盡可能有效地將它們表述出來。本文無意包含很全面的范圍,也不會(huì)包含很深的細(xì)節(jié)。 我曾打算討論對(duì)DB2數(shù)據(jù)庫(kù)的性能影響最大的一些因素。但是,并不是所有可能的情形都可以猜測(cè)到,也不是所有潛在的考慮都能顧及到,更不用說在期望的范圍內(nèi)對(duì)它們進(jìn)行描述了。我希望本文可以為不同環(huán)境下的DB2用戶提供一個(gè)通用的指南,以幫助他們?nèi)〉米罴训腄B2數(shù)據(jù)庫(kù)性能。本文的目的是成為一個(gè)良好的起點(diǎn),用以處理任何給定安裝環(huán)境下的數(shù)據(jù)庫(kù)性能問題。 本文的范圍是數(shù)據(jù)庫(kù)設(shè)計(jì)性能。DB2性能遠(yuǎn)不止這一部分,它肯定要受到數(shù)據(jù)庫(kù)設(shè)計(jì)以外的很多因素的影響。例如,程序的編碼邏輯和其中使用的實(shí)際的SQL語句,可以列為應(yīng)用程序設(shè)計(jì)一類。DB2系統(tǒng)性能可以包括諸如安裝選項(xiàng)、緩沖池大小設(shè)置、DB2相關(guān)地址空間的調(diào)度優(yōu)先級(jí)等等之類的因素。 本文的焦點(diǎn)是DB2數(shù)據(jù)庫(kù)的設(shè)計(jì)。不過,有時(shí)候這些性能因素類別之間的界線可能會(huì)有些模糊。例如,在某種安裝環(huán)境下進(jìn)行配置時(shí),緩沖池大小的設(shè)置和數(shù)量的選擇通常被認(rèn)為是一項(xiàng)系統(tǒng)性能因素。但是,倘若是將特定的表空間和索引指派給那些緩沖池,那么這些因素又可以看作是數(shù)據(jù)庫(kù)設(shè)計(jì)一類的因素了。 在這里,我假設(shè)讀者對(duì)z/OS環(huán)境中的DB2有一個(gè)基本的理解。本文的頭幾頁(yè)將討論性能治理的一些基本概念和準(zhǔn)則,以便進(jìn)行“級(jí)別設(shè)置 。我的建議有點(diǎn)綜合的性質(zhì),因而不會(huì)總是具體地給出技術(shù)性的描述和語法。讀者假如想了解關(guān)于這些內(nèi)容的更具體的信息,那么應(yīng)該去閱讀關(guān)于用戶本地所安裝的DB2版本的最近的IBM文檔。 12345678910下一頁(yè) 本文的通用設(shè)計(jì)點(diǎn)是DB2 for z/OS V7。雖然DB2 for z/OS V8已經(jīng)被公布,并且也普遍可用(generally available ,GA),但是大部分IBM客戶極有可能需要幾個(gè)月的時(shí)間才能實(shí)現(xiàn)用于他們的生產(chǎn)系統(tǒng)的DB2 V8 NFM(New Function Mode)。而且,這里還要考慮另外一個(gè)因素。雖然DB2的每個(gè)新版本在變得普遍可用之前,都已經(jīng)在IBM及其客戶環(huán)境下經(jīng)過了廣泛的測(cè)試,但是相對(duì)于一個(gè)還沒有推廣的、沒有普遍使用的版本而言,客戶們往往對(duì)于基于早先版本的DB2的一般建議和竅門更有信心(長(zhǎng)時(shí)間積累的經(jīng)驗(yàn)驗(yàn)證了這一結(jié)論)。我將提到DB2 V8的一些新特性,從性能的角度來看,這些新性能可能會(huì)影響數(shù)據(jù)庫(kù)設(shè)計(jì)。 免責(zé)聲明:本文中所包含的信息未經(jīng)任何正式的IBM測(cè)試,而是以AS IS的形式發(fā)布的。對(duì)這些信息的使用和其中任何技術(shù)的實(shí)現(xiàn),都由用戶承擔(dān)責(zé)任,并取決于用戶的能力去評(píng)價(jià)它們和將它們整合到客戶特有的操作環(huán)境。雖然IBM對(duì)于每一項(xiàng)都進(jìn)行了審查,以求特定情況下的正確性,但不能保證在其他情況下也能得到相同的或類似的結(jié)果。試圖將這些技術(shù)應(yīng)用于他們自身環(huán)境的用戶須自己承擔(dān)風(fēng)險(xiǎn)。 二、性能準(zhǔn)則和方法學(xué) 1. 何時(shí)考慮性能 考慮應(yīng)用程序和數(shù)據(jù)庫(kù)的性能特性的時(shí)機(jī)是在那些應(yīng)用程序和數(shù)據(jù)庫(kù)的初期設(shè)計(jì)階段,也就是開發(fā)過程的開始階段。對(duì)DB2應(yīng)用程序和數(shù)據(jù)庫(kù)所需的資源進(jìn)行合理的估計(jì),這有助于用戶在開發(fā)過程的早期便對(duì)設(shè)計(jì)和實(shí)現(xiàn)作出恰當(dāng)?shù)臎Q定。假如等到后期才來考慮訪問數(shù)據(jù)庫(kù)的應(yīng)用程序的性能,那么為了取得適當(dāng)?shù)捻憫?yīng)時(shí)間和生成批處理窗口而進(jìn)行一些必需的修改時(shí),就會(huì)更加困難,而且更加消耗時(shí)間。 2. 應(yīng)該關(guān)注些什么 當(dāng)從性能的角度進(jìn)行設(shè)計(jì)時(shí),將大部分的精力集中在重要DB2數(shù)據(jù)和程序上,這種做法比較明智。在確定是什么應(yīng)用程序或事務(wù)構(gòu)成這一重要的工作負(fù)載時(shí),以下特征中的一條或幾條將會(huì)適用: 上一頁(yè)1234567下一頁(yè) 1) 它們代表了總體業(yè)務(wù)工作負(fù)載的很大的百分比。 2) 它們有著要害響應(yīng)時(shí)間需求。 3) 它們包括復(fù)雜的邏輯和/或數(shù)據(jù)訪問需求。 4) 它們?cè)L問大量的數(shù)據(jù)。 5) 它們消耗大量的資源。 6) 與那些屬于公司內(nèi)部的應(yīng)用程序相比,它們是直接與客戶打交道的(通過 Web、ATM 等)。 3. 數(shù)據(jù)庫(kù)設(shè)計(jì) 數(shù)據(jù)庫(kù)的設(shè)計(jì)有兩個(gè)階段: 1) 邏輯數(shù)據(jù)庫(kù)設(shè)計(jì) 2) 物理數(shù)據(jù)庫(kù)設(shè)計(jì) 數(shù)據(jù)庫(kù)的邏輯模型僅僅是對(duì)用戶的所有數(shù)據(jù)需求的一種表示,它將這些需求變成一種范式。這種模型通常就是數(shù)據(jù)建模會(huì)議的輸出或最終結(jié)果。該模型實(shí)際上很少被原原本本地實(shí)現(xiàn)。其實(shí),該模型只是在考慮如何實(shí)際地構(gòu)造數(shù)據(jù)和將數(shù)據(jù)存儲(chǔ)在DBMS之前,對(duì)數(shù)據(jù)的一種理想化的看法。 在對(duì)數(shù)據(jù)庫(kù)對(duì)象的架構(gòu)進(jìn)行了考慮之后,邏輯模型就被轉(zhuǎn)化為物理模型。在設(shè)計(jì)的這個(gè)階段,就需要較為具體地考慮數(shù)據(jù)訪問需求和性能因素。在產(chǎn)生物理設(shè)計(jì)的這個(gè)過程當(dāng)中,有兩大要素,即表設(shè)計(jì)和索引設(shè)計(jì)。下面將較為具體地討論這兩個(gè)話題。 4. DB2性能治理的方法 為了確保DB2應(yīng)用程序具備合格的性能,未雨綢繆勝于亡羊補(bǔ)牢。在設(shè)計(jì)DB2數(shù)據(jù)庫(kù)的早期階段就將性能因素考慮進(jìn)來,這一點(diǎn)很重要。然后,在項(xiàng)目盡可能早的時(shí)候,建立一套符合Service Level Agreement(SLA) 的性能“基準(zhǔn)線測(cè)量方法,這樣,便可以在展示的時(shí)候和應(yīng)用程序被修改的時(shí)候,跟蹤性能特性和趨勢(shì)。同時(shí)還應(yīng)該持續(xù)地監(jiān)控DB2系統(tǒng)和應(yīng)用程序,從而在大的問題完全發(fā)作之前進(jìn)行猜測(cè)。 通常,很多客戶只有到了應(yīng)用程序開發(fā)項(xiàng)目的最后階段才開始擔(dān)心性能。但是通常沒有什么好的理由需要等到那時(shí)才去考慮性能。更好的做法是,在指定了用戶界面和處理邏輯之后,立即考慮數(shù)據(jù)庫(kù)設(shè)計(jì)的性能特性。例如,在創(chuàng)建最佳索引時(shí),應(yīng)該將重要DB2工作(請(qǐng)參閱前面的討論)中SQL語句的謂詞作為主要指南。 上一頁(yè)12345678下一頁(yè) 即使您可以開發(fā)一個(gè)有效的初期設(shè)計(jì),隨著數(shù)據(jù)量的增加,或者在系統(tǒng)資源緊缺的時(shí)候,也仍有必要對(duì)應(yīng)用程序和/或數(shù)據(jù)庫(kù)作出修改。假如一個(gè)應(yīng)用程序執(zhí)行時(shí)的性能不合格,較為可取的做法通常是添加更多的列到現(xiàn)有的索引中,或者為一個(gè)表添加新的索引,這種做法是首選。而更改表的設(shè)計(jì),或修改用戶需求,抑或修改反規(guī)范化(de-normalizing)表,都不是很有吸引力的選擇。 三、理解DB2性能 1. Rules-of-thumb Rules of thumb(經(jīng)驗(yàn)法則,也稱ROT)在規(guī)劃、監(jiān)控和優(yōu)化DB2性能的時(shí)候很有用。ROT通常是基于以前的經(jīng)驗(yàn)(比如在一段時(shí)間內(nèi)觀察到的平均值)或者更復(fù)雜公式的簡(jiǎn)化。 記住這樣一個(gè)事實(shí)很重要,即ROT只對(duì)于粗略的估計(jì)有用,而對(duì)于具體的分析用處不大。假如只是在某一類的文檔中看到了一些ROT,便欣然接受并作為精確的事實(shí)來引用,那么就會(huì)有危險(xiǎn)。在最好的情況下,這些ROT是一種估計(jì),而在最壞的情況下,這些ROT對(duì)于特定的DB2環(huán)境可能不成立。 您應(yīng)該為自己的環(huán)境非凡開發(fā)這些ROT(或者對(duì)它們進(jìn)行調(diào)節(jié),以適應(yīng)自己的環(huán)境的特性)。應(yīng)確保ROT與實(shí)際經(jīng)驗(yàn)相關(guān),而不是盲目地接受,這樣才能對(duì)它們更有信心。一開始的時(shí)候,使用那些在您特定環(huán)境以外被使用過或者被開發(fā)出來的ROT,這種做法可能有用。但是,當(dāng)對(duì)您自己DB2系統(tǒng)中的適當(dāng)數(shù)據(jù)進(jìn)行收集、分析和編制文檔之后,應(yīng)該對(duì)這些ROT加以驗(yàn)證和修改。IBM Redbooks是關(guān)于ROT的一種很好的參考資料,這些ROT經(jīng)常作為建議被包括在性能監(jiān)控工具中。 另一方面的考慮是,ROT可能隨著時(shí)間的推移而演變。硬件技術(shù)的發(fā)展,軟件編程技術(shù)的提高,系統(tǒng)架構(gòu)的變化,諸如此類的變化都可能使得ROT的可靠性降低,甚至變得無效。而使ROT隨著時(shí)間變化的最大因素也許正是DB2本身新版本的發(fā)行。 上一頁(yè)123456789下一頁(yè) 2. DB2工作負(fù)載 磁盤I/O經(jīng)常是影響響應(yīng)時(shí)間的最大因素,但是通過查看GETPAGE(GP)請(qǐng)求,更輕易理解底層的性能問題。當(dāng)監(jiān)控DB2活動(dòng)和分析報(bào)告時(shí),GETPAGE的數(shù)量也許是DB2總體工作負(fù)載的最好的指示器。 某個(gè)安裝環(huán)境下的很多DB2工作都可以無異議地歸為以下幾類: 1) 事務(wù):事務(wù)是在事務(wù)治理器(例如CICS和IMS/TM)控制下運(yùn)行的程序。其中的SQL通常比較簡(jiǎn)單,但是事務(wù)量比較重。事務(wù)必須為用戶提供極好的響應(yīng)時(shí)間,這樣應(yīng)用程序才不致于要長(zhǎng)時(shí)間地等待它們所需的資源。通常,第一個(gè)調(diào)用事務(wù)的用戶將承受讀取索引和數(shù)據(jù)頁(yè)的成本。隨后的用戶則經(jīng)常可以發(fā)現(xiàn)有些資源已經(jīng)在緩沖池中。 2) 查詢:查詢也是程序,經(jīng)常在需要決策支持時(shí)執(zhí)行它。其中的SQL可能非常復(fù)雜,但是工作量經(jīng)常遠(yuǎn)不及事務(wù)。查詢的用戶經(jīng)常要等上數(shù)分鐘甚至數(shù)小時(shí),這取決于為了產(chǎn)生用戶所請(qǐng)求的結(jié)果集,需要對(duì)多少數(shù)據(jù)進(jìn)行搜索。查詢經(jīng)常要引起對(duì)整個(gè)表的掃描,而對(duì)結(jié)果排序是這種類型的工作負(fù)載的另一種常見特征。 3) 批處理和實(shí)用程序: 批處理和實(shí)用程序通常處理大量的數(shù)據(jù),并且經(jīng)常以一種連續(xù)的方式處理數(shù)據(jù)。這些程序在給定的窗口中完成它們的處理,這一點(diǎn)很重要。批處理和實(shí)用程序往往是各種系統(tǒng)資源的消費(fèi)大戶,一旦它們擠在一起,經(jīng)常會(huì)使工作負(fù)載逐步上升。 3. 規(guī)范化 規(guī)范化是分析應(yīng)用程序所需的數(shù)據(jù)實(shí)體,然后將這些數(shù)據(jù)實(shí)體轉(zhuǎn)化成一組設(shè)計(jì)良好的結(jié)構(gòu)的一個(gè)格式化的過程。邏輯數(shù)據(jù)模型的一般設(shè)計(jì)目標(biāo)是正確性、一致性、非冗余和簡(jiǎn)單性。而且,關(guān)系理論的信條也要求數(shù)據(jù)庫(kù)要經(jīng)過規(guī)范化。 有一些按照連續(xù)編號(hào)排列的規(guī)則(也叫 范式(form))可以用來很具體地定義規(guī)范化數(shù)據(jù)。大多數(shù)專家都會(huì)建議設(shè)計(jì)者盡量遵從前三條規(guī)則,由此得到的數(shù)據(jù)就可以說是符合第三范式。 上一頁(yè)12345678910下一頁(yè) 而將一個(gè)表反規(guī)范化(de-normalize)的意思是,違反該表之前遵從的一種或多種范式,從而修改規(guī)范化的設(shè)計(jì)。這種反標(biāo)準(zhǔn)化的過程經(jīng)常是由于性能的原因而進(jìn)行的。在大多數(shù)以關(guān)系數(shù)據(jù)庫(kù)為主題的書籍當(dāng)中,都可以找到關(guān)于規(guī)范化的更具體的信息。 4. DB2表空間類型 在一個(gè)定義好的DB2數(shù)據(jù)庫(kù)中,實(shí)際的表必須在稱作表空間(table space)的DB2對(duì)象中創(chuàng)建。用戶可以在DB2中定義4種不同的表空間: 1) 簡(jiǎn)單表空間:簡(jiǎn)單表空間可以包含一個(gè)以上的DB2表。這種表空間由頁(yè)構(gòu)成,每個(gè)頁(yè)可以包含該表空間中定義的任何表中的行。 2) 分段表空間:分段表空間可以包含一個(gè)以上的DB2表。這種表空間由頁(yè)組構(gòu)成,頁(yè)組被稱作段(segment)。每個(gè)段只能包含該表空間中定義的一個(gè)表中的行。 3) 分區(qū)表空間:分區(qū)表空間只能包含一個(gè)表。根據(jù)分區(qū)(partitioning)索引的鍵范圍,這種表空間被分成數(shù)個(gè)分區(qū)。每個(gè)分區(qū)都被看作一個(gè)獨(dú)立的實(shí)體,答應(yīng)SQL和DB2實(shí)用程序?qū)ζ溥M(jìn)行并發(fā)處理。 4) LOB表空間:LOB 表空間只用于LOB(大型對(duì)象)數(shù)據(jù)。LOB包括三種數(shù)據(jù)類型:BLOB(二進(jìn)制大型對(duì)象)、CLOB(字符大型對(duì)象)和DBCLOB(雙字節(jié)字符大型對(duì)象)。 四、表空間與表設(shè)計(jì)方面的考慮 1. 記錄大小和頁(yè)寬 固定長(zhǎng)度的記錄要優(yōu)于可變長(zhǎng)度的記錄,因?yàn)镈B2代碼專門為處理固定長(zhǎng)度的記錄進(jìn)行優(yōu)化。假如記錄是固定長(zhǎng)度的,那么就無需將其從存儲(chǔ)它的初始頁(yè)面轉(zhuǎn)移到其他地方。而對(duì)于可變長(zhǎng)度的記錄,其長(zhǎng)度可能會(huì)變得不再適合初始頁(yè),因此必須將其轉(zhuǎn)移到其他頁(yè)。之后,每當(dāng)需要訪問該記錄時(shí),就必須發(fā)生額外的頁(yè)引用。DB2 UDB V8中的一種新特性答應(yīng)在需要的時(shí)候修改(ALTER)某一列的寬度,這樣一來,即使您不能確定將來數(shù)據(jù)長(zhǎng)度的增長(zhǎng)情況,也不再需要?jiǎng)?chuàng)建可變長(zhǎng)度的記錄。 上一頁(yè)234567891011下一頁(yè) 一個(gè)頁(yè)中所能存放的記錄的數(shù)目也是值得考慮的一個(gè)方面。DB2為頁(yè)寬提供了很多選項(xiàng)(4KB、8KB、16KB和32KB)。一開始的時(shí)候,可以選擇默認(rèn)選項(xiàng)(4KB),假如行的長(zhǎng)度很小,或者對(duì)數(shù)據(jù)的訪問基本上是隨機(jī)的,則更應(yīng)該選擇這一選項(xiàng)。不過,在有些情況下,則需要考慮使用更大的頁(yè)寬。假如一個(gè)表中各行的長(zhǎng)度要大于4KB,那么就需要使用更大的頁(yè)寬,因?yàn)镈B2不支持跨頁(yè)(spanned)記錄。 還有一些情況下,對(duì)于一條固定長(zhǎng)度的記錄,其總長(zhǎng)度可能剛好比4KB的一半大一點(diǎn)點(diǎn),這時(shí)一個(gè)頁(yè)只能容納一條記錄。對(duì)于剛好比頁(yè)寬的 1/3、1/4 大一點(diǎn)點(diǎn)的記錄,情形也是類似的。這種設(shè)計(jì)不僅浪費(fèi)DASD空間,而且,對(duì)于很多DB2操作,還需要消耗更多的資源。因此,對(duì)于這一類的記錄,應(yīng)該考慮使用更大的頁(yè)寬,這樣浪費(fèi)的空間相對(duì)要少一些。 其他可能的頁(yè)寬是8KB、16KB和32KB。頁(yè)寬不是在CREATE TABLE語句中直接指定的。相反,表的頁(yè)寬是由相應(yīng)的緩沖池的頁(yè)寬來確定的,這個(gè)緩沖池也就是為包含該表的表空間所指定的緩沖池。要了解更多細(xì)節(jié),請(qǐng)參考DB2 SQL Reference手冊(cè)中的CREATE TABLESPACE語句。 2. 反規(guī)范化方面的考慮 邏輯數(shù)據(jù)模型是數(shù)據(jù)的理想藍(lán)圖。物理數(shù)據(jù)模型才是對(duì)數(shù)據(jù)的現(xiàn)實(shí)的實(shí)現(xiàn)。規(guī)范化只關(guān)注數(shù)據(jù)的意義,而沒有考慮對(duì)于訪問數(shù)據(jù)的應(yīng)用程序的性能需求。完全規(guī)范化的數(shù)據(jù)庫(kù)設(shè)計(jì)在性能方面要受到質(zhì)疑。 這種性能問題的最常見的例子是連接(join)操作。通常,規(guī)范化過程最終將相關(guān)的信息放入不同的表中。于是應(yīng)用程序需要從多個(gè)這樣的表中訪問數(shù)據(jù)。關(guān)系數(shù)據(jù)庫(kù)為SQL語句提供了從一個(gè)以上的表中訪問信息的能力,這是通過 連接多個(gè)表來完成的。連接操作可能要消耗大量的資源和時(shí)間,這取決于表的數(shù)量以及這些表各自的長(zhǎng)度。 上一頁(yè)3456789101112下一頁(yè) 像I/T中的很多事情一樣, 這里也可以考慮一種權(quán)衡的方法。對(duì)于具有經(jīng)常被請(qǐng)求的列的多個(gè)表,一種是復(fù)制其中的數(shù)據(jù),一種是執(zhí)行表連接,兩者誰的成本更高呢?在邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)過程中,您可以毫無保留地規(guī)范化數(shù)據(jù)模型,然后再加入一定程度的反規(guī)范化,作為潛在的性能調(diào)優(yōu)的一種選擇。假如您確實(shí)打算反規(guī)范化,那么一定要為此制作完整文檔:較具體地描述您所采取的反規(guī)范化步驟背后的原因。 3. 設(shè)計(jì)大型的表 訪問非常大的DB2表時(shí),相應(yīng)地要消耗很多的資源:CPU、內(nèi)存和I/O。在設(shè)計(jì)大型表的時(shí)候,為了提高性能,用戶可以做的最重要的兩件事是: 1) 實(shí)現(xiàn)分區(qū)。 2) 創(chuàng)建有用的索引。 下面將更具體地討論這兩個(gè)話題。 4. 使用分段的或分區(qū)的表空間 假如數(shù)據(jù)包括LOB,那么用戶就必須創(chuàng)建LOB表空間。對(duì)于非LOB數(shù)據(jù),一般需要在分區(qū)表空間和分段表空間之間進(jìn)行選擇,這很大程度上取決于要存儲(chǔ)的數(shù)據(jù)量,在一定長(zhǎng)度上也取決于相關(guān)應(yīng)用程序所需的數(shù)據(jù)訪問類型。簡(jiǎn)單表空間已經(jīng)很少被推薦了。 下面列出了分段表空間相對(duì)于簡(jiǎn)單表空間的一些性能優(yōu)勢(shì): 1) 對(duì)于包含多個(gè)表的表空間,當(dāng)DB2取得用于某一個(gè)表的鎖時(shí),這個(gè)鎖不會(huì)影響對(duì)其他表的段的訪問。 2) 當(dāng)DB2掃描一個(gè)表時(shí),只是訪問與那個(gè)表相關(guān)的段。而且,空段中的頁(yè)不會(huì)被提取。 3) 假如一個(gè)表被刪除,在執(zhí)行COMMIT之際,它的段就立即可以為其他表所用,而不需要執(zhí)行REORG實(shí)用程序。 4) 假如一個(gè)表中的所有行都被刪除(即 mass delete),則在執(zhí)行COMMIT之際,該表所有的段就立即可以為其他表所用,而不需要執(zhí)行REORG實(shí)用程序。 5) mass delete執(zhí)行起來要高效得多,并且要寫的日志信息也更少一些。 上一頁(yè)45678910111213下一頁(yè) 6) COPY實(shí)用程序不會(huì)復(fù)制那些由mass delete操作或刪除(DROP)一個(gè)表所造成的空頁(yè)。 當(dāng)表達(dá)到一定大小時(shí),通過實(shí)現(xiàn)分區(qū)表空間可以提高易治理性和性能。假如預(yù)見到這樣的增長(zhǎng),那么明智的做法是,在設(shè)計(jì)和創(chuàng)建表空間時(shí)將其定義為分區(qū)的。下面列出了分區(qū)表空間可以提供的一些潛在的優(yōu)勢(shì): 1) 并行性:您可以使用DB2 UDB目前所使用的三種并行方式。查詢并行(多條I/O路徑)是在DB2 V3中引入的。Sysplex查詢并行(一個(gè)DB2數(shù)據(jù)共享組中的多用戶和多任務(wù))是在DB2 UDB V5中引入的。到現(xiàn)在,DB2已得到極大的發(fā)展,并大大地增強(qiáng)了那些處理分區(qū)表空間的DB2應(yīng)用程序的并行處理能力。通過增加一定的CPU時(shí)間,可以大大減少這些查詢所需的時(shí)間。 2) 對(duì)部分?jǐn)?shù)據(jù)進(jìn)行操作:分區(qū)表空間答應(yīng)DB2實(shí)用程序一次處理一個(gè)分區(qū)的數(shù)據(jù),這樣其他任務(wù)或應(yīng)用程序就可以并發(fā)地對(duì)其他分區(qū)進(jìn)行訪問。按照類似的方式,您可以將mass UPDATE、DELETE或INSERT操作拆成多個(gè)不同的任務(wù)。除了增加可用性以外,這種技術(shù)還可以為減少完成這種DB2工作所需的時(shí)間提供潛力。 3) 對(duì)頻繁訪問的數(shù)據(jù)有更快的訪問速度:假如分區(qū)索引可以將訪問更頻繁的行與表中其他的行分開來,那么就可以將這些數(shù)據(jù)放入到它們專用的分區(qū)中,并使用更高速的DASD設(shè)備。 通常,表越大,就越有理由將其創(chuàng)建為分區(qū)的表。但有時(shí)候?yàn)檩^小的表創(chuàng)建分區(qū)表空間也很有利。當(dāng)將 查找(lookup)表與其他較大的分區(qū)的表相連接時(shí),通過將查找表也進(jìn)行分區(qū),可以最大化并行度。 假如在連接謂詞中使用分區(qū)鍵(partitioning key),最后還有一點(diǎn)考慮需要顧及。需要按分區(qū)鍵進(jìn)行連接的表應(yīng)該有相同數(shù)量的分區(qū),并且應(yīng)該在相同的值上斷開。 上一頁(yè)567891011121314下一頁(yè) 5. 數(shù)據(jù)壓縮 DB2提供了壓縮一個(gè)表空間或分區(qū)中的數(shù)據(jù)的能力。這是通過在CREATE TABLESPACE語句中指定COMPRESS YES選項(xiàng),然后對(duì)表空間執(zhí)行LOAD或REORG實(shí)用程序來實(shí)現(xiàn)的。通過用較短的字符串替換經(jīng)常出現(xiàn)的長(zhǎng)字符串,可以壓縮數(shù)據(jù)。這時(shí)會(huì)建立一個(gè)字典,其中包含了映射原始的長(zhǎng)字符串與它們的替換值的信息。 在數(shù)據(jù)被存儲(chǔ)之前壓縮數(shù)據(jù),以及在從外部存儲(chǔ)設(shè)備讀出數(shù)據(jù)時(shí)將數(shù)據(jù)解壓,這都需要使用一定的CPU資源。但是,數(shù)據(jù)壓縮也可以為性能帶來好處,因?yàn)榭梢栽诟俚目臻g(包括DASD和緩沖池中的空間)中存儲(chǔ)更多的數(shù)據(jù),與未壓縮的數(shù)據(jù)相比,這樣可以減少同步讀,減少I/O等。 在決定是否壓縮一個(gè)表空間或分區(qū)時(shí),要考慮下面一些事情: 1) 行的長(zhǎng)度:行的長(zhǎng)度越大(尤其是它接近頁(yè)寬時(shí)),壓縮的效率就越低。在DB2中,行不能跨頁(yè),您可能無法實(shí)現(xiàn)足夠的壓縮來使一頁(yè)可以容納多行。 2) 表的長(zhǎng)度:對(duì)于更大的表空間,壓縮更為有效。對(duì)于非常小的表,壓縮字典的大小(8KB到64KB)有可能會(huì)抵消掉通過壓縮所節(jié)省出來的空間。 3) 數(shù)據(jù)中的模式:對(duì)于特定的表空間或分區(qū),數(shù)據(jù)中重復(fù)出現(xiàn)的模式的出現(xiàn)頻率將決定壓縮的效果。有大量重復(fù)字符串的數(shù)據(jù)有巨大的壓縮潛力。 4) 對(duì)壓縮的估計(jì):DB2提供了一個(gè)獨(dú)立的實(shí)用程序DSN1COMP,通過執(zhí)行該實(shí)用程序可以判定壓縮數(shù)據(jù)的效果。要了解關(guān)于運(yùn)行該實(shí)用程序的更多信息,請(qǐng)參考DB2 Utilities Guide and Reference手冊(cè)。 5) 處理成本: 壓縮和解壓數(shù)據(jù)時(shí),要消耗一定的CPU資源。與使用DB2軟件模擬程序相比,使用IBM的同步數(shù)據(jù)壓縮硬件可以大大減少所消耗的CPU資源(當(dāng)DB2啟動(dòng)時(shí),它將判定硬件壓縮特性是否可用)。 上一頁(yè)6789101112131415下一頁(yè)
標(biāo)簽:
DB2
數(shù)據(jù)庫(kù)
排行榜
