oracle 查看並行sql語句的並行數量和如何開並行


1、執行sql:select /*+ parallel(a,4) */ * from tf_f_user a where rownum<100000;

2、如何查看該sql語句的並行數量:

select t.sql_text,t.sql_id,s.sid from v$sql t,v$session s where t.sql_id=s.sql_id and t.sql_text like '%rownum<100000%';

執行上面sql語句發現是4條。

3、如果執行sql:select /*+ parallel(a,4) */ * from tf_f_user a where rownum<100000;

再查看sql語句的並行數量:

select t.sql_text,t.sql_id,s.sid from v$sql t,v$session s where t.sql_id=s.sql_id and t.sql_text like '%rownum<100000%';

執行上面的sql語句發現並行數量變為:40條,所以默認並行是40條(默認並行度=parallel_server_instances*cpu_count*parallel_threads_per_cpu,可以通過show parameter查詢相關的值)

4、如何開並行:

  a、select語句直接加parallel關鍵字就行了,其他如update、delete、insert語句不僅要加關鍵字,還有很多限制:

    1) 比如表必須是分區表,因為只有操作的數據是分區表時,oracle才會啟用並行操作,對於分區表,oracle會對每個分區啟用一個並行服務進程同時進行數據處理,這對於非分區的表來說是沒有意義的。

    2) 必須執行命令:alter session enable parallel dml;

  b、ddl語句也是直接加parallel關鍵字就行了。

注:

  1. 並行度的優先級從高到低為:

Hint -->Alter session Force Parallel -->表、索引上的設定(alter table t parallel 4、create index t on t(object_id) parallel 4) -->系統參數

     2.  一條sql語句中啟用兩個並行,這兩個並行相互獨立,互不干涉

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM