Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / parallel DML / 17 сообщений из 17, страница 1 из 1
18.06.2013, 14:09
    #38301605
Dima DI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Столкнулся с такой задачей, в блоке PL/SQL делаю insert - select с параллельностью, но в плане вижу только select с параллельностью:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
declare
begin
execute immediate 'alter session enable parallel dml';
for c in 1..2
loop
execute immediate 'explain plan for  insert /*+ append parallel(8) */ into sys.KS_BACKUP_data1  select /*+ parallel(8) */* from sys.KS_BACKUP_A1' ;
 commit;
 end loop;
 end;

 select * from table(dbms_xplan.display);

Plan hash value: 1565196473
 
----------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                     | Name            | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |    TQ  |IN-OUT| PQ Distrib |
----------------------------------------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT              |                 |    10M|   320G|  2719   (2)| 00:00:11 |       |       |        |      |            |
|   1 |  LOAD AS SELECT               | KS_BACKUP_DATA1 |       |       |            |          |       |       |        |      |            |
|   2 |   PX COORDINATOR              |                 |       |       |            |          |       |       |        |      |            |
|   3 |    PX SEND QC (RANDOM)        | :TQ10000        |    10M|   320G|  2719   (2)| 00:00:11 |       |       |  Q1,00 | P->S | QC (RAND)  |
|   4 |     PX BLOCK ITERATOR         |                 |    10M|   320G|  2719   (2)| 00:00:11 |     1 |1048575|  Q1,00 | PCWC |            |
|   5 |      TABLE ACCESS STORAGE FULL| KS_BACKUP_A1    |    10M|   320G|  2719   (2)| 00:00:11 |     1 |1048575|  Q1,00 | PCWP |            |
----------------------------------------------------------------------------------------------------------------------------------------------
 
Note
-----
   - Degree of Parallelism is 8 because of hint



show parameter parallel :

fast_start_parallel_rollback         string   FALSE
parallel_adaptive_multi_user         boolean  FALSE
parallel_automatic_tuning            boolean  FALSE
parallel_degree_limit                string   CPU
parallel_degree_policy               string   MANUAL
parallel_execution_message_size      integer  16384
parallel_force_local                 boolean  FALSE
parallel_instance_group              string   
parallel_io_cap_enabled              boolean  FALSE
parallel_max_servers                 integer  128
parallel_min_percent                 integer  0
parallel_min_servers                 integer  0
parallel_min_time_threshold          string   AUTO
parallel_server                      boolean  TRUE
parallel_server_instances            integer  2
parallel_servers_target              integer  128
parallel_threads_per_cpu             integer  2
recovery_parallelism                 integer  0
...
Рейтинг: 0 / 0
18.06.2013, 15:17
    #38301756
Dima DI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Запуск инсерта вне begin .. end; работает что надо с параллельной вставкой ..
...
Рейтинг: 0 / 0
18.06.2013, 15:19
    #38301763
aamazur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Dima DI,

+
Код: plsql
1.
execute immediate 'alter session force parallel dml';

?
...
Рейтинг: 0 / 0
18.06.2013, 17:16
    #38302002
Dima DI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
нет не помогло ..
...
Рейтинг: 0 / 0
18.06.2013, 17:36
    #38302036
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Dima DI,
Таблица на 320Gb в схеме SYS? Или я чего-то не догнал?
...
Рейтинг: 0 / 0
18.06.2013, 18:28
    #38302132
Clipsya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
База Enterprise Edition?
...
Рейтинг: 0 / 0
18.06.2013, 19:48
    #38302244
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Dima DIЗапуск инсерта вне begin .. end; работает что надо с параллельной вставкой ..
а запустите динамически
...
Рейтинг: 0 / 0
19.06.2013, 05:18
    #38302512
bigsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
непонятно, зачем вы запускаете "explain plan for..." вместо insert? Зачем такой странный цикл - от 1 до 2х?

А вообще, так должно отработать:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare
begin
  execute immediate 'alter session force parallel dml parallel 8';
  execute immediate 'alter session force parallel query parallel 8';
  for c in 1..2
  loop
    execute immediate 'insert /*+ append */ into sys.KS_BACKUP_data1 select * from sys.KS_BACKUP_A1' ;
    commit;
  end loop;
end;
...
Рейтинг: 0 / 0
19.06.2013, 10:43
    #38302762
Dima DI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Таблица где то 1 GB, т.к. данные тестовые сделал таблицу из под SYS в ново созданном табличном пространстве.

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

bigsov
нет параллельная вставка не работает.
...
Рейтинг: 0 / 0
19.06.2013, 11:08
    #38302816
JaRo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Dima DIТаблица где то 1 GBОракл так не считает...

Dima DIт.к. данные тестовые сделал таблицу из под SYS в ново созданном табличном пространстве.Вообще-то это неправильно. И создавать в схеме SYS, и работать под SYS. Работа под SYS-ом может принести много сюрпризов, поведение под ним иногда неожиданно отличается от поведения под любым другим пользователем...

Dima DIнет параллельная вставка не работает. Вы смотрели реальный план?

То есть в begin end без динамики вы смотрите план (как именно кстати?) и видите параллель, а при запуске из SQL и при вызове из динамики не видите, так?
...
Рейтинг: 0 / 0
19.06.2013, 11:15
    #38302825
bigsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Dima DIнет параллельная вставка не работает. Restrictions on Parallel DML
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
19.09.2019, 17:43
    #39864125
mlc
mlc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
bigsov,

Столкнулся с похоже ситуацией, только у меня parallel dml не работал ни в begin end, ни без него. Эмпирически выяснил, что дело в наличии btree индекса, однако в ограничениях parallel dml не нашёл инфы об ограничениях, связанных с btree индексами. Таблица самая простая непартицированная без лобов и внешних констрейнтов.
Ткниьте носом, где в доке найти инфу об этом.
...
Рейтинг: 0 / 0
19.09.2019, 17:52
    #39864131
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
mlc,

Наверное ты хотел сказать bitmap.

restrictions on parallel dml
...
Рейтинг: 0 / 0
19.09.2019, 17:55
    #39864138
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
...
Рейтинг: 0 / 0
19.09.2019, 19:30
    #39864191
mlc
mlc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Кобанчег,

Как раз, если бы был bitmap вопроса бы не возникло. У меня на таблице именно btree
...
Рейтинг: 0 / 0
19.09.2019, 19:34
    #39864192
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
mlc,

Ну раз у дргих людей при наличии btree всё ОК, тебе не кажется что имело бы смысл привести test case в sqlplus чтоб не быть голословным?
...
Рейтинг: 0 / 0
20.09.2019, 08:59
    #39864383
mlc
mlc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
parallel DML
Кобанчег,

Пока запиливал пример, вспомнил, что тамблица не совсем простая - GTT.

Код: plsql
1.
select * from v$version;

v$version
Код: plsql
1.
2.
3.
4.
5.
6.
7.
BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0
PL/SQL Release 12.2.0.1.0 - Production                                                    0
CORE	12.2.0.1.0	Production                                                        0
TNS for Linux: Version 12.2.0.1.0 - Production                                            0
NLSRTL Version 12.2.0.1.0 - Production                                                    0


Код: plsql
1.
2.
3.
4.
5.
alter session disable parallel dml;

create global temporary table tbl_test(id number, c1 date);

explain plan for insert /*+ parallel(2) enable_parallel_dml*/ into tbl_test select level, sysdate from dual connect by level <= 100;

dbms_xplan.display
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Plan hash value: 20011431
 
-----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                             | Name     | Rows  | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT                      |          |     1 |     2   (0)| 00:00:01 |        |      |            |
|   1 |  PX COORDINATOR                       |          |       |            |          |        |      |            |
|   2 |   PX SEND QC (RANDOM)                 | :TQ10001 |     1 |     2   (0)| 00:00:01 |  Q1,01 | P->S | QC (RAND)  |
|   3 |    LOAD AS SELECT (TEMP SEGMENT MERGE)| TBL_TEST |       |            |          |  Q1,01 | PCWP |            |
|   4 |     OPTIMIZER STATISTICS GATHERING    |          |     1 |     2   (0)| 00:00:01 |  Q1,01 | PCWP |            |
|   5 |      BUFFER SORT                      |          |       |            |          |  Q1,01 | PCWC |            |
|   6 |       PX RECEIVE                      |          |     1 |     2   (0)| 00:00:01 |  Q1,01 | PCWP |            |
|   7 |        PX SEND ROUND-ROBIN            | :TQ10000 |     1 |     2   (0)| 00:00:01 |        | S->P | RND-ROBIN  |
|*  8 |         CONNECT BY WITHOUT FILTERING  |          |       |            |          |        |      |            |
|   9 |          FAST DUAL                    |          |     1 |     2   (0)| 00:00:01 |        |      |            |
-----------------------------------------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   8 - filter(LEVEL<=100)
 
Note
-----
   - Degree of Parallelism is 2 because of hint


Код: plsql
1.
2.
3.
create index tbl_test_idx on tbl_test(id);

explain plan for insert /*+ parallel(2) enable_parallel_dml*/ into tbl_test select level, sysdate from dual connect by level <= 100;

dbms_xplan.display
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Plan hash value: 1236776825
 
----------------------------------------------------------------------------------
| Id  | Operation                     | Name     | Rows  | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | INSERT STATEMENT              |          |     1 |     2   (0)| 00:00:01 |
|   1 |  LOAD TABLE CONVENTIONAL      | TBL_TEST |       |            |          |
|*  2 |   CONNECT BY WITHOUT FILTERING|          |       |            |          |
|   3 |    FAST DUAL                  |          |     1 |     2   (0)| 00:00:01 |
----------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   2 - filter(LEVEL<=100)
 
Note
-----
   - Degree of Parallelism is 1 because of hint
   - PDML disabled because temporary tables with indexes used
   - Direct Load disabled because no append hint given and not executing in parallel


Единственное ограничение, которое нашел на темповые таблицы:
https://docs.oracle.com/database/121/VLDBG/GUID-6626C70C-876C-47A4-8C01-9B66574062D8.htm Restrictions on Parallel DML
The following restrictions apply to parallel DML (including direct-path INSERT):
Parallel UPDATE, DELETE, and MERGE operations are not supported for temporary tables.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / parallel DML / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]