Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 вопрос по PARALLEL  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
Хотела распаралелить селект, но если просто добавить хинт PARALLEL, то селект не распаралеливается. Правильно ли я понимаю, что для того, чтобы распаралеливать нужно, чтобы таблица была Partitioned?
20 дек 11, 16:38    [11798157]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Hel975
Хотела распаралелить селект, но если просто добавить хинт PARALLEL, то селект не распаралеливается. Правильно ли я понимаю, что для того, чтобы распаралеливать нужно, чтобы таблица была Partitioned?

нет, не правильно.
20 дек 11, 16:53    [11798327]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
orawish
Hel975
Хотела распаралелить селект, но если просто добавить хинт PARALLEL, то селект не распаралеливается. Правильно ли я понимаю, что для того, чтобы распаралеливать нужно, чтобы таблица была Partitioned?

нет, не правильно.


А как правильно?
20 дек 11, 16:54    [11798344]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Hel975
orawish
пропущено...

нет, не правильно.


А как правильно?

а как правильно - в документации написано.
вы хотя бы запрос с планом привели, а то и говорить не о чем
20 дек 11, 16:57    [11798375]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
Hel975
orawish
пропущено...

нет, не правильно.


А как правильно?
Для начала надо, чтоб редакция Oracle была enterprise. Feature Availability by Edition
Потом надо почитать собственно про PARALLEL Hint.
Потом надо ознакомися с parallel_clause и где оно может быть.
Косвенно увидеть без плана, что таблица читается в несколько потоком можно увидеть примерно так 10205417. Но гарантии наличия/отсутствия параллельности это не дает.
20 дек 11, 17:13    [11798522]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
Запрос такой:
select  /*+ PARALLEL(a1,4) */
            a1.id
from IBS.Z#ANALYTIC_CODE a1
where a1.COLLECTION_ID=:plp$29$1
  and (a1.C_USE = 1 and ( exists (
                                        select  1 A$1
                                        from IBS.Z#ACC_PATTERN b1
                                        where b1.COLLECTION_ID=a1.C_PATT_NORMAL
                                            and (((:plp$29$2 like b1.C_PATTERN||'%') and b1.C_PRODUCT = :RPATT3) 
                                                    and exists (
                                                                    select  1 A$1
                                                                    from IBS.Z#ACC_PATTERN c1
                                                                    where c1.COLLECTION_ID=a1.C_PATT_NORMAL
                                                                      and (b1.COLLECTION_ID = c1.COLLECTION_ID and c1.C_PRODUCT = :RPATT6 and c1.C_PATTERN = :P_DOP)
                                                                                ))
                                                                            )) 
                                            and ( exists (
                                                        select  1 A$1
                                                        from IBS.Z#ACC_PATTERN d1
                                                        where d1.COLLECTION_ID=a1.C_ACC_PATT_CORR
                                                          and (((:plp$29$3 like d1.C_PATTERN||'%') and d1.C_PRODUCT = :RPATT3))
                                                    )));


