Oracle 使用 PARALLEL (並行)方式成倍提升數據分析效率


說明:
在Oracle中,對於一條執行語句,會自動根據系統的CPU線程數來分配多線程查詢,但都低於總線程數,有時為了提高速度,我們就可以手動調配這些多線程進行並行執行

--查看Oracle能利用的最大並行度
show parameters cpu
select * from v$osstat where stat_name='NUM_CPUS';

--通過上邊查到總線程數是16
SELECT /*+PARALLEL(16)*/ count(*) from shenji.tb_bil_write_off_his_2017;

通過測試這樣有時比普通查詢快一些,但有時也沒快多少

--查看正在運行的並行進程
select count(*) from v$px_process a where a.STATUS='IN USE';

--查一個表時可以提速使用
select /*+ parallel(表別名,n) */ * from 表名 表別名 ;
[parallel后面的表別名也可以直接要表名,若是表名太長,就用表別名吧,n代表並行度,表示用的cpu數目,不必太大3-5就差不多了]
增刪改都是可以用的,直接在insert/delete/update后面 緊跟/*+ parallel(表別名,n)*/ 就可以了

查表數據沒感覺快,用處不大

 

--查看SGA大小
show parameter sga_max_size;
show parameter sga_target;
show parameter pga_aggregate_target;

--改SGA占內存大小
ALTER SYSTEM SET sga_max_size=40G scope=spfile;
alter system set sga_target=40G;
alter system set pga_aggregate_target=10g;


免責聲明!

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



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