Рубрика:
Базы данных /
Инструменты
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ВЛАДИМИР ТИХОМИРОВ, директор по информационным технологиям СПАО «Ингосстрах», Vladimir.Tikhomirov@ingos.ru
ВАЛЕРИЙ МИХЕИЧЕВ, эксперт Oracle, ОСАО «Ингосстрах», Valery.Mikheitchev@ingos.ru
Распараллеливание операций в Oracle Часть 2. Особенности и ограничения
В статье рассматриваются вопросы распараллеливания DDL-операций, SQL-запросов и других операций в Oracle, а также особенности и ограничения, связанные сраспараллеливанием
В первой части статьи [1] были рассмотрены вопросы распараллеливания DML-операций: Insert, Update, Delete, Merge, особенности и ограничения процессов распараллеливания обычных (не секционированных) таблиц [1]. Во второй части разберемся с возможностями Oracle по распараллеливанию DML-операций секционированных таблиц. Также осветим вопросы распараллеливания SQL-запросов (parallel query) и распараллеливания DDL-операций (таких как Create tables, Create index и Rebuild index). Рассмотрим возможности использования параллелизма при сборе статистики таблиц и индексов.
На степень параллелизма существенное влияние оказывает ряд таких факторов, как число процессоров на сервере, значения параметров инициализации экземпляра базы данных, параметры, установленные на уровне сессии, профили пользователей и их параметры ресурсов и т.д.
Параметры инициализации
Они отвечают за параллелизм во всех сессиях, и их значения можно увидеть по запросу:
Select name, value, description from v$parameter where name like ‘%parallel%’ order by 1;
Основные параметры инициализации, отвечающие за параллелизм, приведены в таблице 1.
Таблица 1. Документированные параметры инициализации, ответственные за параллелизм
Имя параметра |
Назначение параметра |
LICENSE_MAX_SESSIONS |
Определяет максимальное количество параллельно выполняющихся сеансов, которые могут существовать в любой заданный момент времени (значение, используемое по умолчанию: 0) |
PARALLEL_ADAPTIVE_MULTI_USER |
Включает адаптивный алгоритм, разработанный для того, чтобы улучшить производительность в многопользовательских средах сиспользованием параллельного выполнения. Алгоритм автоматически уменьшает требуемую степень параллелизма на основе системной загрузки во время выполнения запроса. Эффективная степень параллелизма основана на степени параллелизма поумолчанию или степени параллелизма из таблицы или хинтов |
PARALLEL_DEGREE_LIMIT |
Оптимизатор автоматически определяет степень параллелизма для операторов на основе потребности их в ресурсах. При этом оптимизатор будет ограничивать степень параллелизма используемого для обеспечения параллельных процессов сервера в случае ихлавинообразного роста в системе до определенного предела. Данный предел и определяется значением этого параметра |
PARALLEL_DEGREE_POLICY |
Определяет, будет ли автоматическая степень параллелизма |
PARALLEL_EXECUTION_MESSAGE_SIZE |
Определяет размер сообщений, используемых для параллельного выполнения (параллельный запрос, параллельные DML-операции, параллельное восстановление, репликация) |
PARALLEL_FORCE_LOCAL |
Контролирует параллельные выполнения в среде Oracle RAC |
PARALLEL_MAX_SERVERS |
Параметр определяет максимальное число параллельных серверных процессов, заданное для экземпляра |
PARALLEL_MIN_SERVERS |
Определяет минимальное число параллельных серверных процессов, заданных для экземпляра. Значение является числом процессов параллельного выполнения, которые Oracle создает, когда экземпляр запускается |
PARALLEL_MIN_PERCENT |
Позволяет определять минимальный процент числа процессов параллельного выполнения, требуемых для выполнения параллельного запроса. Установка этого параметра гарантирует, что параллельные операции не будут выполняться, если соответствующие ресурсы небудут доступны |
PARALLEL_MIN_TIME_THRESHOLD |
Определяет минимальное время выполнения, после которого для оператора включается автоматическая степень параллелизма. Поумолчанию параметр устанавливается в значение, равное 10 секундам. Автоматическая степень параллелизма разрешена, только если параметр PARALLEL_DEGREE_POLICY устанавливается в значение AUTO или LIMITED |
PARALLEL_SERVERS_TARGET |
Определяет, какое количество серверных параллельных процессов разрешено для операторов параллельного выполнения, прежде чем вдействие вступит очередь операторов. Если параметр установлен на AUTO, Oracle поставит в очередь SQL-операторы, которые требуют параллельного выполнения, если необходимые параллельные процессы сервера будут недоступны. Организация очереди операторов начнется тогда, когда число активных серверных параллельных процессов в системе будет равно или больше, чем значение этого параметра |
PARALLEL_THREADS_PER_CPU |
Параметр описывает число выполняющихся параллельных процессов или потоков, которые ЦП может обработать во время параллельного выполнения |
PROCESSES |
Значение параметра устанавливает верхний предел для числа процессов операционной системы, которые могут параллельно подключаться к базе данных |
Статью целиком читайте в журнале «Системный администратор», №05 за 2016 г. на страницах 32-36.
PDF-версию данного номера можно приобрести в нашем магазине.
- Тихомиров В., Михеичев В. Распараллеливание операций в Oracle. Часть 1. // «Системный администратор», №4, 2016 г. – С. 48-52 (http://samag.ru/archive/article/3173).
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|