Классика баз данных - статьи

       

Параллельное выполнение


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

Для внесения параллелизма в реляционные операции в систему внедрен компонент, называемый серверным процессом-исполнителем (Executor Server Process, ESP). Таким образом, между приложением (master executor) и процессами ESP имеется отношение «главный-подчиненный» («master-slave»). Каждый ESP состоит из небольшой основной программы и файловой системы. Исполнитель приложения взаимодействует с серверными исполнителями через сообщения. На рис. 2 показано, что для выполнения запросов главный исполнитель, в дополнение к использованию связанной с ним файловой системы, использует серверные исполнители.

Рис.2. Процессы серверного исполнителя

В этой архитектуре допускается широкое разнообразие параллельных планов выполнения, в которых для запросов над одной таблицей параллелизм может обеспечиваться файловой системой, а для всех типов реляционных операций – исполнителем. Файловая система всегда производит доступ к разделенным таблицам последовательно. ESP используются для параллельного выполнения операторов SQL SELECT, INSERT, DELETE и UPDATE над разделенными файлами. Однако, если у таблицы имеются индексы, размещенные на разных дисках, то обновление записи базовой таблицы и соответствующих индексных данных производится параллельно файловой системой. Поскольку стоимость запуска ESP может быть значительной, эти процессы разделяются между операторами SQL и остаются существовать вне границ транзакций.



Содержание  Назад  Вперед