Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Для эффективной настройки SQL необходимо понимать, что такое план запроса. Понимание планов запросов требует знания полного процесса выполнения запроса в системе управления базами данных. Как эволюция и оптимизация семейства PostgreSQL, YMatrix наследует классические механизмы обработки запросов из PostgreSQL — в первую очередь от Greenplum Database.
Greenplum Database разделяет узлы на Master-узлы и Segment-узлы, расширяя архитектуру PostgreSQL для поддержки распределённой системы баз данных со следующим рабочим процессом обработки запросов:
Существует два метода распределения планов запросов:
Распределённый параллельный план запроса означает, что большинство операций базы данных — таких как сканирование таблиц, соединения, агрегации и сортировки — выполняются параллельно на всех экземплярах Segment. Каждая операция работает независимо на данных одного Segment, не обращаясь к данным, хранящимся на других Segment.
_1692676549.png)
Целевой план запроса применяется, когда запрос обращается к данным только на одном Segment. Примеры включают операции INSERT, UPDATE, DELETE или SELECT для одной строки, либо запросы, отфильтрованные по столбцу ключа распределения таблицы. В таких случаях план запроса не отправляется всем Segment, а направляется только на Segment-узел(ы), содержащие соответствующие строки.
_1692676530.png)
Обратите внимание, что целевые планы запросов в распределённой базе данных отличаются от планов в одиночной базе данных. В распределённой системе каждый сервер обычно содержит несколько экземпляров Segment, в отличие от одиночной базы данных, где имеется только один Segment. Следовательно, даже если при создании таблицы не был определён ключ распределения, данные всё равно могут быть распределены между несколькими Segment на одном и том же сервере. В таких случаях даже целевой план, направленный на один сервер, может требовать оператора Motion для сбора результатов из нескольких Segment на этом сервере.