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