Параллельное сканирование данных в Greenplum работает благодаря распределению данных по множеству машин — сегментам. 4 Каждый сегмент отвечает за выполнение операций локальной базы данных со своим собственным набором данных. 1
Процесс происходит так: 1
- Исходный SQL-запрос Greenplum переводит в план выполнения — набор операций, которые база данных выполнит для получения ответа на запрос. 1
- План запроса делится на фрагменты или слайсы (slice) — части, над которой сегменты могут работать независимо. 1
- Каждый сегмент получает копию плана запроса и работает над ним параллельно. 1
- Каждому слайсу плана запроса назначен как минимум один рабочий процесс, который работает над назначенной ему частью плана запроса независимо. 1
- Связанные процессы, которые работают над одним и тем же фрагментом плана запроса, но в разных сегментах, называются группами (gangs). 1
- По мере завершения части работы кортежи передаются по плану запроса от одной группы процессов к другой в рамках межпроцессного взаимодействия Greenplum. 1
Некоторые запросы могут получать доступ только к данным в одном сегменте, например однострочные операции INSERT, UPDATE, DELETE, SELECT или запросы, которые фильтруют столбцы ключа распределения таблицы. 1 В таких запросах план запроса не рассылается по всем сегментам, а нацелен на сегмент, который содержит затронутые или релевантные строки. 1