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

Откуда:
Сообщений: 8
Собственно есть задача ускорить выгрузку данных, например, по 100 тыс клиентов:

BEGIN

    EXECUTE IMMEDIATE 'alter session enable parallel dml';
    --
    
                  INSERT --+PARALLEL(n 4)
                  INTO x_payments n
                  SELECT --+PARALLEL(p 4) INDEX (p pay_nullbill_i)
                  * FROM payments p
                  WHERE p.clnt_clnt_id between 651200 and 751200 AND nvl(p.bill_bill_id,0)=0 AND p.pay_date <= to_date('01.05.2007','dd.mm.yyyy')
                  AND p.del_date IS NULL AND p.amount >= 0;

    COMMIT;
    --
    EXECUTE IMMEDIATE 'alter session disable parallel dml';
       
END;

Индекс pay_nullbill_i по CLNT_CLNT_ID, NVL(BILL_BILL_ID,0)

Так вот этот скрипт на самом деле создает 4 процесса, но работает ровно столько же времени как если бы он был запущен без PARALLEL.

Что я делаю не так?
28 ноя 07, 17:30    [4977070]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
roost78
Так вот этот скрипт на самом деле создает 4 процесса

roost78
но работает ровно столько же времени как если бы он был запущен без PARALLEL.

Это совершенно другой вопрос.
28 ноя 07, 17:41    [4977165]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
stranger.
Member

Откуда: ... а откуда не скажу
Сообщений: 236
сколько всего записей в таблице?
партиционированная?
план?

попробуй убрать хинт INDEX (p pay_nullbill_i) что получится?
также поставь
сначала alter session set db_file_multiblock_read_count=128;
28 ноя 07, 17:45    [4977199]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
roost78
Member

Откуда:
Сообщений: 8
Timm
как сделать чтобы запрос работал быстрее?
и почему PARALLEL в данном случае не дает ускорение?
28 ноя 07, 17:45    [4977202]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
roost78
Member

Откуда:
Сообщений: 8
stranger.
записей много, несколько десятков миллионов
партиционирована по дате платежа, но в запросе это поле не используется
индекс на скорость никак не влияет - работает так же
28 ноя 07, 17:49    [4977223]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
roost78
партиционирована по дате платежа, но в запросе это поле не используется
Да ну? :)
roost78
AND p.pay_date <= 


Надо смотреть на ожидания, без этого никаких правильных выводов не сделать
28 ноя 07, 17:53    [4977269]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
roost78
Member

Откуда:
Сообщений: 8
Jannny
партиции по INSERT_DATE
28 ноя 07, 17:55    [4977291]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
stranger.
Member

Откуда: ... а откуда не скажу
Сообщений: 236
roost78
stranger.
индекс на скорость никак не влияет - работает так же



Ты поробовал уже?
28 ноя 07, 17:58    [4977305]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
roost78
Member

Откуда:
Сообщений: 8
stranger.

Ты поробовал уже?

да, судя по плану он его цепляет и без хинта
28 ноя 07, 18:00    [4977315]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
stranger.
Member

Откуда: ... а откуда не скажу
Сообщений: 236
Да и без плана сложно о чем либо судить.
28 ноя 07, 18:00    [4977320]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
stranger.
Member

Откуда: ... а откуда не скажу
Сообщений: 236
roost78
stranger.

Ты поробовал уже?

да, судя по плану он его цепляет и без хинта


поставь full
увеличь db_file_multiblock_read_count

и попробуй


если система позволяет увеличь число потоков

гарантии нет - но обычно это давало результат
28 ноя 07, 18:05    [4977350]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
roost78
Member

Откуда:
Сообщений: 8
этот план имеется ввиду?

К сообщению приложен файл. Размер - 0Kb
28 ноя 07, 18:07    [4977362]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/usingpe.htm#i1008510
28 ноя 07, 18:08    [4977370]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
roost78
Member

Откуда:
Сообщений: 8
Timm
а своими словами слабо? :)
28 ноя 07, 18:11    [4977385]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
roost78
этот план имеется ввиду?


Well, look at range cardinality 2.6 million rows. This means query (step table access by rowid) issues 2.6 million single block reads. IO is your bottleneck, therefore parallel really does not matter much.

SY.

Сообщение было отредактировано: 28 ноя 07, 18:20
28 ноя 07, 18:15    [4977400]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
SY
roost78
этот план имеется ввиду?


Well, look at range cardinality 2.6 million rows. This means query (step table access by rowid) issues 2.6 million single block reads. IO is your bottleneck, therefore parallel really does not matter much.

SY.


And look at table access by rowid cardinality - less than 11K rows. This means over 2.59 million rows are read for nothing.

SY.

Сообщение было отредактировано: 28 ноя 07, 18:20
28 ноя 07, 18:18    [4977420]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
roost78
этот план имеется ввиду?
1. Здесь никакой параллельности нет.
Не все операции умеют выполняться параллельно.
Параллельно vjuen выполнятmся FULL TABLE SCAN, HASH JOIN, SORT, немногие другие.
2. Сколько процессоров на сервере БД?
3. Какое значение установлено параметру PARALLEL_MAX_SERVERS?
28 ноя 07, 18:21    [4977431]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
SQL*Plus
Параллельно vjuen выполнятmся FULL TABLE SCAN, HASH JOIN, SORT, немногие другие.
Параллельно могут выполнятmся FULL TABLE SCAN, HASH JOIN, SORT, немногие другие.
28 ноя 07, 18:23    [4977439]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
roost78
Member

Откуда:
Сообщений: 8
отлично! FULL помог ускорить выборку на порядок!
всем спасибо за советы! :)
28 ноя 07, 18:25    [4977451]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
ankalex
Member

Откуда:
Сообщений: 129
Петер-Сервис? Бедные мы, бедные...
29 ноя 07, 09:17    [4979012]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
Этанол Эталонович
Member

Откуда: Водкозажопск
Сообщений: 253
roost78
отлично! FULL помог ускорить выборку на порядок!
всем спасибо за советы! :)
Можно еще попробовать append
29 ноя 07, 09:41    [4979101]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
нуб
Member

Откуда:
Сообщений: 171
ankalex
Петер-Сервис? Бедные мы, бедные...

Разговорчики в строю
29 ноя 07, 09:48    [4979160]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
lark
Member

Откуда: Far Far Away
Сообщений: 172
ankalex
Петер-Сервис? Бедные мы, бедные...


Да уж, тайна полишинеля :))
29 ноя 07, 11:17    [4980008]     Ответить | Цитировать Сообщить модератору
 Re: Не работает PARALLEL. Что я делаю не так?  [new]
longraw
Guest
Можно попробовать PARALLEL_INDEX.
Но вообще строчек в таблице совсем мало, надо снять статистику analyze table
Тем более если 32 ядра есть, то есть и хороший массив ;)
29 ноя 07, 23:10    [4984813]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить