Программирование >>  Проектирование баз данных 

1 ... 131 132 133 [ 134 ] 135 136 137 ... 184


Parallel Query Option (PQO)

Parallel Query Option - это продукт, который может ускорить полное сканирование таблиц и связанную с ним обработку, разбивая сканирование на фрагменты и распределяя эти фрагменты между элементами ггула процессов. PQO впервые появился в Oracle версии 7.1. Как и распределитель, описанный в предыдущем разделе, последние версии PQO выполняют такое распределение динамически. Кроме того, процессам в ггуле выделяются разные объемы работы. Это делается для уменьшения вероятности того, что несколько процессов одновременно попросят дополнительную работу.

Достоинства и недостатки PQO

Давайте рассмотрим следующий запрос:

SELECT region name , count(*) FROM customers WHERE industry code = HW GROUP BY region name;

Если при помощи этого предложения выбирается, например, 5% строк таблицы и для этого требуется посетить 4% ее блоков, то может оказаться, что этот запрос можно быстрее выполнить с помощью PQO, чем с помощью индекса. Однако уменьшение времени выполнения имеет свою цену: запрос займет все ресурсы системы ввода-вывода или центрального процессора. Это приемлемо, если на машине работает один пользователь, но если там работают 50 пользователей, вводящих заказы, то они будут ждать возможности ввода, пока выполняется запрос.

PQO идет дальше, чем распределитель в Oracle Payroll, - он берет запрос, подобный приведенному выше, и распараллеливает как выполнение сбора { данных (полное сканирование таблицы), так и сортировку. PQO совмещает их так, что сортировка начинается, когда сканирование еще не окончено. Окончательное слияние результатов при сортировке выполняется на одно-поточной фазе подведения итогов. Как мы говорили ранее, она необходима 1 в случае, когда распараллеленный процесс должен выдать итоговый резуль- [ тат. Эта схема изображена на рис. 14.5.

Каков результат всех этих операций? Мы не только можем задействовать 1 все средства стрипинга, которые нам удалось применить к этой таблице, но и выполнить больщую часть операций сортировки, не прекращая работу с данными.

Слово query (запрос) в названии этого продукта несколько обманчиво - 1 одним из важных направлений использования PQO является обеспечение гораздо более быстрого построения индексов, чем с помощью традиционного полного сканирования таблицы. Как говорилось выше, при обьином сканировании работа привязана то к возможностям системы ввода-вывода, то к1 возможностям центрального процессора (в однопроцессорной машине). [



PQO отлично справляется с задачей координации деятельности системы ввода-вывода и ЦП, а также позволяет задействовать несколько ЦП.


Сканирование А

Сканирование В


Сканирование, С

Сканирование D

Сортировка А


СортировкаЩЦ

Рис. 14.5. Схема работы Parallel Query Option

Если вы дочитали книгу до этого места, то должны были заметить, что мы никогда не заходим далеко в своих рекомендациях по поводу использования того или иного средства, не сделав необходимых предостережений и не разъяснив его недостатки. Наше первое предостережение состоит в том, что слово option (опция) в названии продукта не вводит в заблуждение. На текущий момент с PQO связаны значительные дополнительные затраты. Перед тем как делать вывод о том, что это средство решит все ваши проблемы производительности при обработке запросов, вы должны учесть следующее:

PQO работает только при полном сканировании таблиц; большинство запросов (особенно те, которые используются в оперативной обработке) лучше всего выполняется с помощью индекса.

PQO предназначен для пожирания ресурсов. Не забывайте об ограничениях механизма планирования Unix и учтите, что один пользователь PQO может фактически загрузить весь сервер.

PQO может оказаться неудобным в установке и настройке. Например, его управляющий механизм не может воспринять инструкцию следующего типа: Моя машина лучше всего работает с 20 серверами запросов, поэтому если выполняется только один параллельный запрос, выделите ему 20 серверов; при появлении других пользователей заберите процессы



у первого пользователя и выделите каждому пользователю приблизительно равное число серверов - максимум пять параллельных запросов одновременно .

Где устанавливать степень параллелизма?

В тевсущей реализации Parallel Query Option требуется, чтобы прикладной процесс, выдающий запрос, запрашивал конкретное число параллельных потоков (через параметр PARALLEL). К сожалению, это вызывает необходимость встраивать важный настроечный параметр в код приложения. Приложение, выдающее запрос, вполне может определить, годится операция для. использования параллельного сканирования или нет. Однако при выборе! числа потоков (степени параллелизма) необходимо учесть ряд факторов,! которые на момент написания запроса могут быть неизвестны и которые! могут даже не входить в круг интересов автора запроса. К этим факторам) относятся:

характеристики аппаратных средств, на которых выполняется запрос, в частности:

- количество центральных процессоров;

- количество контроллеров ввода-вывода;

- количество дисков;

степень стрипинга объектов;

наличие другой нагрузки на машину.

В общем случае мы рекомендуем, чтобы фраза PARALLEL и подсказка оптимизатору PARALLEL не устанавливали ни степень параллелизма, т число экземпляров. Вот рекомендуемые формы:

CREATE TABLE new history

TABLESPACE temp PARALLEL (DEGREE DEFAULT)

AS SELECT *

FROM history h WHERE h.entry date > SYSDATE - 7 30 OR h.active = Y OR h.type = SECURE;

SELECT /*+ FULL(H) PARALLEL (H, DEFAULT, DEFAULT) / h.type , count 0 FROM history h WHERE h.active = Y GROUP BY h.type ORDER BY 2 DESC;

Возможное исключение - использование INSTANCES 1 для предотвращения экспортирования операции на другие серверы в среде Oracle Parallel Server. Это особенно рекомендуется в тех случаях, когда вы строите индексы



1 ... 131 132 133 [ 134 ] 135 136 137 ... 184

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика