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