如何讓insert /*+ append */ 採用並行。
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都是可以並行的。
已解釋。
已用時間: 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都是可以並行的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-664136/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- insert /*+ append */ into 與insert into 的區別APP
- insert /*+ append */直接路徑插入APP
- insert 中append 用法詳解APP
- 關於insert /*+ append*/ 各種insert插入速度比較APP
- nologging和insert /*+append*/APP
- Append與Direct-Path Insert(一)APP
- Append與Direct-Path Insert(二)APP
- 直接路徑插入 -- insert /*+append*/ into [zt]APP
- 用並行查詢讓SQL Server加速執行並行SQLServer
- insert append需要注意的問題APP
- [Oracle] Append hint(insert sql) will lead a TM LOCKOracleAPPSQL
- CTAS和insert append的一個測試APP
- insert /*+ append */於report unrecoverable命令實驗。APP
- 關於insert /* append */的幾點註記APP
- [譯] 如何讓你的設計系統被廣泛採用
- Direct Path Insert與APPEND, PARALLEL的梳理與小結APPParallel
- insert語句中append提示對欄位的檢查APP
- 測試APPEND INSERT是否產生UNDO資訊的過程APP
- 採用nginx反向代理讓websocket 支援 wssNginxWeb
- 【廖雪峰python入門筆記】list新增元素_append()和insert()Python筆記APP
- EBS R12中如何讓autoconfig在多個節點並行執行並行
- Oracle NoLogging Append 方式減少批量insert的redo_sizeOracleAPP
- insert的時候使用append會不會影響到表的大小APP
- 如何用WebIDE開啟並執行CRM Fiori應用WebIDE
- goroutine的多核並行化,讓出時間片Go並行
- 如何取得Oracle並行執行的traceOracle並行
- 採用管道進行通訊的例子
- 採用job定時執行recover datafile
- 適當採用Histogram 讓Oracle達成最優Execution PlanHistogramOracle
- 用Dask並行化特徵工程!並行特徵工程
- 如何設定Storm並行度ORM並行
- JM如何改成幀級並行並行
- INSERT高階應用
- [譯] 在 Python 中,如何運用 Dask 資料進行並行資料分析Python並行
- 執行轉換時如何讓Kettle記錄錯誤並繼續執行?——記一種解決方案
- 採用直方圖改善SQL執行效能直方圖SQL
- 採用多執行緒製作動畫(轉)執行緒動畫
- 如何讓Mac的Dock僅顯示正在執行的應用程式?Mac