План:
1 One or more rows were retrieved using index IBS.Z#IX_Z#ANALYTIC_CODE_COLL . The index was scanned in ascending order..
2 Rows from table IBS.Z#ANALYTIC_CODE were accessed using rowid got from an index.
3 One or more rows were retrieved using index IBS.IDX_Z#ACC_PATTERN_COLL_PATT . The index was scanned in ascending order..
4 Rows from table IBS.Z#ACC_PATTERN were accessed using rowid got from an index.
5 For each row returned by step 2 get the matching row from step 4 If there are not matching rows from step 4 return nulls for those columns.
6 One or more rows were retrieved using index IBS.IDX_Z#ACC_PATTERN_COLL_PATT . The index was scanned in ascending order..
7 Rows from table IBS.Z#ACC_PATTERN were accessed using rowid got from an index.
8 One or more rows were retrieved using index IBS.IDX_Z#ACC_PATTERN_COLL_PATT . The index was scanned in ascending order..
9 For each row retrieved by step 7, the operation in step 8 was performed to find a matching row.
10 Rows from table IBS.Z#ACC_PATTERN were accessed using rowid got from an index.
11 For the rows returned by step 5, filter out rows depending on filter criteria.
12 Rows were returned by the SELECT statement.
20 дек 11, 17:46    [11798840]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
Hel975
План:
1 One or more rows were retrieved using index IBS.Z#IX_Z#ANALYTIC_CODE_COLL . The index was scanned in ascending order..
2 Rows from table IBS.Z#ANALYTIC_CODE were accessed using rowid got from an index.
3 One or more rows were retrieved using index IBS.IDX_Z#ACC_PATTERN_COLL_PATT . The index was scanned in ascending order..
4 Rows from table IBS.Z#ACC_PATTERN were accessed using rowid got from an index.
5 For each row returned by step 2 get the matching row from step 4 If there are not matching rows from step 4 return nulls for those columns.
6 One or more rows were retrieved using index IBS.IDX_Z#ACC_PATTERN_COLL_PATT . The index was scanned in ascending order..
7 Rows from table IBS.Z#ACC_PATTERN were accessed using rowid got from an index.
8 One or more rows were retrieved using index IBS.IDX_Z#ACC_PATTERN_COLL_PATT . The index was scanned in ascending order..
9 For each row retrieved by step 7, the operation in step 8 was performed to find a matching row.
10 Rows from table IBS.Z#ACC_PATTERN were accessed using rowid got from an index.
11 For the rows returned by step 5, filter out rows depending on filter criteria.
12 Rows were returned by the SELECT statement.

Мощно задвинул!
Ты так с любым планом сможешь?
20 дек 11, 20:12    [11799604]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
брадобрей,

Не поняла юмора. План из toad взяла.
22 дек 11, 13:07    [11808627]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Hel975
брадобрей,

Не поняла юмора. План из toad взяла.

И как он вам его читабельность ?
22 дек 11, 13:15    [11808725]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
pravednik,

Я обычно пользуюсь display mode MS Graphic, но как его копировать сюда не понятно.
22 дек 11, 14:08    [11809251]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
Hel975
pravednik,

Я обычно пользуюсь display mode MS Graphic, но как его копировать сюда не понятно.

откройте для себя
explain plan for ...
+
select from table(dbms_xplan.display);
22 дек 11, 14:09    [11809265]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
| Id  | Operation                      | Name                        | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 51 | 4 (0)| 00:00:01 |
|* 1 | FILTER | | | | | |
| 2 | NESTED LOOPS SEMI | | 1 | 51 | 2 (0)| 00:00:01 |
|* 3 | TABLE ACCESS BY INDEX ROWID | Z#ANALYTIC_CODE | 1 | 29 | 1 (0)| 00:00:01 |
|* 4 | INDEX RANGE SCAN | Z#IX_Z#ANALYTIC_CODE_COLL | 1 | | 1 (0)| 00:00:01 |
|* 5 | TABLE ACCESS BY INDEX ROWID | Z#ACC_PATTERN | 19 | 418 | 1 (0)| 00:00:01 |
|* 6 | INDEX RANGE SCAN | IDX_Z#ACC_PATTERN_COLL_PATT | 1 | | 1 (0)| 00:00:01 |
|* 7 | TABLE ACCESS BY INDEX ROWID | Z#ACC_PATTERN | 1 | 22 | 1 (0)| 00:00:01 |
| 8 | NESTED LOOPS | | 1 | 44 | 2 (0)| 00:00:01 |
|* 9 | TABLE ACCESS BY INDEX ROWID| Z#ACC_PATTERN | 1 | 22 | 1 (0)| 00:00:01 |
|* 10 | INDEX RANGE SCAN | IDX_Z#ACC_PATTERN_COLL_PATT | 1 | | 1 (0)| 00:00:01 |
|* 11 | INDEX RANGE SCAN | IDX_Z#ACC_PATTERN_COLL_PATT | 1 | | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------------------

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

