Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Параллельное выполнение (parallel execution).






 

Параллельное выполнение (parallel execution) SQL-выражений – функциональная особенность, доступная только в редакции Enterprise Edition.

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

Параллельное выполнение подходит не для всех SQL-выражений. Оно, в-основном, предназначено для хранилищ данных и DSS-систем, а также для выполнения некоторых регулярных пакетных заданий.

Параллельное выполнение может использоваться при выполнении следующих операций:

 

- запросов (с подзапросами, сортировками, группировками и т.д.);

- создания больших индексов (и перестройки индексов);

- массовые DML-операции;

- операции с секциями;

- операции загрузки данных с помощью SQL * Loader;

- и др.

 

Как правило, распараллеливанию подвержены те операции, которые предполагают полное сканирование таблиц (full table scan - FTS).

Имеет смысл использовать параллельное выполнение даже в однопроцессорных системах, но лишь в том случае, если аппаратная загрузка сервера невысока (например, процессорное время не используется более чем на 30%).

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

 

Как работает параллельное выполнение

 

Параллельное выполнение использует возможность создания во время выполнения дополнительных серверных процессов (Pnnn - процессы), подчиненных вызвавшему их процессу. Для координации работы параллельных серверных процессов используется специальный процесс-координатор (parallelexecutioncoordinator), который и объединяет воедино результаты работы всех процессов, обрабатывавших выражение.

Число параллельных процессов, создаваемых во время выполнения выражения зависит от т.н. степени параллелизма (degree of parallelism - DOP).

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

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

 

SELECT * FROM employees ORDER BY employee_id; (для демо-схемы HR).

Степень параллелизма

 

Число параллельных серверов, инициируемых выполняемым SQL-выражением зависит от степени параллелизма (degree of parallelism). В Oracle для определения этого понятия учитывается также количество пользователей, вводящих данные, параметры инициа­лизации объектов, число файлов, число процессоров в системе, число дисковых подсистем с зеркалированием и т.д.

Степень используемого параллелизма зависит от ресурсов компьютера (т.е. от числа про­цессоров, размера оперативной памяти и пропускной способности системы ввода-вывода данных), способа распределения данных, числа параллельно выполняемых SQL-команд и других заданий. При указании степени параллелизма необходимо учитывать имеющиеся в вашем распоряжении вычислительные ресурсы. В противном случае неизбежно возникнут проблемы, связанные с избыточным размером файла подкачки, возникновением пробок во время выполнения операций ввода-вывода данных и другие, что в результате может сущест­венно снизить производительность системы.

На уровне SQL-команды степень параллелизма задается явно с помощью подсказки оптимизатору PARALLEL. Например, в нижеследующем примере с помощью этой подсказки указывается степень параллелизма для таблиц employees и departments равной 4:

 

SELECT /*+ PARALLEL(employees 4)

PARALLEL(departments 4)

USE_HASH(employees)

ORDERED */

MAX(salary), AVG(salary)

FROM employees, departments

WHERE employees.department_id = departments.department_id

GROUP BY employees.department_id;

 

Степень параллелизма можно указать для объекта, например, таблицы, при его создании. Для этого используется ключевое слово PARALLEL во выражении CREATE …

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

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

PARALLEL_AUTOMATIC_TUNING – позволяет серверу Oracle выполнять автоматическое распараллеливание (если это возможно). По умолчанию – FALSE. Включение этого параметра подразумевает использование большого пула для буферов сообщений параллельных серверов.

PARALLEL_ADAPTIVE_MULTI_USER – работает «в паре» с предыдущим параметром. Предназначен для принудительного понижения степени параллелизма выполняющихся выражений при увеличении нагрузки на систему.

PARALLEL_MAX_SERVERS – указывает максимальное число Pnnn-процессов в рамках экземпляра (по умолчанию - 5).

PARALLEL_MIN_SERVERS – указывает минимальное число Pnnn-процессов в рамках экземпляра (выделяются сразу при старте экземпляра).

PARALLEL_MIN_PERCENT – указывает процент от PARALLEL_MAX_SERVERS, т.е. число параллельных процессов, которое может использовать одно выполение. По умолчанию – 0, не включен.

PARALLEL_THREADS_PER_CPU – указывает число параллельных процессов, которое поддерживает один процессор. Вычисляется, как правило автоматически, обычно равен 2. При сильной нагрузке на процессоры со стороны параллельных выражений может быть уменьшен, точно так же, как и может быть увеличен в случае незначительной загрузки процессоров (менее 30% на процессор, например).

Помимо этого, с помощью команды ALTER SESSION и фразы PARALLEL можно указать для запросов, DML и DDL-выражений вид параллельного выполнения, отличного от автоматически настраиваемого. Можно разрешать, либо запрещать параллельное выполнение, принудительно выставлять степень параллелизма.

Использование файлов, управляемых Oracle (Oracle Managed Files, ОМF)

В Oracle 10g для упрощения администрирования файлов базы данных можно использовать технологию OMF (Oracle Managed Files). OMF может применяться для:

 

- файлов табличных пространств (в т.ч. и временных);

- файлов регистрации транзакций;

- управляющих файлов.

 

Суть OMF заключается в том, что Oracle берет на себя некоторые функции по работе с файлами данных, которые ранее нужно было выполнять АБД. Например, удаление табличного пространства требовало позднее вручную удалить файлы его составлявшие. Использование OMF освобождает АБД от этой обязанности. Помимо этого, упрощается создание файлов БД: нет необходимости задавать имя и параметры хранения файла. Oracle генерирует уникальное имя для каждого OMF-файла (с учетом особенностей используемой файловой системы).

OMF можно использовать наряду с поддержкой традиционных файлов БД.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.