Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
ORCA — это новый модульный оптимизатор запросов в YMatrix, призванный заменить традиционный планировщик PostgreSQL. Он обеспечивает значительный прирост производительности для определённых OLAP-нагрузок. По умолчанию оптимизатор ORCA отключён в YMatrix. Чтобы использовать его, необходимо явно включить параметр конфигурации optimizer. При активации YMatrix пытается использовать ORCA для генерации планов выполнения запросов. Если ORCA не может обработать запрос, система автоматически переключается на планировщик на основе PostgreSQL.
На приведённой ниже схеме показана системная граница ORCA. Сам оптимизатор расположен внизу, а над ним находится СУБД.
ORCA получает от СУБД два типа входных данных: сам запрос (Query) и метаданные (MetaData, или MD), и возвращает физический план выполнения (Plan). Все три компонента — Query, MD и Plan — представлены в формате DLX.

Внутренняя структура ORCA представлена на следующей диаграмме и включает такие компоненты, как Job Execution, Job Scheduler, Memo и OS.

Memo:
Search (Поиск): представляет три типа задач:
Job Scheduler (Планировщик задач): координирует и выполняет задачи оптимизации.
Transformations (Преобразования): правила, изменяющие выражения в Memo. Делятся на две основные категории:
Property Enforcement (Принудительное соблюдение свойств): усиливает свойства данных.
Metadata Cache (Кэш метаданных): кэширует метаданные, используемые в ходе оптимизации.
OS: низкоуровневая библиотека, отвечающая за ввод-вывод, обработку исключений, управление памятью, параллелизм и другие системные сервисы.
Когда optimizer = on, YMatrix использует ORCA вместо устаревшего планировщика. Поведением ORCA можно управлять через параметр конфигурации optimizer на уровне системы, базы данных, сессии или отдельного запроса. Чтобы изменить значение по умолчанию, выполните одно из следующих действий.
Установите параметр optimizer для всего кластера YMatrix:
mxadmin (администратором YMatrix).gpconfig, чтобы установить параметр в on:gpconfig -c optimizer -v on
mxstop -u
Используйте команду ALTER DATABASE, чтобы включить ORCA только для одной базы данных. Например, для базы test_db:
ALTER DATABASE test_db SET OPTIMIZER = ON;
Используйте команду SET, чтобы включить ORCA для текущей сессии. Например, после подключения через psql:
SET optimizer = on;
Чтобы включить ORCA только для одного запроса, поместите команду SET непосредственно перед ним.
Примечание!
Подробнее о параметрах конфигурации, связанных с ORCA, см. в разделе Параметры конфигурации оптимизатора ORCA.
Когда ORCA включён (по умолчанию он выключен), вы можете проверить, использовался ли он для конкретного запроса, проанализировав вывод команды EXPLAIN.
Если план сгенерирован ORCA, в конце вывода будет строка, указывающая на оптимизатор и его версию. Например:
Optimizer: ORCA
Если параметр optimizer установлен в off, либо если ORCA был включён, но запрос был передан устаревшему планировщику, вывод будет содержать:
Optimizer: Postgres-based planner
Примечание!
При переходе на устаревший планировщик план запроса зависит от параметров конфигурации этого планировщика. Подробнее см. в разделе Параметры управления операторами.
Следующие функции SQL не поддерживаются, когда включён ORCA:
CUBEROWROWCOMPAREFIELDSELECTON MASTER или ON ALL SEGMENTS.SELECT, UPDATE и DELETE, использующие ключевое слово ONLY при ссылке на имя таблицы.