ORACLE 的並行執行

2021-06-05 10:52:09 字數 986 閱讀 5380

1.並行查詢

例如:select count(*) from big_table;

未設定並行查詢時,這個查詢是典型的序列查詢,不設計並行化,可以用:select * from big_table(dbms_xplan.display);

檢視一下執行計畫。

啟用並行查詢方法多種,可直接在查詢中使用乙個提示,或者修改表,要求考慮並行執行路徑(在此,我會使用後一種)。

可以具體指定這個表的執行路徑中要考慮的並行度,如,可以告訴oracle:"我希望你在建立該錶的執行計畫時使用並行度4":

alter table big_table parallel 4;

但,我更喜歡告訴oracle:「請考慮並行執行,但你要根據當前的系統工作負荷和查詢本身來確定適當的並行度」。就是說,並行度要隨著系統上工作負荷的增減而變化。如果有充分的空閒資源,並行度就會上公升;如果可用資源有限,並行度就會下降。這樣就避免為機器強加乙個固定的並行度。利用這種方法,允許oracle動態地增加或減少查詢鎖徐的併發資源量。

因此,可以修改該錶的並行查詢為:

alter table big_table parallel;

要記住並行查詢要保證兩個前提:

(1)你需要執行乙個大任務,如,乙個長時間執行的查詢,這個查詢是以分鐘,小時或天為單位,而不是秒或次秒。這就是說,並行查詢不能作為oltp系統的解決方案,因為在oltp系統中你不會首席執行官時間執行的任務。這些系統中啟用並行執行通常是災難性的。

(2)你需要有充足的空閒資源,如,cpu,i/o和記憶體。如果缺少任何一種資源,並行查詢可能會過度使用資源,這就會負面的影響總體效能和執行時間。

過去,對於許多資料倉儲來說,人民總認為必須應用並行查詢,這是因為過去資料倉儲很稀少,通常只是乙個很小,很集中的使用者群。而,現在,到處都有資料倉儲,且資料倉儲的使用者群和事務性系統的使用者群同樣龐大。這說明,在給定時刻,你可能沒有足夠的空閒資源來啟用這些系統上的並行查詢。但這並不能說明並行執行通常沒有用,而是說,並行執行更應該是乙個dba工具,而不是乙個並行查詢工具。

Oracle並行執行簡介

一.概念介紹 並行執行,就是將乙個大型序列任務物理地劃分為多個較小的部分,這些較小的部分可以同時進行處理。這就好比蓋房子,有一些事情可以同時進行,比如 鋪設管線和電路配線可以同時進行。盡量讓能同時進行的事情同時處理,能夠大大提高整個任務的執行速度。二.並行執行使用場景 並行執行並不是萬能藥,有時候並...

AsyncTask並行執行

使用asynctask時發現乙個奇怪的現象,即建立多個任務的時候,他是乙個乙個按順序執行的,查資料之後發現 在1.5中初始引入的時候,asynctask 執行 asynctask.execute 起來是順序的,當同時執行多個 asynctask的時候,他們會按照順序乙個乙個執行。前面乙個執行完才會執...

非同步函式的序列執行和並行執行

對於非同步函式的序列和並行執行如果處理不好會出現js的 地獄,在這方面async.js是乙個不錯的解決方案,有時為了縮小 體積自己diy乙個 序列執行arr中的函式 var series function arr,callback else process 並行執行arr中的函式 var paral...