1 - filter( EXISTS (SELECT /*+ */ 0 FROM "IBS"."Z#ACC_PATTERN" "B1","IBS"."Z#ACC_PATTERN" "C1"
WHERE "C1"."C_PATTERN"=:P_DOP AND "B1"."COLLECTION_ID"="C1"."COLLECTION_ID" AND
"C1"."C_PRODUCT"=TO_NUMBER(:RPATT6) AND "C1"."COLLECTION_ID"=:B1 AND "B1"."COLLECTION_ID"=:B2 AND
"B1"."C_PRODUCT"=TO_NUMBER(:RPATT3) AND :PLP$29$2 LIKE "B1"."C_PATTERN"||'%'))
3 - filter(TO_NUMBER("A1"."C_USE")=1)
4 - access("A1"."COLLECTION_ID"=TO_NUMBER(:PLP$29$1))
5 - filter("D1"."C_PRODUCT"=TO_NUMBER(:RPATT3))
6 - access("D1"."COLLECTION_ID"="A1"."C_ACC_PATT_CORR")
filter(:PLP$29$3 LIKE "D1"."C_PATTERN"||'%')
7 - filter("C1"."C_PRODUCT"=TO_NUMBER(:RPATT6))
9 - filter("B1"."C_PRODUCT"=TO_NUMBER(:RPATT3))
10 - access("B1"."COLLECTION_ID"=:B1)
filter(:PLP$29$2 LIKE "B1"."C_PATTERN"||'%')
11 - access("B1"."COLLECTION_ID"="C1"."COLLECTION_ID" AND "C1"."C_PATTERN"=:P_DOP)
filter("C1"."COLLECTION_ID"=:B1)
22 дек 11, 15:05    [11809711]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
Hel975,
Ну научилась ты наконец-то получать ожидаемые планы.
Че ты ожидаешь теперь услышать?
Очевидную мысль, что у тебя запрос не выполняется в параллельном режиме?
Ты все прочла, что я сказал?
Почему ты не хочешься дла начала попробовать выполнить в параллели
select  /*+ PARALLEL(a1,4) */
            a1.id
from IBS.Z#ANALYTIC_CODE a1
?
22 дек 11, 15:34    [11809937]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
dbms_photoshop
Hel975,
Ну научилась ты наконец-то получать ожидаемые планы.
Че ты ожидаешь теперь услышать?
Очевидную мысль, что у тебя запрос не выполняется в параллельном режиме?
Ты все прочла, что я сказал?
Почему ты не хочешься дла начала попробовать выполнить в параллели
select  /*+ PARALLEL(a1,4) */
            a1.id
from IBS.Z#ANALYTIC_CODE a1
?


Ага, спасибо. Прочитала. Пробовала делать параллели только для IBS.Z#ANALYTIC_CODE. Пересоздала индекс, который используется в первом запросе, создала его же с PARALLEL 4, но параллели не появились.
22 дек 11, 15:50    [11810109]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
совсем чайник
Guest
Привет!

Распараллеливание это хорошо, но вы должны учитывать,
что если у вас OLTP и не много в наличии свободных ресурсов,
то может быть чревато, пострадают другие запросы.
22 дек 11, 16:12    [11810296]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Hel975, у тебя к Z#ANALYTIC_CODE идет доступ по индексу Z#IX_Z#ANALYTIC_CODE_COLL по условию "A1"."COLLECTION_ID"=TO_NUMBER(:PLP$29$1) с возвращением одной строки (судя по плану). Как ты себе представляешь распараллеливание этой операции и что самое главное - зачем?
22 дек 11, 16:12    [11810302]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
wurdu
Hel975, у тебя к Z#ANALYTIC_CODE идет доступ по индексу Z#IX_Z#ANALYTIC_CODE_COLL по условию "A1"."COLLECTION_ID"=TO_NUMBER(:PLP$29$1) с возвращением одной строки (судя по плану). Как ты себе представляешь распараллеливание этой операции и что самое главное - зачем?


COLLECTION_ID - это не primary key, и строк может быть больше 1. Для начала хотела понять, почему не параллелится просто селект из IBS.Z#ANALYTIC_CODE
22 дек 11, 16:26    [11810419]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по PARALLEL  [new]
Timur Akhmadeev
Member

Откуда:
Сообщений: 510
Hel975
Для начала хотела понять, почему не параллелится просто селект из IBS.Z#ANALYTIC_CODE

Hints on hints
22 дек 11, 21:26    [11811853]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить