從概念上看,可以認(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ù)傳送)。
在不共享體系結(jié)構(gòu)下的并行處理像分布式數(shù)據(jù)庫(kù)一樣運(yùn)作。每個(gè)節(jié)點(diǎn)以獨(dú)占方式擁有其數(shù)據(jù)分區(qū)。沒有其它任何節(jié)點(diǎn)可以訪問(wèn)此數(shù)據(jù),而使節(jié)點(diǎn)成為單一的訪問(wèn)點(diǎn)和故障點(diǎn)
此方法具有一些基本缺點(diǎn),無(wú)法解決今天高端環(huán)境對(duì)可伸縮性和高可用性要求:
(1)、首先,不共享方法在用于共享一切的SMP硬件時(shí)并不是最佳的。為了獲得并行處理的益處而要求對(duì)數(shù)據(jù)進(jìn)行物理分區(qū),在共享一切的SMP系統(tǒng)中很明顯是一種人工的、過(guò)時(shí)的要求。因?yàn)樵赟MP系統(tǒng)中每個(gè)處理器都可以對(duì)所有數(shù)據(jù)進(jìn)行直接的、等同的訪問(wèn)。
(2)、其次,在不共享方法中使用嚴(yán)格的基于分區(qū)的并行處理策略,通常會(huì)導(dǎo)致不正常的資源利用。例如以下兩種情況:在沒有必要訪問(wèn)表的所有分區(qū)時(shí);或當(dāng)單一節(jié)點(diǎn)所擁有的更大的未分區(qū)表是操作的一部分時(shí)。在這些情況下,限制分區(qū)內(nèi)并行處理的緊密所有權(quán)模式,無(wú)法利用所有可用的處理能力,因而不能提供最佳的處理能力使用方案。
(3)、第三,由于具有對(duì)節(jié)點(diǎn)對(duì)應(yīng)物理數(shù)據(jù)分區(qū)的關(guān)系,不共享系統(tǒng)在適應(yīng)變化的業(yè)務(wù)需求方面一點(diǎn)都不靈活。當(dāng)業(yè)務(wù)增長(zhǎng)時(shí),無(wú)法方便地以增量方式擴(kuò)充系統(tǒng)來(lái)適應(yīng)增長(zhǎng)的業(yè)務(wù)需求?梢陨(jí)所有現(xiàn)有的節(jié)點(diǎn),保持它們對(duì)稱并避免數(shù)據(jù)重新分區(qū)。在大多數(shù)情形下,升級(jí)所有節(jié)點(diǎn)費(fèi)用太高;必須添加新節(jié)點(diǎn)并重組(進(jìn)行物理重新分區(qū))現(xiàn)有數(shù)據(jù)庫(kù)。一個(gè)不需要進(jìn)行任何重組的方案總是比必須重組的方案要更好,即使可以利用到最復(fù)雜的重組工具。
(4)、最后,由于使用嚴(yán)格的受限制的訪問(wèn)模式,不共享系統(tǒng)無(wú)法完全利用群集系統(tǒng)為保證系統(tǒng)高可靠性所提供的潛在的容錯(cuò)能力。
毫無(wú)疑問(wèn),基于使用靜態(tài)數(shù)據(jù)分布的不共享體系結(jié)構(gòu),大量的并行處理可以在實(shí)驗(yàn)室條件下并行化和擴(kuò)展。然而,在每個(gè)現(xiàn)實(shí)環(huán)境中,必須正確地解決上面談到的問(wèn)題才能滿足今天高端關(guān)鍵任務(wù)要求。
Oracle數(shù)據(jù)庫(kù)并行處理技術(shù)之執(zhí)行時(shí)的動(dòng)態(tài)并行——共享一切
使用Oracle 的動(dòng)態(tài)并行處理框架,可以共享所有數(shù)據(jù)。并行化和將工作分成更小的單元的決策,并不受限于數(shù)據(jù)庫(kù)設(shè)置(創(chuàng)建)時(shí)所做的任何預(yù)先確定的靜態(tài)數(shù)據(jù)分布。
由于能夠?yàn)槊總(gè)語(yǔ)句構(gòu)造不受限制的、優(yōu)化的數(shù)據(jù)子集,執(zhí)行時(shí)動(dòng)態(tài)并行可以提供與不共享體系結(jié)構(gòu)等同的或甚至更好的可伸縮性。
每個(gè)查詢?cè)谠L問(wèn)、連接和處理數(shù)據(jù)的不同部分時(shí)都有它自己的特征。因此,每個(gè)SQL語(yǔ)句在被解析時(shí)都要進(jìn)行優(yōu)化和并行化處理。數(shù)據(jù)更改時(shí),如果有更加優(yōu)化的并行執(zhí)行計(jì)劃可用,或者系統(tǒng)中新添加了一個(gè)節(jié)點(diǎn),那么Oracle可以自動(dòng)適應(yīng)新的情況。這樣可為并行化任何種類的操作提供最高程度的靈活性:
(1)、在語(yǔ)句執(zhí)行前,對(duì)于每個(gè)查詢要求,會(huì)動(dòng)態(tài)地優(yōu)化并行訪問(wèn)的物理數(shù)據(jù)子集。
(2)、對(duì)于每個(gè)查詢,都會(huì)優(yōu)化其并行度。與不共享環(huán)境不同,不存在必需的最小并行度來(lái)調(diào)用所有節(jié)點(diǎn)訪問(wèn)所有數(shù)據(jù),這是訪問(wèn)所有數(shù)據(jù)的基礎(chǔ)要求。
(3)、操作可以根據(jù)當(dāng)前工作負(fù)載、特征和查詢的重要性,使用一個(gè)、一些或全部Real Application Cluster 節(jié)點(diǎn)并行運(yùn)行。
只要語(yǔ)句得到優(yōu)化和并行化,就可以知道所有后續(xù)的并行子任務(wù)。原始進(jìn)程變?yōu)椴樵儏f(xié)調(diào)器;并行處理服務(wù)器(PX 服務(wù)器)從一個(gè)或多個(gè)節(jié)點(diǎn)上的并行處理服務(wù)器的公用緩沖池得到分配,并開始并行執(zhí)行該操作。
與不共享體系結(jié)構(gòu)相似,共享一切體系結(jié)構(gòu)中的每個(gè)并行處理服務(wù)器在其個(gè)人數(shù)據(jù)子集上獨(dú)立工作。數(shù)據(jù)或功能在并行進(jìn)程之間的傳送機(jī)制也與上述的不共享體系結(jié)構(gòu)相似或者相同。確定請(qǐng)求的并行計(jì)劃之后,每個(gè)并行處理服務(wù)器都知道其數(shù)據(jù)集和任務(wù),而進(jìn)程間通信就像在不共享環(huán)境中一樣很少。
本新聞共
3頁(yè),當(dāng)前在第
2頁(yè)
1 2 3