问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何让insert /*+ append */ 采用并行

发布网友 发布时间:2022-10-13 20:38

我来回答

3个回答

热心网友 时间:2023-11-12 06:45

这是提示符的一种,在一般语法的固定位置加上就可以了,不加,也不影响原有语句的执行。

SQL code?
insert /*+ append */ into table1 values (a,b,c) select a,b,c from table2;commit;

热心网友 时间:2023-11-12 06:45

SQL> explain plan for insert /*+ append  parallel(my 2) */ into my select * from ac01;

已解释。

已用时间:  00: 00: 00.16
SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------
--------
Plan hash value: 2164050840

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | INSERT STATEMENT   |      |  1902K|   335M| 14813  (20)| 00:02:58 |
|   1 |  LOAD AS SELECT    | MY   |       |       |            |          |
|   2 |   TABLE ACCESS FULL| AC01 |  1902K|   335M| 14813  (20)| 00:02:58 |
---------------------------------------------------------------------------

已选择9行。

已用时间:  00: 00: 01.77



貌似insert部分,不能使用并行。select 部分是可以并行的。
SQL> explain plan for insert /*+ append */ into my select /*+ parallel(ac01 2) */ * from ac01;
已解释。
已用时间:  00: 00: 00.11
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------------------------------
--------
Plan hash value: 2135288090
---------------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
---------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT      |          |  1902K|   335M|  8068  (18)| 00:01:37 |        |      |         |
|   1 |  LOAD AS SELECT       | MY       |       |       |            |          |        |      |         |
|   2 |   PX COORDINATOR      |          |       |       |            |          |        |      |         |
|   3 |    PX SEND QC (RANDOM)| :TQ10000 |  1902K|   335M|  8068  (18)| 00:01:37 |  Q1,00 | P->S | QC (RAND)  |
|   4 |     PX BLOCK ITERATOR |          |  1902K|   335M|  8068  (18)| 00:01:37 |  Q1,00 | PCWC |         |
|   5 |      TABLE ACCESS FULL| AC01     |  1902K|   335M|  8068  (18)| 00:01:37 |  Q1,00 | PCWP |         |
---------------------------------------------------------------------------------------------------------------
已选择12行。
已用时间:  00: 00: 00.64




和书里(Troubleshooting Oracle Performance)所说的不一样:
Execute the SQL statement in parallel. Note that in this case, both the INSERT and the
SELECT can be parallelized independently. To take advantage of direct-path inserts, at
least the INSERT part must be parallelized.

书里说,insert 和select都是可以并行的。

热心网友 时间:2023-11-12 06:46

