DeepEdit!

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

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

Взаимодействие между параметрами PARALLEL_MIN_SERVERS, PARALLEL_MAX_SERVERS и PARALLELMINPERCENT


Параметр PARALLEL_MIN_SERVERS можно абсолютно безопасно устано-
вить равным числу процессоров машины. Верхним пределом для этого парамет-
ра является значение PARALLELJV1AX_SERVERS которое, в свою очередь,
устанавливает максимальное число подчиненных процессов параллельного за-
проса. Вообще говоря, значение параметра        можно
установить равным удвоенному числу процессоров, а иногда даже еще большим,
но эффективность подобного действия зависит от характеристик системы вво-
да/вывода и от количества данных, распределенных по различным томам.
По мере увеличения спроса на подчиненные процессы параллельного запро-
са Oracle будет дополнительно инициировать такие процессы, но только до тех
пор, пока не превысится их максимальное количество, установленное парамет-
ром        Если эти процессы заканчивают приписанную
им работу и остаются свободными, Oracle завершает их спустя определенное
время. Это время простоя может быть установлено (в минутах) с использовани-
ем параметра PARALLEL_SERVER_IDLE_TIME. Начиная с Oracle 8.1.3, такой
параметр был исключен, и теперь Oracle использует внутреннюю установку тай-
мера, которую нельзя изменить, применяя параметр инициализации. Заверше-
ние свободных подчиненных процессов параллельного запроса уменьшает
требования к системным ресурсам. Однако число таких процессов не должно
становиться меньше минимального, устанавливаемого параметром
PARALLEL_MIN_SERVERS. Значения параметров PARALLEL_MIN_SERVERS и
PARALLEL_MAX_SERVERS (см. раздел "Как использовать параллелизм") опре-
деляют 

пул серверов

       

выполнения.

Параметр        играет очень важную роль. Он позво-
ляет установить минимальную степень параллелизма, при которой разрешается
выполнять запрос. Если система неспособна обеспечить требующийся мини­мум параллелизма (определенный в процентах от реальной степени паралле­лизм таблицы или индекса), запрос закончится аварийно. В этом случае можно либо вообще отказаться от выполнения операции, либо попытаться выполнить ее с меньшим числом подчиненных процессов параллельного запроса. Рассмот­рим пример (для простоты мы несколько обрезали выход) получения значений параметров PARALLEL_MIN_SERVERS, PARALLEL_MAX_SERVERS и
PARALLEL_MIN_PERCENT:

/* The output from the following command has been formatted */
SVRMGR> show parameter parallel
NAME        TYPE        VALUE
parallel jirax.servers     integer        8
paralleljnin.percent     integer        50
parallel jrrin_servers     integer        4
Предположим, что шесть из максимально разрешенного числа (8) подчинен­ных процессов параллельного запроса заняты. Мы просто представили запрос, в котором запрашивается какая-то степень параллелизма, допустим, шесть. Oracle может инициировать только два дополнительных процесса, после чего будет достигнуто пороговое значение числа разрешенных процессов. Но так как PARALLEI,_MIN__1'KR(.1EN"I установлен равным 50% (т. е. для запуска запро­са в параллельном режиме требуется по крайней мере три подчиненных про­цесса параллельного запроса), то запустить еще три дополнительных процесса невозможно, и Oracle подымет флаг ошибки с кодом ORA-12827, как это показа­но в следующем примере:
□ SQL> select /*+ PARALLEL (CM,  6) * / count (*) from CUSTOMER_MASTER CM where Customer_Bi'll_Num is not null; select /*+ PARALLEL (CM,  6) */ count (*) *
ERROR at line
ORA-12827: insufficient parallel query slaves available
Если PARALLEL_M1N_PERCENT был оставлен равным его значению по умолчанию (0) и при этом был достигнут верхний предел разрешенного числа подчиненных процессов параллельного запроса, который ранее был установ­лен равным PARALLEL_MAX_SERVERS, любой новый запрос, требующий па­раллелизма, будет выполняться последовательно и поэтому очень медленно (как будто РС*не был активизирован). Итак, внезапно запрос, который раньше намного быстрее выполнялся с использованием параллелизма, начал выполня­ться значительно медленнее и стал требовать для своего завершения больше времени. А вы не желаете этого замечать до тех пор, пока кто-то не скажет вам об этом грустном факте или мониторинг системы не совпадет (случайно) с вы­полнением данного запроса.
Вы и в самом деле хотите выполнять его в параллельном режиме или откаже­тесь вообще? Если да, тогда можете установить PARALLEL_MIN_PERCENT рав­ным его максимальному значению (100) и будьте уверены, что либо запрос будет выполняться с положенной ему степенью параллелизма, либо не будет выполня­ться вообще. Однако требования приложения подскажут, что является приемле­мым в таких ситуациях. Мы считаем, что будет лучше, если мы проинформируем читателей обо всех доступных опциях конфигурирования и о
том, как они работают. Вообще, если речь идет о промышленной системе, ни­кто не захочет, чтобы запросы завершались аварийно, поэтому лучше устано­вить этот параметр равным 0 или очень малому числу.
Есть еще один параметр, о котором читателю необходимо знать, -OPTIMIZERJPERCENTJPARALLEL. Он влияет на поведение стоимостного оп­тимизатора при определении пути  выполнения.   Как и  в случае  с значение этого параметра подсказывает оптимиза­тору, о какой степени параллелизма может идти речь при определении стоимо­сти плана выполнения для запроса. Возможный диапазон изменения значений этого параметра - от 0 до 100. Значение по умолчанию - 0. Более низкие значе­ния параметра указывают на тенденцию предпочтения последовательных пла­нов выполнения посредством индексированного доступа, в то время как высокие значения указывают на склонность к сканированию полной таблицы. Очевидно, что полном сканировании таблицы преимущества параллелизма гораздо более заметны и измеримы.
Oracle8i ввел и еще один новый параметр - PARALLE L AUTOM ATI С TUNING. Он может принимать значения TRUE или FALSE. Значение по умол­чанию равно FALSE. Если установить его на TRUE, Oracle будет автоматически определять значения всех остальных связанных с ним параметров. Помимо прочего, при этом будет установлен на TRUE параметр
MULTI_USER, что даст Oracle возможность отменять заданные пользователями подсказки, чтобы поддерживать производительность системы в приемлемых пределах. Именно АБД должен установить степень параллелизма на уровне таб­лицы. Звучит просто и восхитительно, не так ли? Но когда вы задаете этот пара­метр как TRUE, не устанавливая другие параметры, Oracle определит PARALLEL MEN SERVERS и PARALLEL MEN PERCENT как 0, а значение PARALLEL_MAX_SERVER5: - в диапазоне от 40 до чудовищного 160 в зависимо­сти от аппаратной платформы. Причем оба эти значения довольно высоки для данной среды. Так что используйте эти параметры с осторожностью и только • после тщательного тестирования.
 


бесплатный анал







jAntivirus