文章詳情頁(yè)
DB2數(shù)據(jù)庫(kù)設(shè)計(jì)和最高性能原則(1)
瀏覽:46日期:2023-11-10 19:44:04
這篇文章的目的是為了給IBM(r)商業(yè)伙伴提供一些重要的信息,這些信息是關(guān)于DB2通用數(shù)據(jù)庫(kù)(UDB)在z/OS(r) 環(huán)境下(以下簡(jiǎn)稱DB2)DB2(r)數(shù)據(jù)庫(kù)性能方面的。本文試圖將來(lái)自多方資源的材料進(jìn)行整合,然后盡量有效地將信息展示出來(lái)。本文盡量避免在范圍上過(guò)于寬泛,以及過(guò)于深入細(xì)節(jié)。下面,我將要討論那些最頻繁影響DB2數(shù)據(jù)庫(kù)性能的因素。我在這里并不涉及所有可能的條件和所有潛在的考慮,而是只局限于預(yù)期的范圍之內(nèi)。我希望這篇文章能夠?qū)B2客戶有一個(gè)總體的指導(dǎo),從而使它們自己的環(huán)境中去獲得DB2數(shù)據(jù)庫(kù)的最適宜的性能。這篇文章將從如何在一個(gè)特定的安裝中定制數(shù)據(jù)庫(kù)的性能開(kāi)始談起。 這篇文章所涉及的范圍是數(shù)據(jù)庫(kù)設(shè)計(jì)性能。而DB2的性能包括的內(nèi)容比這要多得多,除了數(shù)據(jù)庫(kù)的設(shè)計(jì)之外,實(shí)際上還有很多其他的影響因素。例如,程序的編碼邏輯,實(shí)際使用的SQL語(yǔ)句,都被劃分在應(yīng)用程序設(shè)計(jì)范圍內(nèi)了。影響DB2系統(tǒng)性能的因素包括了例如安裝選項(xiàng)、緩沖池規(guī)模、DB2相關(guān)的地址空間的分配優(yōu)先級(jí)等。本文的重點(diǎn)在于DB2數(shù)據(jù)庫(kù)的設(shè)計(jì)。但是有些時(shí)候,這些影響性能的因素分類(lèi)之間的界限有些模糊。例如,安裝過(guò)程中對(duì)緩沖池的規(guī)模,選用緩沖池的數(shù)量進(jìn)行的配置一般都被認(rèn)為是系統(tǒng)性能因素。但是,當(dāng)分配特定的表空間和那些緩沖池的索引的時(shí)候,就被認(rèn)為是數(shù)據(jù)庫(kù)設(shè)計(jì)所要考慮的了。 假設(shè)讀者已經(jīng)對(duì)z/OS環(huán)境下的DB2有了一些基本的了解。本文的前幾頁(yè)討論了一些關(guān)于性能治理的基本概念和原則,以便于后面的理解。我的建議在本質(zhì)上有些籠統(tǒng),我總是避免過(guò)于糾纏技術(shù)細(xì)節(jié)或者語(yǔ)法等方面的問(wèn)題。想要獲得關(guān)于這些問(wèn)題的具體信息,你可以查看IBM最近發(fā)布的有關(guān)安裝在客戶端的DB2的文檔。 這篇文檔主要著眼于z/OS V7環(huán)境下的DB2。雖然在z/OS V8下的DB2已經(jīng)發(fā)布了,并且具有通用性,但是很可能還需要幾個(gè)月的時(shí)間,IBM 的大多數(shù)客戶才能夠讓他們的產(chǎn)品系統(tǒng)實(shí)現(xiàn)DB2 V8 NFM(新功能模式)。這里還有另一個(gè)需要考慮的問(wèn)題:雖然每個(gè)新發(fā)布的DB2在正式通用之前,都會(huì)在IBM和客戶環(huán)境中進(jìn)行相當(dāng)充分的測(cè)試,但是客戶仍然很可能對(duì)基于前一版本的有關(guān)DB2的常見(jiàn)推薦和單憑經(jīng)驗(yàn)的方法懷有更多的信心,而不是非常認(rèn)同還沒(méi)有發(fā)布,或者是沒(méi)有獲得普遍使用的新版本(由于驗(yàn)證結(jié)論的實(shí)際過(guò)程的時(shí)間長(zhǎng)度和深度)。我會(huì)在文中提到一些可能會(huì)影響數(shù)據(jù)庫(kù)設(shè)計(jì)性能的DB2 V8的新特性。 12345678910下一頁(yè) 免責(zé)聲明:本文包含的信息并沒(méi)有提交給任何正式的IBM測(cè)試,并按"AS IS"原則提供。本信息的使用,或者是以上提到的任何技術(shù)的實(shí)現(xiàn)均由用戶負(fù)責(zé),且依靠用戶的個(gè)人能力對(duì)其進(jìn)行評(píng)估,并將其整合進(jìn)入客戶特定的操作環(huán)境中。其中的每一項(xiàng)都將在IBM特定的條件下獲得精確的數(shù)值,這里不保證在其他地方會(huì)出現(xiàn)同樣或者相似的結(jié)果。當(dāng)用戶嘗試在各自的環(huán)境下采用上述技術(shù)時(shí),需要自己承擔(dān)風(fēng)險(xiǎn)。 性能原則和方法學(xué) 考慮性能的時(shí)機(jī) 考慮應(yīng)用程序和數(shù)據(jù)庫(kù)各自不同的性能特征的時(shí)間,是在對(duì)這些應(yīng)用程序和數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)的初始階段,即開(kāi)發(fā)過(guò)程的一開(kāi)始。對(duì)你的DB2應(yīng)用程序和數(shù)據(jù)庫(kù)所需要的資源進(jìn)行合理評(píng)估,將會(huì)幫助用戶在開(kāi)發(fā)過(guò)程的早期對(duì)設(shè)計(jì)和實(shí)現(xiàn)做出適當(dāng)?shù)臎Q定。假如你的應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)的性能直到后來(lái)才被說(shuō)明,那么就要做必需的修改以獲得足夠的響應(yīng)時(shí)間,并處理你的批處理窗口;這將會(huì)變得更加困難,并且消耗時(shí)間。 關(guān)注焦點(diǎn) 當(dāng)設(shè)計(jì)性能的時(shí)候,將大部分的精力集中在重要的DB2數(shù)據(jù)和程序上是很明智的做法。對(duì)應(yīng)用程序或者事務(wù)進(jìn)行定義是這部分工作中的重點(diǎn),以下一個(gè)或者多個(gè)特點(diǎn)是適用的: 它們表現(xiàn)了所有業(yè)務(wù)工作量中的大部分 它們有一個(gè)很要害的響應(yīng)時(shí)間需求 它們包括了復(fù)雜的邏輯和/或數(shù)據(jù)訪問(wèn)需求 它們?cè)L問(wèn)大量的數(shù)據(jù) 它們消耗大量的資源 它們直接與客戶進(jìn)行交互(通過(guò)網(wǎng)絡(luò)、ATM等),與此相反,應(yīng)用程序大多面向公司內(nèi)部 數(shù)據(jù)庫(kù)設(shè)計(jì) 數(shù)據(jù)庫(kù)設(shè)計(jì)發(fā)生在以下兩個(gè)階段: 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì) 數(shù)據(jù)庫(kù)物理設(shè)計(jì) 數(shù)據(jù)庫(kù)的邏輯模型只是所有用戶數(shù)據(jù)需求規(guī)格化的形式表現(xiàn)。這個(gè)模型通常是數(shù)據(jù)建模階段的輸出或者是最終結(jié)果。它很少在實(shí)際意義上被實(shí)現(xiàn)。更何況,在考慮如何在數(shù)據(jù)庫(kù)治理系統(tǒng)中實(shí)際地組織和存儲(chǔ)數(shù)據(jù)之前,它只是數(shù)據(jù)的一個(gè)理想化的視圖。 上一頁(yè)1234567下一頁(yè) 當(dāng)考慮到特定數(shù)據(jù)庫(kù)對(duì)象的體系結(jié)構(gòu)的時(shí)候,邏輯模型才會(huì)轉(zhuǎn)化為物理模型。在這一設(shè)計(jì)階段,才需要考慮到數(shù)據(jù)訪問(wèn)需求和性能因素的一些細(xì)節(jié)。在進(jìn)行物理設(shè)計(jì)的過(guò)程中,兩個(gè)要害的因素是表設(shè)計(jì)和索引設(shè)計(jì)。這兩個(gè)問(wèn)題將會(huì)在下面進(jìn)行具體討論。 DB2性能治理的方式 為了確保你的DB2應(yīng)用程序有足夠的性能,采取積極的態(tài)度總比消極應(yīng)對(duì)有意義得多。在DB2數(shù)據(jù)庫(kù)設(shè)計(jì)的早期階段總結(jié)出性能因素是至關(guān)重要的。然后在項(xiàng)目中,努力盡早地確定滿足你的服務(wù)級(jí)別協(xié)議(SLA)的性能“基線的測(cè)量標(biāo)準(zhǔn),這樣你就可以在首次演示和應(yīng)用程序變更的時(shí)候追蹤性能特點(diǎn)及其發(fā)展趨勢(shì)。不斷地監(jiān)測(cè)你的DB2系統(tǒng)和應(yīng)用程序,以便在大多數(shù)的問(wèn)題成形之前預(yù)見(jiàn)到它們。 傳統(tǒng)意義上,許多客戶都是直到應(yīng)用程序開(kāi)發(fā)項(xiàng)目的最后階段才開(kāi)始關(guān)心性能問(wèn)題。但是這樣的等待是毫無(wú)益處的。早在描述用戶界面和處理邏輯的階段就去思考數(shù)據(jù)庫(kù)設(shè)計(jì)的性能特點(diǎn),是比較有好處的。例如,在你的重要的DB2工作(見(jiàn)前面所述)中,創(chuàng)建最好的索引的一個(gè)基本的指導(dǎo)就是對(duì)SQL語(yǔ)句中的謂詞的考慮。 即使是你開(kāi)發(fā)出的最初設(shè)計(jì)是一個(gè)有效的設(shè)計(jì),但是以下的若干修改仍然是必要的,例如對(duì)你的應(yīng)用程序進(jìn)行修改,或者數(shù)據(jù)庫(kù)以卷的形式增長(zhǎng),或者是限制系統(tǒng)資源。假如現(xiàn)有的應(yīng)用程序沒(méi)有充分的運(yùn)行,那么通常情況下你都會(huì)希望最好能夠在現(xiàn)有的索引上面添加更多的列,或者在表上添加新的索引。不論改變表的設(shè)計(jì),或者修改客戶的需求,還是使表非標(biāo)準(zhǔn)化,通常情況下都不是好的選擇。理解DB2性能 單憑經(jīng)驗(yàn)的方法 單憑經(jīng)驗(yàn)的方法(又叫做ROT)在進(jìn)行計(jì)劃、監(jiān)測(cè),以及對(duì)DB2的性能進(jìn)行優(yōu)化時(shí)是很有用處的。ROT典型地基于以前的經(jīng)驗(yàn)(例如,長(zhǎng)時(shí)間的觀測(cè)平均水平),或者是基于對(duì)比較復(fù)雜的公式進(jìn)行簡(jiǎn)化。 上一頁(yè)12345678下一頁(yè) 記住下面這一點(diǎn)是很重要的,ROT對(duì)于粗略的估計(jì)有用,但是進(jìn)行具體分析的時(shí)候就不行了。只是因?yàn)檫@些經(jīng)驗(yàn)出現(xiàn)在某些文章中,就把它們作為性能的精確引證是很危險(xiǎn)的。最好的情況下,它們是估計(jì)值;在最壞的情況下,它們對(duì)于你特定的DB2環(huán)境來(lái)說(shuō)就是無(wú)效的。 ROT應(yīng)該在你的環(huán)境中得到(或者是對(duì)其進(jìn)行調(diào)整,使其適應(yīng)你的環(huán)境)。它們應(yīng)該與你的實(shí)際經(jīng)驗(yàn)相聯(lián)系,而不是被盲目接受,這樣你才會(huì)對(duì)它們的值有信心。從那些在你的非凡環(huán)境之外得到的ROT開(kāi)始也許會(huì)有些幫助。但是當(dāng)你從你的DB2系統(tǒng)中收集、分析、記錄了合適的數(shù)據(jù)之后,就需要對(duì)這些經(jīng)驗(yàn)值進(jìn)行校正或者修改。IBM的紅皮書(shū)是一本有關(guān)ROT的值得閱讀的資源,里面含有許多關(guān)于性能監(jiān)測(cè)工具的推薦經(jīng)驗(yàn)。 另一個(gè)要考慮的事項(xiàng)就是ROT需要持續(xù)一段時(shí)間。隨著硬件技術(shù)的發(fā)展,軟件編碼的改進(jìn),系統(tǒng)的體系結(jié)構(gòu)發(fā)生了變化,這使得ROT更加不可靠,甚至是完全錯(cuò)誤的。隨著時(shí)間的發(fā)展,使ROT發(fā)生改變的最大因素恐怕就是最新發(fā)布的DB2自身了。 DB2工作量 磁盤(pán)I/O通常是影響響應(yīng)時(shí)間的最大因素,但是,通過(guò)查看GETPAGE (GP)需求可以更輕易地看到潛在的性能問(wèn)題。當(dāng)監(jiān)測(cè)DB2的活動(dòng)并進(jìn)行報(bào)告分析的時(shí)候,GETPAGE的數(shù)量很可能就是顯示DB2整體工作情況的最好的指示器。 大部分的DB2安裝工作可以分為以下幾個(gè)較清楚的類(lèi)別: 事務(wù):這是運(yùn)行在事務(wù)治理器控制之下的程序,例如CICS 和 IMS/TM。SQL通常比較簡(jiǎn)單,但是事務(wù)卷是很繁重的。事務(wù)必須為用戶提供非常及時(shí)的響應(yīng)時(shí)間,這樣應(yīng)用程序才不會(huì)被迫等待很長(zhǎng)的時(shí)間以獲得所需的資源。通常是第一個(gè)用戶調(diào)用事務(wù)時(shí)才會(huì)產(chǎn)生讀取索引和數(shù)據(jù)頁(yè)的I/O開(kāi)銷(xiāo)。隨后的用戶可以在緩沖池中訪問(wèn)部分資源。 上一頁(yè)123456789下一頁(yè) 查詢:這是通常情況下為決策支持運(yùn)行的程序。其中的SQL也許十分復(fù)雜,但是卷通常要比事務(wù)的卷輕松許多。查詢用戶通常需要等待幾分鐘,甚至是幾個(gè)小時(shí),具體時(shí)間依靠于產(chǎn)生用戶需要的結(jié)果集所查詢的數(shù)據(jù)量。查詢通常會(huì)調(diào)用針對(duì)整個(gè)表的掃描,并且對(duì)結(jié)果排序也是此類(lèi)工作量的另一個(gè)常見(jiàn)特點(diǎn)。 批處理和實(shí)用工具集:批處理和實(shí)用工具集程序需要處理大量的數(shù)據(jù),并且通常是以順序的方式處理數(shù)據(jù)。在特定的窗口中結(jié)束處理對(duì)于這些程序來(lái)說(shuō)是很重要的。多次使用位置正確的COMMIT(提交)語(yǔ)句是這些應(yīng)用程序具有的一個(gè)很重要的特點(diǎn)。批處理和實(shí)用工具集通常需要消耗大量的各類(lèi)資源,進(jìn)行壓縮的時(shí)候,通常可以逐步提高工作量。 標(biāo)準(zhǔn)化 標(biāo)準(zhǔn)化是應(yīng)用程序進(jìn)行數(shù)據(jù)實(shí)體分析的標(biāo)準(zhǔn)化過(guò)程,最終將把數(shù)據(jù)實(shí)體轉(zhuǎn)換為一系列經(jīng)過(guò)良好設(shè)計(jì)的結(jié)構(gòu)體。通常,邏輯數(shù)據(jù)模型的設(shè)計(jì)目標(biāo)是正確性、一致性、沒(méi)有冗余和簡(jiǎn)單化。而且,關(guān)系理論原則也需要數(shù)據(jù)庫(kù)進(jìn)行標(biāo)準(zhǔn)化。 還有幾條連續(xù)編號(hào)的規(guī)則,被稱為范式,它可以相當(dāng)具體地定義標(biāo)準(zhǔn)化數(shù)據(jù)。我在這里并不具體討論這些規(guī)則。大多數(shù)的專家都會(huì)建議設(shè)計(jì)者們盡力遵循前三條的規(guī)則,因此這樣的數(shù)據(jù)可被稱為遵循第三范式。 對(duì)表進(jìn)行非標(biāo)準(zhǔn)化的意思是,對(duì)一個(gè)先前遵守范式的表進(jìn)行修改,使其違反一條或者多條范式規(guī)則。有時(shí)候,由于性能的原因,確實(shí)需要進(jìn)行這個(gè)非標(biāo)準(zhǔn)化的過(guò)程。有關(guān)標(biāo)準(zhǔn)化的更進(jìn)一步的具體信息,你可以在大多數(shù)的講述關(guān)系數(shù)據(jù)庫(kù)的書(shū)籍中找到。 DB2表空間的類(lèi)型 在定義DB2數(shù)據(jù)庫(kù)的時(shí)候,實(shí)際的表必須在被成為表空間的DB2對(duì)象中進(jìn)行創(chuàng)建。用戶可以在DB2中定義四種不同類(lèi)型的表空間,如下所示: 單一:一個(gè)單一的表空間可以包含多于一個(gè)的DB2表。這個(gè)空間由多個(gè)頁(yè)組成,每個(gè)頁(yè)都可以包含若干行,它們可能是來(lái)自表空間中定義的任何表的數(shù)據(jù)行。 上一頁(yè)12345678910下一頁(yè) 分段:分段表空間可以包含多于一個(gè)的DB2表。這個(gè)表空間由多組頁(yè)組成,每組頁(yè)被稱為一個(gè)段。每個(gè)段包含來(lái)自表空間中定義的某一個(gè)表的若干行。 分區(qū):分區(qū)表空間只可以包含一個(gè)表。這個(gè)空間根據(jù)分區(qū)索引的要害值范圍被劃分成多個(gè)區(qū)。每個(gè)分區(qū)都作為一個(gè)獨(dú)立的實(shí)體對(duì)待,答應(yīng)SQL和DB2實(shí)用工具集的并發(fā)處理。 LOB:LOB表空間只存儲(chǔ)LOB(大對(duì)象)數(shù)據(jù)。LOB包括了3個(gè)數(shù)據(jù)類(lèi)型:BLOB(二進(jìn)制大對(duì)象)、CLOB(字符型大對(duì)象),以及DBCLOB(雙字節(jié)字符型大對(duì)象)。表空間和表設(shè)計(jì)考慮事項(xiàng) 記錄尺寸和頁(yè)尺寸 固定長(zhǎng)度的記錄比可變長(zhǎng)度的記錄要好,因?yàn)樘幚砉潭ㄩL(zhǎng)度記錄的DB2的代碼經(jīng)過(guò)了優(yōu)化。假如記錄是固定長(zhǎng)度的,那么它就永遠(yuǎn)不需要從原來(lái)存儲(chǔ)的頁(yè)中被移動(dòng)出來(lái)。然而,可變長(zhǎng)度的記錄可能增長(zhǎng)到不再適合原來(lái)頁(yè)的長(zhǎng)度,因此它也就必須被移動(dòng)到另一頁(yè)。無(wú)論何時(shí)記錄被順序訪問(wèn),都一定會(huì)出現(xiàn)一個(gè)額外的參考頁(yè)。DB2 UDB V8中的一個(gè)新特性就是當(dāng)你不確定未來(lái)的數(shù)據(jù)長(zhǎng)度增長(zhǎng)情況時(shí),答應(yīng)你根據(jù)需要改變列的尺寸,這樣你就可以不再需要?jiǎng)?chuàng)建可變長(zhǎng)度的記錄。 每頁(yè)中記錄的數(shù)量也是需要考慮的內(nèi)容。DB2提供了一些有關(guān)頁(yè)尺寸的選項(xiàng),例如4 KB, 8 KB, 16 KB和32 KB 。比較好的起點(diǎn)是選擇默認(rèn)的4KB,非凡是當(dāng)行的尺寸相對(duì)較小,或者是對(duì)數(shù)據(jù)的訪問(wèn)比較隨機(jī)的情況下。然而,在一些情況下,也需要考慮較大的頁(yè)尺寸。假如表中單個(gè)行的長(zhǎng)度超過(guò)4KB,那么你就需要使用大一些的頁(yè)尺寸,因?yàn)镈B2不支持跨行的記錄。 還有另一種情況是,當(dāng)固定記錄的總長(zhǎng)度比二分之一的頁(yè)(4KB)稍大一些的時(shí)候,一頁(yè)中就只能放置一個(gè)記錄。另外一種類(lèi)似的情況是,固定記錄的總長(zhǎng)度略長(zhǎng)于三分之一頁(yè)、四分之一頁(yè),等。這樣的設(shè)計(jì)不僅會(huì)浪費(fèi)DASD空間,還會(huì)導(dǎo)致很多的DB2操作消耗更多的資源。因此,對(duì)于上面描述的記錄而言,你需要考慮使用較大的頁(yè)尺寸,這樣就會(huì)相對(duì)地少浪費(fèi)一些空間。 上一頁(yè)234567891011下一頁(yè) 另外一些可能的頁(yè)尺寸為8 KB, 16 KB和 32 KB。頁(yè)的尺寸并不在創(chuàng)建表(CREATE TABLE)的語(yǔ)句中直接寫(xiě)明。相反,表中頁(yè)的尺寸是由分配給包含這個(gè)表的表空間的緩沖池中的頁(yè)尺寸決定的。要獲得更具體的信息,你可以參考DB2 SQL 手冊(cè)中有關(guān)創(chuàng)建表空間(CREATE TABLESPACE)語(yǔ)句的內(nèi)容。 非標(biāo)準(zhǔn)化考慮事項(xiàng) 邏輯數(shù)據(jù)模型是數(shù)據(jù)的一個(gè)理想描述。物理數(shù)據(jù)模型則是數(shù)據(jù)在現(xiàn)實(shí)世界的實(shí)現(xiàn)。標(biāo)準(zhǔn)化只集中在數(shù)據(jù)的內(nèi)涵上面,而不考慮可能訪問(wèn)數(shù)據(jù)的應(yīng)用程序的性能需求。數(shù)據(jù)庫(kù)設(shè)計(jì)的充分標(biāo)準(zhǔn)化會(huì)帶來(lái)性能的挑戰(zhàn)。 有關(guān)此類(lèi)性能問(wèn)題的一個(gè)非經(jīng)常見(jiàn)的例子就是連接操作。通常情況下,標(biāo)準(zhǔn)化過(guò)程的結(jié)果是給各個(gè)獨(dú)立的表賦予相互關(guān)聯(lián)的信息。應(yīng)用程序需要從這些表中訪問(wèn)數(shù)據(jù)。關(guān)系數(shù)據(jù)庫(kù)提供了使用SQL語(yǔ)句來(lái)從多于一個(gè)的表中通過(guò)連接多個(gè)表去訪問(wèn)信息的能力。取決于表的數(shù)目和它們各自的尺寸,連接操作可能會(huì)消耗非常多的資源和時(shí)間。 因?yàn)樵贗/T中有如此多的事情需要考慮,于是出現(xiàn)了一個(gè)折中的想法。對(duì)那些包含被頻繁訪問(wèn)列的多個(gè)表中的數(shù)據(jù)保存副本,與連接表的性能相比,成本高還是低呢?在邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中,對(duì)你的數(shù)據(jù)模型盡量的執(zhí)行標(biāo)準(zhǔn)化,之后再對(duì)其進(jìn)行一定程度的非標(biāo)準(zhǔn)化,也許是進(jìn)行潛在性能優(yōu)化的一個(gè)選項(xiàng)。假如你決定進(jìn)行非標(biāo)準(zhǔn)化了,要確保從頭到尾地記錄了文檔:對(duì)某些細(xì)節(jié)的描述、執(zhí)行非標(biāo)準(zhǔn)化步驟之后的推理,等。 設(shè)計(jì)較大的表 訪問(wèn)很大的DB2表需要消耗相當(dāng)多的資源:CPU,內(nèi)存,I/O。當(dāng)設(shè)計(jì)大表的時(shí)候,用戶需要做的兩件最重要的事情就是: 實(shí)現(xiàn)分區(qū) 創(chuàng)建有用的索引 以上兩個(gè)問(wèn)題將在下面進(jìn)行具體討論。 使用分段或者分區(qū)表空間 上一頁(yè)3456789101112下一頁(yè) 假如數(shù)據(jù)中包含了LOB,那么用戶就必須創(chuàng)建LOB表空間。對(duì)于非LOB的數(shù)據(jù),通常的選擇是分段或者分區(qū)表空間,具體選擇哪一個(gè)在很大程序上取決于你要存儲(chǔ)的數(shù)據(jù)量,同時(shí)還需要考慮相關(guān)應(yīng)用程序需求的數(shù)據(jù)訪問(wèn)類(lèi)型。不太推薦使用單一的表空間。 分段表空間比單一的表空間具有更多的性能優(yōu)勢(shì),如下所示: 對(duì)于包含多于一個(gè)表的表空間,當(dāng)DB2在一個(gè)表上獲得鎖定時(shí),那個(gè)鎖定不影響其他表分段的訪問(wèn)。 當(dāng)DB2掃描一個(gè)表時(shí),只訪問(wèn)與那個(gè)表相聯(lián)系的分段。此外,空分段的頁(yè)不會(huì)被取出。 假如一個(gè)表被清除了,不需要執(zhí)行REORG實(shí)用工具集,它的分段就立即在COMMIT點(diǎn)上變成可再次使用的狀態(tài)。 假如一個(gè)表中的所有行被刪除了(被稱為塊刪除),不需要執(zhí)行REORG實(shí)用工具集,所有的分段都立即在COMMIT點(diǎn)上變成可再次使用的狀態(tài)。 塊刪除操作起來(lái)更加有效,并且書(shū)寫(xiě)相當(dāng)少的記錄信息。 COPY(復(fù)制)實(shí)用工具集不復(fù)制由于塊刪除或者表清除所造成的空頁(yè)。 當(dāng)表達(dá)到一個(gè)特定的尺寸,它們的可治理性和性能都可以通過(guò)分區(qū)表空間獲得改善。假如你想獲得這方面的進(jìn)展,在設(shè)計(jì)和創(chuàng)建時(shí),以分區(qū)的形式定義表空間是一個(gè)明智的做法。分區(qū)表空間的一些潛在優(yōu)勢(shì)列舉如下: 并行性:你可以利用三種類(lèi)型的并行性,它們目前正應(yīng)用于DB2 UDB。DB2 V3引入了查詢并行性(多個(gè)I/O路徑)。DB2 V4則實(shí)現(xiàn)了CP并行性(多CP之上的多任務(wù))。DB2 UDB V5更是引入了系統(tǒng)查詢并行機(jī)制(多個(gè)DB2數(shù)據(jù)共享群之上的多任務(wù))。DB2的發(fā)展進(jìn)化,顯著提高了DB2應(yīng)用程序處理分區(qū)表空間的并行處理能力。由于CPU時(shí)間的增加,這些查詢所消耗的時(shí)間也顯著的減少了。 在數(shù)據(jù)的一部分上工作:分區(qū)表空間答應(yīng)DB2應(yīng)用程序一次運(yùn)行數(shù)據(jù)的一個(gè)分區(qū),因而使其能夠同時(shí)運(yùn)行另外分區(qū)上的另外的工作或者應(yīng)用程序。以同樣的方式,你可以將塊UPDATE(更新)、DELETE(刪除)或INSERT(插入)操作分解為獨(dú)立的工作。除增加了可用性之外,這一技術(shù)也為完成這類(lèi)DB2工作減少消耗的時(shí)間提供了可能。 上一頁(yè)45678910111213下一頁(yè) 更快的訪問(wèn)被頻繁訪問(wèn)的數(shù)據(jù):假如分區(qū)索引能夠?qū)⒏嗟念l繁訪問(wèn)的行從剩余的表中分離出來(lái),然后將那些數(shù)據(jù)置于一個(gè)它自己的,并且應(yīng)用更高速DASD設(shè)備的分區(qū)之內(nèi)。 一般而言,表越大,就越應(yīng)該將其創(chuàng)建為一個(gè)分區(qū)的表。但是也有一些實(shí)際例子表明為小表創(chuàng)建分區(qū)表空間是有利的。當(dāng)查找表用于連接其他大分區(qū)表空間時(shí),通過(guò)將查找表分區(qū),你能夠使并行性在連接中最大化。 當(dāng)你在連接謂詞中利用分區(qū)方法時(shí),需要考慮一個(gè)決定性的因素。被連接在分區(qū)方法上的表應(yīng)該具有相同的分區(qū)數(shù),并且應(yīng)該設(shè)定為相同的值。 數(shù)據(jù)壓縮 DB2提供了壓縮表空間或分區(qū)內(nèi)數(shù)據(jù)的功能。通過(guò)指定CREATE TABLESPACE(創(chuàng)建表空間)語(yǔ)句中的 COMPRESS YES(壓縮許可)選項(xiàng),之后在表空間上同時(shí)執(zhí)行LOAD或REORG實(shí)用工具集,即可完成該功能。數(shù)據(jù)的壓縮是通過(guò)用更短的串來(lái)替換頻繁出現(xiàn)的字符串實(shí)現(xiàn)的。系統(tǒng)還創(chuàng)建了一個(gè)字典,包含了原始字節(jié)串和它們的替代串之間的映射信息。 一定數(shù)量的CPU資源被用于在執(zhí)行數(shù)據(jù)存儲(chǔ)對(duì)其進(jìn)行壓縮,之后,當(dāng)外部存儲(chǔ)設(shè)備讀取時(shí),數(shù)據(jù)又被解壓縮。然而,數(shù)據(jù)壓縮也能夠提供性能方面的好處,因?yàn)楦嗟臄?shù)據(jù)存儲(chǔ)在更小的空間內(nèi)(在DASD上和緩沖池中);同未經(jīng)壓縮的數(shù)據(jù)相比,這樣可以產(chǎn)生更少的同時(shí)讀取、更小的I/O等。 接下來(lái)是當(dāng)試圖決定是否壓縮一個(gè)表空間或分區(qū)時(shí),需要考慮的一些事情: 行的長(zhǎng)度:行越長(zhǎng)(尤其是在接近頁(yè)的尺寸時(shí)),壓縮的有效性就越低。DB2的行不能夠跨頁(yè),當(dāng)一頁(yè)上有多于一行的情況時(shí),你也許不能獲得足夠的壓縮。 表的尺寸:對(duì)于較大的表,壓縮具有較好的效果。對(duì)于很小的表,壓縮字典的大小(8KB到64KB)可能會(huì)抵消壓縮節(jié)省下的所有空間。 上一頁(yè)567891011121314下一頁(yè) 數(shù)據(jù)中的模式:對(duì)于一個(gè)特定的表空間或分區(qū),數(shù)據(jù)中重復(fù)出現(xiàn)的模式的頻率,決定了壓縮的效果。含有大量重復(fù)字符串的數(shù)據(jù)能夠獲得顯著的壓縮效果。 壓縮估計(jì):DB2提供了一個(gè)單獨(dú)的實(shí)用工具集,DSN1COMP,它可以用來(lái)測(cè)定數(shù)據(jù)壓縮將有怎樣的效果。想獲得有關(guān)運(yùn)行該使用工具的額外信息,請(qǐng)參考DB2實(shí)用工具集指南和參考手冊(cè)。 處理成本:在壓縮和解壓縮DB2數(shù)據(jù)時(shí),會(huì)消耗一些CPU資源。假如你用IBM的同步數(shù)據(jù)壓縮硬件特征,所消耗的CPU資源將比利用DB2軟件仿真程序低得多(當(dāng)DB2啟動(dòng)時(shí),這決定了硬件壓縮特征是否可用)。 更好的字典:當(dāng)用LOAD使用工具集來(lái)建立壓縮字典時(shí),DB2用戶用最初載入的n行(n取決于你能夠壓縮的數(shù)據(jù)量)來(lái)決定字典的內(nèi)容。REORG采用取樣技術(shù)來(lái)建立字典。它不僅使用最初載入的n行,還在實(shí)用工具執(zhí)行UNLOAD(未載入)階段的剩余時(shí)間里繼續(xù)對(duì)數(shù)據(jù)行采樣。 通常情況下,我們推薦你在自己的特定環(huán)境下,壓縮那些DB2表空間和分區(qū),這將會(huì)使你的環(huán)境受益;因?yàn)樵诟〉目臻g內(nèi)存儲(chǔ)更多的數(shù)據(jù)的性能優(yōu)勢(shì),幾乎總是在價(jià)值上超過(guò)壓縮和解壓縮數(shù)據(jù)所消耗的CPU資源。 載入大表 在處理大批量數(shù)據(jù)時(shí),將數(shù)據(jù)初始載入表中可能會(huì)對(duì)系統(tǒng)性能產(chǎn)生挑戰(zhàn)。為了在載入過(guò)程中實(shí)現(xiàn)并行性,你可以手動(dòng)創(chuàng)建多個(gè)LOAD作業(yè),每個(gè)分區(qū)建一個(gè);或者作為另一個(gè)選擇,你可以在一個(gè)LOAD程序中載入多個(gè)分區(qū)。每個(gè)分區(qū)都延伸至I/O子系統(tǒng),這種方式可以更輕易地實(shí)現(xiàn)最理想的并行性。 為了使性能最優(yōu)化,在LOAD語(yǔ)句中指定SORTKEYS參數(shù)也很重要。這個(gè)參數(shù)指示DB2將索引方法傳遞給內(nèi)存中的分類(lèi)程序,而不是將要害字寫(xiě)入或者再次讀取DASD上的排序任務(wù)文件。SORTKEYS也能夠?qū)崿F(xiàn)載入和分類(lèi)之間的交迭,因?yàn)榉诸?lèi)是作為一個(gè)獨(dú)立的任務(wù)運(yùn)行的。 上一頁(yè)6789101112131415下一頁(yè)
標(biāo)簽:
DB2
數(shù)據(jù)庫(kù)
排行榜
