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