Parallel 並行技術
對於一個大的任務,一般的做法是利用一個程式,序列的執行,如果系統資源足夠,可以採用parallel技術,把一個大的任務分成若干個小的任務,同時啟用n個程式/執行緒,並行的處理這些小的任務,這些併發的程式稱為並行執行伺服器(parallel executeion ),這些併發程式由一個稱為併發協調程式的程式來管理。
啟用Parallel前的忠告:只有在需要處理一個很大的任務,如需要幾十分鐘,幾個小時的作業中,並且要有足夠的系統資源的情況下(這些資源包括cpu,記憶體,io),您才應該考慮使用parallel。否則,在一個多併發使用者下,系統本身資源負擔已經很大的情況下,啟用parallel,將會導致某一個會話試圖佔用了所有的資源,其他會話不得不去等待,從而導致系統系能反而下降的情況,一般情況下,oltp系統不要使用parallel,oltp系統中可以考慮去使用。
Parallel分類
l 並行查詢parallel query
l 並行dml parallel dml pdml
l 並行ddl parallel ddl pddl
l 並行查詢
並行查詢允許將一個 select語句劃分為多個較小的查詢,每個部分的查詢併發地執行,然後將各個部分的結果組合起來,提供最終的結果,多用於全表掃描,索引全掃描等,大表的掃描和連線、建立大的索引、分割槽索引掃描、大批次插入更新和刪除
啟用並行查詢
SQL> ALTER TABLE T1 PARALLEL;
告知,對T1啟用parallel查詢,但並行度要參照系統的資源負載狀況來確定。
利用hints提示,啟用並行,同時也可以告知明確的並行度,否則oracle自行決定啟用的並行度,這些提示只對該sql語句有效。
SQL> select /*+ parallel(t1 8) */ count(*) from t1;
SQL> select degree from user_tables table_name='T1';
DEGREE
--------------------
DEFAULT
並行度為Default,其值由下面2個引數決定
SQL> show parameter cpu
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cpu_count integer 2
parallel_threads_per_cpu integer 2
cpu_count表示cpu數
parallel_threads_per_cpu表示每個cpu允許的並行程式數
default情況下,並行數為cpu_count*parallel_threads_per_cpu
取消並行設定
SQL> alter table t1 noparallel;
SQL> select degree from user_tables where table_name='T1';
DEGREE
----------------------------------------
1
資料字典檢視
v$px_session
sid:各個並行會話的sid
qcsid:query coordinator sid,查詢協調器sid
l 並行dml
並行dml包括insert,update,delete,merge,在pdml期間,oracle可以使用多個並行執行伺服器來執行insert,update,delete,merge,多個會話同時執行,同時每個會話(併發程式)都有自己的undo段,都是獨立的一個事務,這些事務要麼由pdml協調器程式提交,要麼都rollback。
在一個有充足I/o頻寬的多cpu主機中,對於大規模的dml,速度可能會有很大的提升,尤其是在大型的資料倉儲環境中。
並行dml需要顯示的啟用
SQL> alter session enable parallel dml;
Disable並行dml
SQL> alter session disable parallel dml;
l 並行ddl
並行ddl提供了dba使用全部機器資源的能力,常用的pddl有
create table as select ……
create index
alter index rebuild
alter table move
alter table split
在這些sql語句後面加上parallel子句
例
SQL> alter table t1 move parallel;
Table altered
SQL> create index T1_IDX on T1 (OWNER, OBJECT_TYPE)
2 tablespace SYSTEM
3 parallel;
4 ;
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9533994/viewspace-1020430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle的Parallel 並行技術OracleParallel並行
- 並行(Parallel)並行Parallel
- oracle Parallel技術OracleParallel
- Oracle並行操作——並行查詢(Parallel Query)Oracle並行Parallel
- oracle parallel並行_引數parameter_parallel_max_serverOracleParallel並行Server
- 並行閘道器 Parallel Gateway並行ParallelGateway
- 並行處理 Parallel Processing並行Parallel
- MYSQL並行複製(parallel replication部署篇)MySql並行Parallel
- fast_start_parallel_rollback和並行rollbackASTParallel並行
- oracle parallel並行及px檢視viewOracleParallel並行View
- EXPDP/IMPDP 中的並行度PARALLEL引數並行Parallel
- Oracle資料庫並行機制Parallel ExecutionOracle資料庫並行Parallel
- dbms_mview 並行重新整理 refresh parallelView並行Parallel
- ORACLE ORA-00020與parallel並行OracleParallel並行
- 【oracle】使用DBMS_PARALLEL_EXECUTE並行更新表OracleParallel並行
- alter session enable parallel dml 使DML語句並行執行SessionParallel並行
- 使用dbms_parallel_execute來完成DML的並行Parallel並行
- Parallel Query Tuning(並行化查詢優化)Parallel並行優化
- TDSQL-C 並行查詢技術探索SQL並行
- 使用11g dbms_parallel_execute執行並行更新(下)Parallel並行
- 使用11g dbms_parallel_execute執行並行更新(上)Parallel並行
- ORACLE 並行(PARALLEL)實現方式及優先順序Oracle並行Parallel
- parallel: 一個簡單的並行執行Go迴圈的庫Parallel並行Go
- parallel並行度的相關操作、概念、引數解釋Parallel並行
- 雲技術是軟體技術,並非硬體技術
- 11G R2中的並行執行,dbms_parallel_execute並行Parallel
- 8.0新特性-並行查詢innodb_parallel_read_threads並行Parallelthread
- C#並行Parallel程式設計模型實戰技巧手冊C#並行Parallel程式設計模型
- 分散式混合並行訓練關鍵技術解讀分散式並行
- 並行執行 Job - 每天5分鐘玩轉 Docker 容器技術(134)並行Docker
- MySQL 8.0新特性-並行查詢innodb_parallel_read_threadsMySql並行Parallelthread
- oracle10g parallel execution並行執行與大池large pool使用之四OracleParallel並行
- 多核時代 .NET Framework 4 中的並行程式設計5---並行迴圈Parallel LoopFramework並行行程程式設計ParallelOOP
- PostgreSQL技術大講堂 - 第33講:並行查詢管理SQL並行
- DBMS_PARALLEL_EXECUTE 11GR2新特性,並行訂正大資料Parallel並行大資料
- 不為人知的技術--Oracle並行非同步執行儲存過程Oracle並行非同步儲存過程
- Oracle11.2新特性之使用DBMS_PARALLEL_EXECUTE包實現並行OracleParallel並行
- C#並行程式設計:Parallel的使用C#並行行程程式設計Parallel