資源描述:
《oracle的parallel并行技術(shù)案例詳解》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、oracle的Parallel并行技術(shù)對于一個大的任務(wù),一般的做法是利用一個進(jìn)程,串行的執(zhí)行,如果系統(tǒng)資源足夠,可以采用parallel技術(shù),把一個大的任務(wù)分成若干個小的任務(wù),同時啟用n個進(jìn)程/線程,并行的處理這些小的任務(wù),這些并發(fā)的進(jìn)程稱為并行執(zhí)行服務(wù)器(parallelexecuteion?server),這些并發(fā)進(jìn)程由一個稱為并發(fā)協(xié)調(diào)進(jìn)程的進(jìn)程來管理。啟用Parallel前的忠告:只有在需要處理一個很大的任務(wù),如需要幾十分鐘,幾個小時的作業(yè)中,并且要有足夠的系統(tǒng)資源的情況下(這些資源包括cpu,內(nèi)
2、存,io),您才應(yīng)該考慮使用parallel。否則,在一個多并發(fā)用戶下,系統(tǒng)本身資源負(fù)擔(dān)已經(jīng)很大的情況下,啟用parallel,將會導(dǎo)致某一個會話試圖占用了所有的資源,其他會話不得不去等待,從而導(dǎo)致系統(tǒng)系能反而下降的情況,一般情況下,oltp系統(tǒng)不要使用parallel,oltp系統(tǒng)中可以考慮去使用。?Parallel分類l并行查詢parallelqueryl并行dmlparalleldmlpdmll并行ddlparallelddlpddl?一、并行查詢并行查詢允許將一個sql?select語句劃分為多
3、個較小的查詢,每個部分的查詢并發(fā)地運(yùn)行,然后將各個部分的結(jié)果組合起來,提供最終的結(jié)果,多用于全表掃描,索引全掃描等,大表的掃描和連接、創(chuàng)建大的索引、分區(qū)索引掃描、大批量插入更新和刪除?1.啟用并行查詢SQL>ALTERTABLET1PARALLEL;告知oracle,對T1啟用parallel查詢,但并行度要參照系統(tǒng)的資源負(fù)載狀況來確定。利用hints提示,啟用并行,同時也可以告知明確的并行度,否則oracle自行決定啟用的并行度,這些提示只對該sql語句有效。SQL>select/*+parallel
4、(t18)*/count(*)fromt1;?SQL>selectdegreefromuser_tables?where?table_name='T1';DEGREE--------------------??DEFAULT?并行度為Default,其值由下面2個參數(shù)決定SQL>showparametercpu?NAME????????????????????????????????TYPE???????VALUE---------------------------------------------
5、--------------------------------cpu_count???????????????????????????integer????2parallel_threads_per_cpu????????????integer????2?cpu_count表示cpu數(shù)parallel_threads_per_cpu表示每個cpu允許的并行進(jìn)程數(shù)default情況下,并行數(shù)為cpu_count*parallel_threads_per_cpu?1.取消并行設(shè)置SQL>altertabl
6、et1noparallel;SQL>selectdegreefromuser_tableswheretable_name='T1';?DEGREE----------------------------------------????????1?2.數(shù)據(jù)字典視圖v$px_sessionsid:各個并行會話的sidqcsid:querycoordinatorsid,查詢協(xié)調(diào)器sid?一、并行dml并行dml包括insert,update,delete,merge,在pdml期間,oracle可以使用多個并
7、行執(zhí)行服務(wù)器來執(zhí)行insert,update,delete,merge,多個會話同時執(zhí)行,同時每個會話(并發(fā)進(jìn)程)都有自己的undo段,都是獨(dú)立的一個事務(wù),這些事務(wù)要么由pdml協(xié)調(diào)器進(jìn)程提交,要么都rollback。在一個有充足I/o帶寬的多cpu主機(jī)中,對于大規(guī)模的dml,速度可能會有很大的提升,尤其是在大型的數(shù)據(jù)倉庫環(huán)境中。并行dml需要顯示的啟用SQL>altersessionenableparalleldml;?Disable并行dmlSQL>altersessiondisableparall
8、eldml;?二、并行ddl并行ddl提供了dba使用全部機(jī)器資源的能力,常用的pddl有createtableasselect?……createindexalterindexrebuildaltertablemovealtertablesplit在這些sql語句后面加上parallel子句例SQL>altertablet1moveparallel;TablealteredSQL>createindexT1_IDXonT1(OWNER,OB