Посмотрите на очереди операторов и параметры, такие как PARALLEL_MAX_SERVERS
, чтобы убедиться, что важные процессы получают достаточно параллельных серверов.(По моему опыту, настройка менеджера ресурсов слишком сложна и редко выполняется хорошо.)
Очередь операторов
Невозможно переместить параллельные серверы из одного оператора в другой, пока ониБег.Тем не менее, с помощью очередей операторов мы можем попросить Oracle не запускать важные операторы до тех пор, пока у них не появятся необходимые параллельные ресурсы.Возможно, для большого параллельного процесса было бы лучше подождать минуту и получить все запрошенные параллельные серверы, чем немедленно запускать его только с частичными ресурсами.
Используйте подсказку /*+ parallel(16) statement_queuing*/
в наиболее важных операторах.
Убедитесь, что параметр PARALLEL_SERVERS_TARGET
установлен правильно - в очереди операторов будут использоваться только параллельные серверы до этого числа.Возможно, вы захотите установить этот параметр таким же, как PARALLEL_MAX_SERVERS
.
PARALLEL_MAX_SERVERS
Убедитесь, что параметр PARALLEL_MAX_SEERVERS
установлен правильно.Это сложное значение, и я часто вижу низкие значения.Имейте в виду, что параллельные серверы Oracle - это относительно легкие процессы.В большинстве случаев половина выделенных серверов будет использоваться только для хранения промежуточных результатов и не будет работать.
Например, если ваша система имеет 32 ядра, вы должны установить PARALLEL_MAX_SERVERS на как минимум 64, если не 128 или 256. Многие из администраторов баз данных неправильно уменьшают значение PARALLEL_MAX_SERVERS перед тестированием.Основываясь на моем опыте и тестировании, серверы Oracle могут эффективно обрабатывать больше параллельных серверов, чем думает большинство людей.