說明:
在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;