PostgreSQL обрабатывает одновременные запросы данных в режиме параллелизма. 13
Когда оптимизатор определяет, что параллельный запрос — самая быстрая стратегия выполнения для конкретного запроса, он создаёт план запроса, который включает узел Gather или Gather Merge. 1 Если этот узел находится в самом верху дерева плана, то в параллельном режиме будет выполняться весь запрос. 4 Если он находится в другом месте плана, параллельно будет выполняться только часть плана ниже него. 4
Выполнение запроса всегда начинается в «ведущем» процессе. 2 Он выполняет всю непараллельную деятельность и свой вклад в параллельную обработку. 2 Другие процессы, выполняющие те же запросы, называются «рабочими» процессами. 2
Рабочие процессы общаются с ведущим через очередь сообщений (на основе общей памяти). 2 У каждого процесса две очереди: одна для ошибок, вторая для кортежей. 2
Общее число фоновых рабочих процессов, которые могут существовать одновременно, ограничивается параметрами maxworkerprocesses и maxparallelworkers. 4 Таким образом, параллельный запрос может выполняться меньшим числом рабочих процессов, чем планировалось, либо вообще без дополнительных рабочих процессов. 4