powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу заставить работать хинт parallel
11 сообщений из 11, страница 1 из 1
Не могу заставить работать хинт parallel
    #40115245
alx71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Не могу заставить работать хинт parallel
    #40115246
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alx71,

Нужно еще alter session enable parallel dml
...
Рейтинг: 0 / 0
Не могу заставить работать хинт parallel
    #40115247
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parallel dml включается отдельно
...
Рейтинг: 0 / 0
Не могу заставить работать хинт parallel
    #40115249
alx71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Не могу заставить работать хинт parallel
    #40115256
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Не могу заставить работать хинт parallel
    #40115261
PuM256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alx71,

parallel_max_servers?

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

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

parallel_max_servers?



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

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


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

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


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

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


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