DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Преимущества параллельных запросов

Распараллеливание полезно для любых типов запросов, независимо от того, используют ли они табличные функции. Запросы без табличных функций получают преимущество от ускоренного выполнения параллельных запросов, позволяющего быстрее собрать результирующее множество. Запросы, использующие табличные функции, выигрывают в оперативности не только от использования PQ-серверов, но и оттого, что формируют конечный результат по ходу работы.
Давайте проиллюстрируем это на примере таблицы, содержащей по одной записи на каждую транзакцию, выполняющуюся в большом банке:

Предположим, нам надо разработать функцию, суммирующую транзакции по регионам. Сначала надо создать запрос с группировкой по регионам. Это осложняется необходимостью выполнения ряда сложных проверок; для наглядности в приводимых примерах соберем эти проверки в функцию super_complex_validation.
Вот искомый результат, полученный на демонстрационном наборе данных в предположении, что все транзакции прошли эту сложную проверку.

Рис. 3.1. Распараллеленная табличная функция


10
550
2
470
3
480
4
490
5
500
6
510
7
520
8
530
9
540

Применим параллельную обработку, чтобы получить этот результат быстрее при большом количестве записей. В случае использования табличных функций это означает, что Oracle запустит одновременно несколько экземпляров табличной функции и распределит между ними результаты, полученные от переданного REF-курсора, как показано на рис. 3.1.
 









jAntivirus