Oracle數(shù)據(jù)庫(kù)的并行處理技術(shù)淺析
Oracle數(shù)據(jù)庫(kù)的并行處理技術(shù)作為數(shù)據(jù)庫(kù)中的一項(xiàng)比較核c心的技術(shù),Oracle數(shù)據(jù)庫(kù)的并行處理技術(shù)使組織以高效的管理與訪問(wèn)TB級(jí)的相關(guān)數(shù)據(jù)。如果不能提供高效的Oracle數(shù)據(jù)庫(kù)并行處理技術(shù),這些大型數(shù)據(jù)庫(kù)(通常用于數(shù)據(jù)倉(cāng)庫(kù)但也越來(lái)越多地出現(xiàn)在業(yè)務(wù)系統(tǒng)中)將不會(huì)存在。
簡(jiǎn)而言之,并行處理就是利用多個(gè)CPU和I/O資源來(lái)執(zhí)行單個(gè)數(shù)據(jù)庫(kù)操作。盡管現(xiàn)在每個(gè)主要的數(shù)據(jù)庫(kù)供應(yīng)商都聲稱可以提供并行處理能力,但每個(gè)供應(yīng)商所提供的體系結(jié)構(gòu)其實(shí)存在關(guān)鍵的差異。
本文討論Oracle 9i并行處理的體系結(jié)構(gòu),并說(shuō)明于在實(shí)際應(yīng)用中其相對(duì)于其它體系結(jié)構(gòu)的優(yōu)越性。需要著重指出的是,Oracle9i并行處理體系結(jié)構(gòu)的主要優(yōu)點(diǎn)在于它能在任何情況下完全利用底層硬件基礎(chǔ)架構(gòu)——每個(gè)處理器單元、每個(gè)內(nèi)存字節(jié)以及所有可用的I/O帶寬。本白皮書還講述Oracle 并行處理組件與其它關(guān)鍵業(yè)務(wù)組件(例如:Oracle RealApplication Cluster)的無(wú)縫集成。
Oracle數(shù)據(jù)庫(kù)并行處理技術(shù)簡(jiǎn)介
現(xiàn)在的數(shù)據(jù)庫(kù),無(wú)論是用于數(shù)據(jù)倉(cāng)庫(kù)、操作數(shù)據(jù)存儲(chǔ)(ODS)或OLTP 系統(tǒng),都包含豐富的信息。然而,由于其中涉及海量數(shù)據(jù),及時(shí)查找和展示信息是一個(gè)巨大的挑戰(zhàn)。Oracle數(shù)據(jù)庫(kù)并行處理技術(shù)能夠解決這一挑戰(zhàn)。使用Oracle數(shù)據(jù)庫(kù)并行處理技術(shù),數(shù)分種內(nèi)(而非數(shù)小時(shí)或數(shù)天)就可以處理數(shù)TB級(jí)的數(shù)據(jù)。
Oracle數(shù)據(jù)庫(kù)并行處理技術(shù)通過(guò)利用所有可用的硬件資源取得這樣的高性能:多個(gè)CPU、多個(gè)I/O通道、多個(gè)存儲(chǔ)陣列和磁盤驅(qū)動(dòng)器,以及大量的內(nèi)存。數(shù)據(jù)庫(kù)軟件越能有效地利用所有這些資源,處理查詢和其它數(shù)據(jù)庫(kù)操作就越有效。
此外,現(xiàn)在的數(shù)據(jù)庫(kù)應(yīng)用的復(fù)雜性大大都增強(qiáng)了,不僅需要支持大量并發(fā)用戶,而且需要管理不同類型的用戶。因此,一個(gè)并行查詢體系結(jié)構(gòu)不僅應(yīng)該確保底層硬件平臺(tái)的所有資源都得到充分利用,而且應(yīng)該更進(jìn)一步,將這些資源適當(dāng)?shù)胤峙浣o多個(gè)并發(fā)請(qǐng)求。
很顯然,支持CEO的戰(zhàn)略決策的請(qǐng)求比執(zhí)行批處理報(bào)表更加重要,并行查詢體系結(jié)構(gòu)應(yīng)該能夠處理這些商務(wù)要求:不僅基于請(qǐng)求自身,而且應(yīng)該基于發(fā)出請(qǐng)求的人以及當(dāng)前可用的系統(tǒng)資源的數(shù)量來(lái)做出動(dòng)態(tài)的分配。
Oracle9i 的并行處理體系結(jié)構(gòu)能夠全面滿足這些要求,Oracle9i的體系結(jié)構(gòu)不僅提供業(yè)界領(lǐng)先的高性能,而且是唯一可以自適應(yīng)和動(dòng)態(tài)調(diào)整的。
Oracle9i 的并行處理體系結(jié)構(gòu)充分利用每種硬件投資――SMP、群集或MPP的優(yōu)勢(shì)——在任何時(shí)間保證最佳的吞吐量和連續(xù)的、優(yōu)化的系統(tǒng)使用量。
Oracle9i 數(shù)據(jù)庫(kù)根據(jù)可用資源、請(qǐng)求優(yōu)先級(jí)和實(shí)際系統(tǒng)負(fù)載控制來(lái)平衡所有并行操作。
Oracle數(shù)據(jù)庫(kù)并行處理技術(shù)并行化設(shè)計(jì)策略——靜態(tài)與動(dòng)態(tài)
并行處理的思想就是將單個(gè)任務(wù)分解為多個(gè)更小的單元。不是通過(guò)一個(gè)進(jìn)程完成所有工作,而是將任務(wù)并行化而使多個(gè)進(jìn)程同時(shí)在更小的單元上運(yùn)行。這可以極大地提高性能和最佳地利用系統(tǒng)。然而,并行處理的最關(guān)鍵部分是如何作出將單個(gè)任務(wù)分成更小的工作單元的正確決策。
典型地,有兩種方法用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的并行處理。主要區(qū)別在于是否需要進(jìn)行物理數(shù)據(jù)布局,將靜態(tài)的數(shù)據(jù)分區(qū)作為并行處理的前提。
Oracle數(shù)據(jù)庫(kù)并行處理技術(shù)之通過(guò)物理數(shù)據(jù)分區(qū)的靜態(tài)并行——不共享
在純不共享數(shù)據(jù)庫(kù)體系結(jié)構(gòu)中必須將數(shù)據(jù)庫(kù)文件在多計(jì)算機(jī)系統(tǒng)的節(jié)點(diǎn)上進(jìn)行分區(qū)才能進(jìn)行并行處理。每個(gè)節(jié)點(diǎn)擁有一個(gè)數(shù)據(jù)子集,擁有節(jié)點(diǎn)使用單一進(jìn)程或線程,以獨(dú)占方式執(zhí)行對(duì)此數(shù)據(jù)子集的所有訪問(wèn)。數(shù)據(jù)訪問(wèn)不能在分區(qū)內(nèi)并行。(有時(shí),也用術(shù)語(yǔ)“虛擬處理器”來(lái)代替節(jié)點(diǎn)。“虛擬處理器”是在SMP計(jì)算機(jī)上模擬不共享節(jié)點(diǎn)的一種機(jī)制。
為了簡(jiǎn)單,在討論不共享體系結(jié)構(gòu)時(shí),我們將統(tǒng)一使用“節(jié)點(diǎn)”作為術(shù)語(yǔ))。換句話說(shuō),純不共享系統(tǒng)使用分區(qū)或受限訪問(wèn)方法在多個(gè)處理節(jié)點(diǎn)間劃分工作。節(jié)點(diǎn)對(duì)數(shù)據(jù)所有權(quán)的改變相對(duì)少見——為了適應(yīng)業(yè)務(wù)需求的改變而進(jìn)行的數(shù)據(jù)庫(kù)重組、添加或刪除節(jié)點(diǎn)以及節(jié)點(diǎn)故障是所有權(quán)更改的典型原因。這種數(shù)據(jù)所有權(quán)的改變對(duì)純不共享系統(tǒng)而言總是意味著要進(jìn)行人工管理。
從概念上看,可以認(rèn)為純不共享系統(tǒng)與分布式數(shù)據(jù)庫(kù)非常相似。為了在某個(gè)節(jié)點(diǎn)上執(zhí)行要求的讀/寫操作,該節(jié)點(diǎn)上的事務(wù)必須將消息發(fā)送給擁有需要被訪問(wèn)的數(shù)據(jù)的其它節(jié)點(diǎn),并協(xié)調(diào)在其它節(jié)點(diǎn)上完成的工作。
將消息傳遞給其它節(jié)點(diǎn),在它們擁有的數(shù)據(jù)集上請(qǐng)求執(zhí)行特定操作(功能)稱為功能傳送。另一方面,如果從遠(yuǎn)程節(jié)點(diǎn)請(qǐng)求簡(jiǎn)單數(shù)據(jù),則必須訪問(wèn)完整的數(shù)據(jù)集并將它從擁有節(jié)點(diǎn)返回至請(qǐng)求節(jié)點(diǎn)(數(shù)據(jù)傳送)。
【編輯推薦】