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;

posted @ 2021-02-06 18:40  莫让年华付水流  阅读(1814)  评论(0编辑  收藏  举报