1.append和并行同时使用时注意:
alter session enable parallel DML;
ALTER SESSION SET db_file_multiblock_read_count=128;
INSERT /+append parallel(b 2)/
并行:两个并行包括三个进程,有一个进程是负责调度的。
2.并行度
并行度与CPU和当前的负载有关
—cmd下执行
SQL> set autot trace
—-开并行的时候,Oracle会分配一组或两组Slave Set
–并行度4指的是Slave Set中的从属进程的数量。
SQL> select /+ parallel(t1,4) / * from t1 order by 1;
并行度是4,很有可能开八个进程。一组用来生产数据(select),一组用来消费数据(order by)
测试结果:
SQL> select * from v$pq_slave;
SLAVE_NAME STATUS SESSIONS IDLE_TIME_CUR BUSY_TIME_CUR CPU_SECS_CUR MSGS_SENT_CUR MSGS_RCVD_CUR IDLE_TIME_TOTAL BUSY_TIME_TOTAL CPU_SECS_TOTAL MSGS_SENT_TOTAL MSGS_RCVD_TOTAL
P000 IDLE 3 2 0 0 0 0 3 0 0 46 64
P001 IDLE 3 2 0 0 0 0 3 0 0 128 168
P002 IDLE 3 2 0 0 0 0 3 0 0 44 63
P003 IDLE 2 2 0 0 0 0 3 0 0 1242 1241
P004 IDLE 2 2 0 0 0 0 3 0 0 364 32
P005 IDLE 2 2 0 0 0 0 3 0 0 322 29
P006 IDLE 2 2 0 0 0 0 3 0 0 434 37
P007 IDLE 2 2 0 0 0 0 3 0 0 419 36
8 rows selected
—–IDLE是空闲状态,BUSY是忙碌状态,PMON进程会每隔一个时间去检查,如果发现是IDLE状态,就将进程关闭
SQL> select * from v$pq_slave;
SLAVE_NAME STATUS SESSIONS IDLE_TIME_CUR BUSY_TIME_CUR CPU_SECS_CUR MSGS_SENT_CUR MSGS_RCVD_CUR IDLE_TIME_TOTAL BUSY_TIME_TOTAL CPU_SECS_TOTAL MSGS_SENT_TOTAL MSGS_RCVD_TOTAL
开4个进程的测试结果:
—-cmd下执行
SQL> set autot trace
SQL> select /+ parallel(t1,4) / * from t1;
—-PLSQL DEV
SQL> select * from v$pq_slave;
SLAVE_NAME STATUS SESSIONS IDLE_TIME_CUR BUSY_TIME_CUR CPU_SECS_CUR MSGS_SENT_CUR MSGS_RCVD_CUR IDLE_TIME_TOTAL BUSY_TIME_TOTAL CPU_SECS_TOTAL MSGS_SENT_TOTAL MSGS_RCVD_TOTAL
P000 BUSY 4 0 0 0 173 13 0 0 0 219 77
P001 BUSY 4 0 0 0 187 14 0 0 0 315 182
P002 BUSY 4 0 0 0 176 13 0 0 0 220 76
P003 BUSY 3 0 0 0 174 13 0 0 0 1416 1254
SQL> select * from v$pq_slave;
SLAVE_NAME STATUS SESSIONS IDLE_TIME_CUR BUSY_TIME_CUR CPU_SECS_CUR MSGS_SENT_CUR MSGS_RCVD_CUR IDLE_TIME_TOTAL BUSY_TIME_TOTAL CPU_SECS_TOTAL MSGS_SENT_TOTAL MSGS_RCVD_TOTAL
P000 IDLE 4 0 0 0 0 0 0 0 0 226 78
P001 IDLE 4 0 0 0 0 0 0 0 0 322 183
P002 IDLE 4 0 0 0 0 0 0 0 0 238 78
P003 IDLE 3 0 0 0 0 0 0 0 0 1430 1256
select /+ parallel(t1,4) / object_id,count(*) from t1 group by object_id;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
对自己的前途怎么看? 开封哪里卖台球桌 范县新区哪里有卖麻将的 如何访问soutong防屏蔽网站 如何查看被屏蔽的属性? 商南有建设银行是真的吗? 输尿管结石能用体外碎石吗 输尿管体外碎石可进行几次 输尿管中段结石可以体外碎石吗 女人梦见大便是吉兆发财 vfp中的append,insert命令的区别是什么 delphi中的 insert 语句和 append 语句有什么区别? append与insert的问题 insert 和 append 有啥区别? append与insert的区别 观察中的发现作文300字 丙酮干什么的? 2022年高考专科什么时候填报志愿 蚕卵为什么一半白一半黑呢?是要变成蚕了吗? 小蚕卵出开始蚕的生长变化的情况 夏季蚕卵变蚕了该怎么办 梦到蚕卵跑到我的头上 朱自清是什么家? 母亲删除与失踪男子暧昧记录,儿子鞋上的血迹竟藏杀人命案,结果怎样? 1975年,日本东京一学校的实验室内发生了一起蹊跷的命案,一名老师被发现死在了实验室里,尸体不知去向。 师范生暑假做家教社会实践报告3000字 幼儿园大班交通安全主题班会教案 大学生传统文化话剧剧本 教师节手抄报里的字 QQ头像右下角的那个小太阳是怎么弄的啊? insert into与append有什么区别? 炎热的夏季简约才是王道,有哪些经典不会过时的简约搭配推荐呢? 纹身纹什么样的图案永远不会过时 丙酮洗液是干什么用的 反比例函数y=k/x(k不等于0)的定义域,对应关系和值域各是什么? 小学五年级数学题,用方程解,共5道题,越快越好 哆啦a梦新番不承认七小子吗? 冠冕唐皇的结局很毒吗 北瓜是西葫芦吗 为什么哆啦A梦非常出名,而哆啦A梦七小子却不怎么出名呢 哆啦王,哆啦美,出木衫与帕瓦A梦谁更优秀 新买的电脑,是win8系统,怎么拨号上网? 哆啦A梦七小子为什么停止创作? 芜湖市最好吃的牛肉面在哪啊?求大神帮助 芜湖市最好吃的牛肉面在哪啊? 芜糊有个叫老面馆的面味道非常好 请问一下哪里有交的 提醒一句在刚过芜湖大桥下有家面馆味道特好 谢谢谢。 网上在线银行信用卡申请技巧 叶绿素的提纯中丙酮是干什么的? 福建诺亚方舟投资集团和福建方舟投资集团是同一个公司吗? 小学生在水库溺水死亡能得到政府赔赏吗?