powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / parallel DML
17 сообщений из 17, страница 1 из 1
parallel DML
    #38301605
Dima DI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с такой задачей, в блоке 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
parallel DML
    #38301756
Dima DI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запуск инсерта вне begin .. end; работает что надо с параллельной вставкой ..
...
Рейтинг: 0 / 0
parallel DML
    #38301763
Фотография aamazur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima DI,

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

?
...
Рейтинг: 0 / 0
parallel DML
    #38302002
Dima DI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет не помогло ..
...
Рейтинг: 0 / 0
parallel DML
    #38302036
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima DI,
Таблица на 320Gb в схеме SYS? Или я чего-то не догнал?
...
Рейтинг: 0 / 0
parallel DML
    #38302132
Clipsya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База Enterprise Edition?
...
Рейтинг: 0 / 0
parallel DML
    #38302244
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima DIЗапуск инсерта вне begin .. end; работает что надо с параллельной вставкой ..
а запустите динамически
...
Рейтинг: 0 / 0
parallel DML
    #38302512
bigsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непонятно, зачем вы запускаете "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
parallel DML
    #38302762
Dima DI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица где то 1 GB, т.к. данные тестовые сделал таблицу из под SYS в ново созданном табличном пространстве.

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

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

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

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

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

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

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

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

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

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

Пока запиливал пример, вспомнил, что тамблица не совсем простая - 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
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / parallel DML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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