Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу заставить работать хинт parallel / 11 сообщений из 11, страница 1 из 1
26.11.2021, 13:52
    #40115245
alx71
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

Код: 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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
SQL> create table t1 (t number) PARALLEL 10;

Table created.

SQL> select degree from user_tables where table_name='T1';

DEGREE                                                                          
----------                                                                      
        10                                                                      

SQL> create table t2 (t number) PARALLEL 10;

Table created.

SQL> select degree from user_tables where table_name='T2';

DEGREE                                                                          
----------                                                                      
        10                                                                      

SQL> insert into t1(t)
  2  Select Rownum r
  3  From dual
  4  Connect By Rownum <= 100
  5  ;

100 rows created.

SQL> commit;

Commit complete.

SQL> alter session enable parallel query;

Session altered.

SQL> delete from PLAN_TABLE;

3 rows deleted.

SQL> explain plan for
  2  insert /*+ parallel(t2) parallel(t1) */ into t2(t) select t from t1;

Explained.

SQL> select * from table(dbms_xplan.display('','','+alias +outline -predicate'));

PLAN_TABLE_OUTPUT                                                               
--------------------------------------------------------------------------------
                                                                                
-----------------------------------------------------------------               
| Id  | Operation                | Name | Rows  | Bytes | Cost  |               
-----------------------------------------------------------------               
|   0 | INSERT STATEMENT         |      |   100 |  1300 |     2 |               
|   1 |  LOAD TABLE CONVENTIONAL | T2   |       |       |       |               
|   2 |   TABLE ACCESS FULL      | T1   |   100 |  1300 |     2 |               
-----------------------------------------------------------------               
                                                                                
Note                                                                            
-----                                                                           

PLAN_TABLE_OUTPUT                                                               
--------------------------------------------------------------------------------
   - 'PLAN_TABLE' is old version                                                

12 rows selected.

SQL> delete from PLAN_TABLE;

3 rows deleted.

SQL> explain plan for
  2  insert /*+ parallel(t2)  */ into t2(t) select /*+ parallel(t1) */ t from t1;

Explained.

SQL> select * from table(dbms_xplan.display('','','+alias +outline -predicate'));

PLAN_TABLE_OUTPUT                                                               
--------------------------------------------------------------------------------
                                                                                
-----------------------------------------------------------------               
| Id  | Operation                | Name | Rows  | Bytes | Cost  |               
-----------------------------------------------------------------               
|   0 | INSERT STATEMENT         |      |   100 |  1300 |     2 |               
|   1 |  LOAD TABLE CONVENTIONAL | T2   |       |       |       |               
|   2 |   TABLE ACCESS FULL      | T1   |   100 |  1300 |     2 |               
-----------------------------------------------------------------               
                                                                                
Note                                                                            
-----                                                                           

PLAN_TABLE_OUTPUT                                                               
--------------------------------------------------------------------------------
   - 'PLAN_TABLE' is old version                                                

12 rows selected.

SQL> quit



Чего не хватает?
...
Рейтинг: 0 / 0
26.11.2021, 13:54
    #40115246
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
alx71,

Нужно еще alter session enable parallel dml
...
Рейтинг: 0 / 0
26.11.2021, 13:55
    #40115247
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
parallel dml включается отдельно
...
Рейтинг: 0 / 0
26.11.2021, 13:56
    #40115249
alx71
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
Код: sql
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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
SQL> create table t1 (t number) PARALLEL 10;

Table created.

SQL> select degree from user_tables where table_name='T1';

DEGREE                                                                          
----------                                                                      
        10                                                                      

SQL> create table t2 (t number) PARALLEL 10;

Table created.

SQL> select degree from user_tables where table_name='T2';

DEGREE                                                                          
----------                                                                      
        10                                                                      

SQL> insert into t1(t)
  2  Select Rownum r
  3  From dual
  4  Connect By Rownum <= 100
  5  ;

100 rows created.

SQL> commit;

Commit complete.

SQL> alter session enable parallel query;

Session altered.

SQL> alter session enable parallel dml;

Session altered.

SQL> delete from PLAN_TABLE;

3 rows deleted.

SQL> explain plan for
  2  insert /*+ parallel(t2) parallel(t1) */ into t2(t) select t from t1;

Explained.

SQL> select * from table(dbms_xplan.display('','','+alias +outline -predicate'));

PLAN_TABLE_OUTPUT                                                               
--------------------------------------------------------------------------------
                                                                                
-----------------------------------------------------------------               
| Id  | Operation                | Name | Rows  | Bytes | Cost  |               
-----------------------------------------------------------------               
|   0 | INSERT STATEMENT         |      |   100 |  1300 |     2 |               
|   1 |  LOAD TABLE CONVENTIONAL | T2   |       |       |       |               
|   2 |   TABLE ACCESS FULL      | T1   |   100 |  1300 |     2 |               
-----------------------------------------------------------------               
                                                                                
Note                                                                            
-----                                                                           

PLAN_TABLE_OUTPUT                                                               
--------------------------------------------------------------------------------
   - 'PLAN_TABLE' is old version                                                

12 rows selected.

SQL> delete from PLAN_TABLE;

3 rows deleted.

SQL> explain plan for
  2  insert /*+ parallel(t2)  */ into t2(t) select /*+ parallel(t1) */ t from t1;

Explained.

SQL> select * from table(dbms_xplan.display('','','+alias +outline -predicate'));

PLAN_TABLE_OUTPUT                                                               
--------------------------------------------------------------------------------
                                                                                
-----------------------------------------------------------------               
| Id  | Operation                | Name | Rows  | Bytes | Cost  |               
-----------------------------------------------------------------               
|   0 | INSERT STATEMENT         |      |   100 |  1300 |     2 |               
|   1 |  LOAD TABLE CONVENTIONAL | T2   |       |       |       |               
|   2 |   TABLE ACCESS FULL      | T1   |   100 |  1300 |     2 |               
-----------------------------------------------------------------               
                                                                                
Note                                                                            
-----                                                                           

PLAN_TABLE_OUTPUT                                                               
--------------------------------------------------------------------------------
   - 'PLAN_TABLE' is old version                                                

12 rows selected.

SQL> quit



Чет не помогло...
...
Рейтинг: 0 / 0
26.11.2021, 14:11
    #40115256
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
Код: 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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
SQL> create table dropme_t1 (t number) PARALLEL 10;

Table created.

SQL> select degree from user_tables where table_name='DROPME_T1';

DEGREE
----------------------------------------
        10

SQL> create table dropme_t2 (t number) PARALLEL 10;

Table created.

SQL> select degree from user_tables where table_name='DROPME_T2';

DEGREE
----------------------------------------
        10

SQL>
SQL> insert into dropme_t1(t)
  2  Select Rownum r
  3  From dual
  4  Connect By Rownum <= 100
  5  ;

100 rows created.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> alter session enable parallel query;

Session altered.

SQL>
SQL> alter session enable parallel dml;

Session altered.

SQL>
SQL> insert into dropme_t2(t) select t from dropme_t1;

100 rows created.
SQL> select * from table(dbms_xplan.display_cursor());

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------
SQL_ID  gqv70cb3c2tuu, child number 0
-------------------------------------
insert into dropme_t2(t) select t from dropme_t1

Plan hash value: 3435070755

-----------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT                   |           |       |       |     2 (100)|          |        |      |
|   1 |  PX COORDINATOR                    |           |       |       |            |          |        |      |
|   2 |   PX SEND QC (RANDOM)              | :TQ10000  |   100 |  1300 |     2   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
|   3 |    LOAD AS SELECT (HYBRID TSM/HWMB)| DROPME_T2 |       |       |            |          |  Q1,00 | PCWP |
|   4 |     OPTIMIZER STATISTICS GATHERING |           |   100 |  1300 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |
|   5 |      PX BLOCK ITERATOR             |           |   100 |  1300 |     2   (0)| 00:00:01 |  Q1,00 | PCWC |
|*  6 |       TABLE ACCESS FULL            | DROPME_T1 |   100 |  1300 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |
-----------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   6 - access(:Z>=:Z AND :Z<=:Z)

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------

Note
-----
   - dynamic statistics used: dynamic sampling (level=2)
   - Degree of Parallelism is 10 because of table property


28 rows selected.

SQL>
...
Рейтинг: 0 / 0
26.11.2021, 14:16
    #40115261
PuM256
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
alx71,

parallel_max_servers?

P.S. На всякий случай: вы же знаете про потенциальные опасности, которые несут в себе параллельные DML?
...
Рейтинг: 0 / 0
27.11.2021, 01:14
    #40115392
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
alx71,

Дропните старый plan_table, он сейчас не нужен
...
Рейтинг: 0 / 0
29.11.2021, 06:39
    #40115774
alx71
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
PuM256
alx71,

parallel_max_servers?



Спасибо, помогло!

PuM256
alx71,P.S. На всякий случай: вы же знаете про потенциальные опасности, которые несут в себе параллельные DML?


Что можно об этом почитать?
...
Рейтинг: 0 / 0
29.11.2021, 06:40
    #40115775
alx71
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
Sayan Malakshinov
alx71,

Дропните старый plan_table, он сейчас не нужен


просто drop plan_table?
...
Рейтинг: 0 / 0
29.11.2021, 15:09
    #40115899
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
alx71,

да
...
Рейтинг: 0 / 0
29.11.2021, 16:08
    #40115924
PuM256
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу заставить работать хинт parallel
alx71

PuM256
alx71,P.S. На всякий случай: вы же знаете про потенциальные опасности, которые несут в себе параллельные DML?


Что можно об этом почитать?


https://docs.oracle.com/database/121/VLDBG/GUID-6626C70C-876C-47A4-8C01-9B66574062D8.htm#GUID-6626C70C-876C-47A4-8C01-9B66574062D8

Особенно это:
Database VLDB and Partitioning GuideAny serial or parallel statements attempting to access a table that has been modified by a parallel UPDATE, DELETE, or MERGE, or a direct-path INSERT during the same transaction are rejected with an error message.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу заставить работать хинт parallel / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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