Документ описывает параметры системной конфигурации в категории Настройка запросов.
Примечание!
Для обеспечения стабильности и безопасности системы ручное изменение этих параметров должно выполняться с осторожностью.
Параметры настройки запросов классифицируются следующим образом:
Эти параметры обеспечивают базовый контроль над выбором планов запросов оптимизатором.
Если оптимизатор по умолчанию выбирает неоптимальный план для конкретного запроса, вы можете использовать эти параметры для принудительного выбора более подходящего плана в качестве временного решения.
Более эффективным долгосрочным подходом к улучшению качества планов является: настройка параметров стоимости планировщика (см. ниже), ручной запуск ANALYZE, увеличение значения параметра конфигурации default_statistics_target и использование оператора ALTER TABLE SET STATISTICS для увеличения объема статистики, собираемой для конкретных столбцов.
Включает или отключает использование планов сканирования битмапов оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов агрегации по группам оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов хеш-агрегации оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов хеш-соединения оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов сканирования только по индексу оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов сканирования по индексу оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование MARS2 aggscan.
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование материализации оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов слияния (merge join) оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов вложенных циклов (nested loop join) оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов параллельного объединения (parallel append) оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов хеш-соединения с параллельным хешированием оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает возможность оптимизатора запросов Postgres (планировщика) уменьшать количество разделов в партиционированных таблицах в плане запроса.
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает агрегацию по разделам (partition-wise grouping or aggregation) оптимизатором запросов Postgres (планировщиком).
GROUP BY не указан ключ партиционирования, то на каждом разделе может выполняться только частичная агрегация. Финализация должна происходить позже.off.| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | off | master; session; reload |
Включает или отключает соединения по разделам (partition-wise joins) оптимизатором запросов Postgres (планировщиком).
off.| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | off | master; session; reload |
Включает или отключает использование планов последовательного сканирования оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает явные этапы сортировки в планах, генерируемых оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование планов сканирования по идентификатору кортежа (TID) оптимизатором запросов Postgres (планировщиком).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает двухэтапную агрегацию для вычисления одиночных функций DISTINCT-агрегации.
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает трехэтапную агрегацию и соединение для вычисления функций DISTINCT-агрегации.
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает прямую отправку планов запросов на целевые сегменты для запросов, обращающихся к данным на одном сегменте.
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; system; restart |
При установке в значение on оптимизатор запросов Postgres (планировщик) планирует вставки одной строки для прямой отправки на правильный экземпляр сегмента (без операций motion).
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает или отключает использование двух- или трехэтапных параллельных планов агрегации оптимизатором запросов Postgres.
gp_enable_multiphase_agg отключен, то gp_enable_agg_distinct и gp_enable_agg_distinct_pruning также отключены.| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает двухэтапное удаление дубликатов (не SELECT COUNT(DISTINCT)) для запросов SELECT DISTINCT.
SORT DISTINCT перед motion.SORT DISTINCT намного ниже, чем передача строк через межсоединение.| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Позволяет оптимизатору Greenplum GPORCA и оптимизатору запросов Postgres (планировщику) использовать оценку размера таблицы (pg_relation_size функция), когда статистика таблицы недоступна.
ANALZYE ROOTPARTITION для сбора статистики по корневой партиции. См. ANALYZE.| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | off | master; session; reload |
Включает удаление дубликатов во время сортировки.
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Включает операцию LIMIT во время сортировки. Сортировка становится более эффективной, когда плану требуется только первые limit_number строк.
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Ослабляет оценки селективности в условиях соединения.
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | off | master; session; reload |
Ослабляет оценки селективности в условиях, применяемых к одной базовой таблице.
| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; session; reload |
Задает минимальный объем данных индекса (в БЛОКАХ), который должен быть просканирован, прежде чем будет рассмотрен параллельный сканирование индекса.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область настройки |
|---|---|---|---|
| int | 512 | 0 ~ (INT_MAX/3) | master; session; reload |
Задает минимальный объем данных таблицы (в БЛОКАХ), который должен быть просканирован, прежде чем будет рассмотрено параллельное сканирование таблицы.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область настройки |
|---|---|---|---|
| int | 8192 | 0 ~ (INT_MAX/3) | master; session; reload |
Позволяет процессу-лидеру выполнять части плана запроса под узлами Gather и Gather Merge вместо ожидания рабочих процессов.
off снижает вероятность блокировки рабочих процессов ожиданием чтения кортежей лидером, но требует, чтобы лидер ждал запуска рабочих процессов перед генерацией первой строки.| Тип данных | Значение по умолчанию | Область настройки |
|---|---|---|
| boolean | on | master; system; restart |
Примечание!
Не изменяйте эти параметры. Их изменение влияет на аппаратную конфигурацию YMatrix и типичные рабочие нагрузки. Все эти параметры взаимосвязаны; изменение одного без учета побочных эффектов может ухудшить производительность запросов.
Задает оценку стоимости оптимизатором (планировщиком) обработки каждой записи индекса во время сканирования индекса. Измеряется как доля стоимости последовательного чтения страницы.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область настройки |
|---|---|---|---|
| floating point | 0.005 | 0 ~ DBL_MAX | master; session; reload |
Задает оценку стоимости обработки каждого оператора в WHERE-запросе оптимизатором (планировщиком).
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 0.0025 | 0 ~ DBL_MAX | master; session; reload |
Задает оценку стоимости обработки каждой строки (кортежа) в запросе. Измеряется как доля стоимости последовательного чтения страницы.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 0.01 | 0 ~ DBL_MAX | master; session; reload |
Задает оценку оптимизатором (планировщиком) доли строк, которые будут извлечены курсором.
1.0 курсоры планируются как обычные запросы, учитывая только общее время, а не скорость возврата первых строк.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 0.1 | 0.0 ~ 1.0 | master; session; reload |
Задает предположение оптимизатора (планировщика) об эффективном размере буфера диска (в BLOCKS), доступном для одного запроса.
gpconfig и команды SHOW отображают эффективный размер кэша в «MB» или «kB».| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| целое число | 524288 | 1 ~ INT_MAX | master; session; reload |
Задает оценку стоимости несеквенциального чтения страницы диска из таблиц AO.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 40.0 | 0 ~ DBL_MAX | master; session; reload |
Задает оценку стоимости несеквенциального чтения страницы диска из сжатых таблиц AO.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 400.0 | 0 ~ DBL_MAX | master; session; reload |
Задает оценку стоимости оператора Motion в оптимизаторе (планировщике) Postgres, на каждую передаваемую строку между сегментами, измеряемую как доля стоимости последовательного чтения страницы.
0, используется значение, вдвое превышающее значение cpu_tuple_cost.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 0.0 | 0 ~ DBL_MAX | master; session; reload |
Задает количество первичных экземпляров, предполагаемых оптимизатором Postgres для оценки стоимости и размера.
0, используется фактическое количество первичных экземпляров.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| целое число | 0 | 0 ~ INT_MAX | master; session; reload |
Задает оценку стоимости запуска параллельных рабочих процессов оптимизатором (планировщиком).
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 1000.0 | 0 ~ INT_MAX | master; session; reload |
Задает оценку стоимости передачи кортежа от одного параллельного рабочего процесса к другому оптимизатором (планировщиком).
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 0.1 | 0 ~ DBL_MAX | master; session; reload |
Задает оценку стоимости несеквенциального чтения страницы диска оптимизатором (планировщиком).
seq_page_cost) заставляют систему предпочитать последовательные сканирования; более низкие — индексные. Вы можете одновременно настроить оба параметра, чтобы изменить относительную важность дискового ввода-вывода и стоимости ЦП.random_page_cost, чтобы лучше отразить реальную стоимость случайного чтения. Наоборот, если ваши данные полностью помещаются в кэш (например, база данных меньше общего объема памяти сервера), снижение random_page_cost может быть уместным. Для хранилищ с низкой стоимостью случайного чтения (например, SSD) может быть предпочтительнее более низкое значение random_page_cost.Примечание!
Хотя вы можете установитьrandom_page_costниже, чемseq_page_cost, физическая реальность остается неизменной. Когда все данные находятся в памяти, установка их равными является разумной, поскольку случайный доступ не несет дополнительных затрат. Аналогично, в сильно кэшированных базах данных оба значения следует снижать относительно затрат на ЦП, так как извлечение страниц из оперативной памяти намного дешевле. Если вся база данных кэширована в ОЗУ, установка их равными имеет смысл — дополнительных затрат на несеквенциальный доступ нет. В сильно кэшированной базе данных оба значения следует снижать относительно параметров ЦП, поскольку извлечение страницы, уже находящейся в ОЗУ, значительно дешевле типичного.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 4.0 | 0 ~ DBL_MAX | master; session; reload |
Задает оценку стоимости последовательного чтения страницы диска оптимизатором (планировщиком).
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 1.0 | 0 ~ DBL_MAX | master; session; reload |
GEQO — это алгоритм, использующий эвристический поиск для планирования запросов. Он сокращает время планирования сложных запросов (включающих несколько соединений таблиц) за счет потенциально неоптимальных планов по сравнению с полным перебором.
Включает или отключает генетическую оптимизацию запросов.
geqo_threshold предоставляет более тонкий контроль над GEQO.| Тип данных | Значение по умолчанию | Область применения |
|---|---|---|
| логический | off | master; session; reload |
Контролирует баланс между временем планирования и эффективностью планов в GEQO.
geqo_effort напрямую не влияет на поведение; он используется для вычисления значений по умолчанию для других параметров, связанных с GEQO.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| целое число | 0 | 0 ~ INT_MAX | master; session; reload |
Контролирует количество поколений, используемых GEQO.
1; полезные значения находятся в том же диапазоне, что и размер пула.0 (по умолчанию), YMatrix выбирает подходящее значение на основе geqo_pool_size.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| целое число | 0 | 0 ~ INT_MAX | master; session; reload |
Контролирует размер пула, используемого GEQO, то есть количество индивидуумов в генетической популяции.
geqo_effort и количества таблиц в запросе.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| целое число | 0 | 0 ~ INT_MAX | master; session; reload |
Контролирует начальное зерно для генератора случайных чисел, используемого GEQO для выбора случайных путей в пространстве поиска порядка соединений.
0 (по умолчанию) до 1. Изменение его изменяет набор исследуемых путей соединения и может привести к лучшим или худшим планам.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 0.0 | 0.0 ~ 1.0 | master; session; reload |
Контролирует смещение отбора, используемое GEQO.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| вещественное число | 1.0 | 0.0 ~ 100.0 | master; session; reload |
Генетическая оптимизация запросов используется только тогда, когда количество задействованных FROM элементов составляет не менее этого значения (замечание: FULL OUTER JOIN считается одним элементом FROM).
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| целое число | 12 | 2 ~ INT_MAX | master; session; reload |
Эти параметры контролируют объем данных, выбираемых при операциях ANALYZE. Их настройка влияет на сбор статистики во всей системе. Используйте предложение ALTER TABLE SET STATISTICS, чтобы настроить сбор статистики для конкретных таблиц и столбцов.
Задает целевое значение статистики по умолчанию для столбцов таблиц, для которых не задано специфичное для столбца значение через ALTER TABLE SET STATISTICS.
ANALYZE, но улучшают качество оценок, сделанных оптимизатором запросов Postgres.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| целое число | 100 | 0 ~ 10000 | master; session; reload |
Включает операцию LIMIT во время сортировки. Сортировка становится более эффективной, когда плану требуется только первые limit_number строк.
| Тип данных | Значение по умолчанию | Область применения |
|---|---|---|
| логический | on | master; session; reload |
Включает или отключает двухэтапную агрегацию для вычисления единичных агрегатных функций DISTINCT.
| Тип данных | Значение по умолчанию | Область применения |
|---|---|---|
| логический | on | master; session; reload |
Включает или отключает трехэтапную агрегацию и соединения для вычисления агрегатов с условиями DISTINCT.
| Тип данных | Значение по умолчанию | Область применения |
|---|---|---|
| логический | on | master; session; reload |
Включает или отключает использование двух- или трехэтапных параллельных планов агрегации оптимизатором запросов Postgres.
gp_enable_multiphase_agg отключен, то gp_enable_agg_distinct и gp_enable_agg_distinct_pruning также отключены.| Тип данных | Значение по умолчанию | Область применения |
|---|---|---|
| логический | on | master; session; reload |
Включает двухэтапное удаление дубликатов для запросов SELECT DISTINCT (не SELECT COUNT(DISTINCT)).
SORT DISTINCT перед перемещением данных.SORT DISTINCT намного ниже, чем передача строк через межсегментное соединение.| Тип данных | Значение по умолчанию | Область применения |
|---|---|---|
| логический | on | master; session; reload |
Определяет, сжимаются ли временные файлы, создаваемые при переполнении операций хеширования агрегации или хеширования соединения на диск.
| Тип данных | Значение по умолчанию | Область применения |
|---|---|---|
| логический | off | master; session; reload |
Переносит поля проекции и перемещает оценку агрегаций в отдельный узел результата.
| Тип данных | Значение по умолчанию | Область применения |
|---|---|---|
| логический | off | segments; session; reload |
Если результирующий список содержит не более этого числа элементов, оптимизатор Postgres (планировщик) переписывает явные конструкции JOIN (кроме FULL JOIN) в список элементов FROM.
from_collapse_limit, что подходит для большинства случаев.1 предотвращает любое переупорядочивание внутренних соединений. Таким образом, порядок соединений, указанный в запросе, становится фактическим порядком выполнения.1 и from_collapse_limit может помочь сбалансировать время планирования и качество плана (более высокие значения могут давать лучшие планы).geqo_threshold или выше может вызвать использование планировщика GEQO, потенциально приводя к неоптимальным планам.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область применения |
|---|---|---|---|
| целое число | 20 | 1 ~ INT_MAX | master; session; reload |
Включает корректировку селективности для проверок NULL в внешних соединениях.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Задаёт целевую плотность хеш-таблицы, используемой операциями HashJoin.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| int | 5 | 1 ~ 25 | master; session; reload |
Определяет, сжимаются ли временные файлы, создаваемые при переполнении операций хеш-агрегации или хеш-соединения на диск.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload |
Управляет использованием ограничений таблиц оптимизатором запросов Postgres (планировщиком) для оптимизации запросов.
on (проверять ограничения для всех таблиц), off (никогда не проверять ограничения) и partition (проверять ограничения только для наследуемых дочерних таблиц и UNION ALL подзапросов). Значение по умолчанию — partition. Эта настройка обычно используется с традиционными деревьями наследования для повышения производительности.CHECK таблицы и пропускает сканирование таблиц, где условия противоречат ограничениям. Например:=# CREATE TABLE parent(key integer, ...);
=# CREATE TABLE child1000(check (key between 1000 and 1999)) INHERITS(parent);
=# CREATE TABLE child2000(check (key between 2000 and 2999)) INHERITS(parent);
...
=# SELECT * FROM parent WHERE key = 2400;
При включённом constraint_exclusion этот SELECT пропустит сканирование child1000, что улучшит производительность.
enable_partition_pruning.)| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| enum | on | true / false / yes / no / 1 / 0 / on / off / partition | master; session; reload |
Позволяет использовать параллельные запросы для целей тестирования, даже если ожидаемого повышения производительности нет.
off (использовать параллельный режим только при ожидаемом улучшении производительности), on (принудительно использовать параллельный запрос, если запрос считается безопасным) и regress (аналогично on, но с дополнительными изменениями поведения, описанными ниже).on добавляет узел Gather в верхнюю часть любого плана запроса, признанного безопасным для параллельного выполнения, чтобы запрос выполнялся внутри параллельного рабочего процесса. Даже если доступных или пригодных рабочих процессов нет, операции, запрещённые в параллельных контекстах (например, запуск подтранзакций), запрещены, если только оптимизатор не считает, что их пропуск приведёт к сбою запроса. При этом параметре функции, вызывающие сбои или неожиданные результаты, могут потребовать маркировки как PARALLEL UNSAFE (или PARALLEL RESTRICTED).regress имеет все эффекты on, плюс дополнительные эффекты, полезные для регрессионного тестирования. Сообщения от параллельных рабочих процессов обычно содержат строку подсказки, указывающую их источник; установка в regress удаляет эту строку, делая вывод идентичным непараллельному выполнению. Аналогично, узлы Gather, добавляемые этим параметром, скрываются в выводе EXPLAIN, соответствующем выводу при установке в off.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| enum | off | on / off / regress | master; session; reload |
Если результирующий список FROM не превышает это значение, оптимизатор запросов Postgres (планировщик) "сплющивает" подзапросы в верхнеуровневый запрос.
geqo_threshold или выше может вызвать использование планировщика GEQO, что потенциально приведёт к неоптимальным планам.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| int | 20 | 1 ~ INT_MAX | master; session; reload |
При включении оптимизатор запросов Postgres (планировщик) применяет предикаты запроса к обоим выражениям таблиц, когда таблицы соединяются по столбцам ключа распределения.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Задаёт максимальный несжатый общий размер плана выполнения запроса, умноженный на количество операторов Motion (срезов) в плане.
0 означает, что размер плана не контролируется.200 означает 200kB. Значение 1GB эквивалентно 1024MB или 1048576kB.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| int | 0 | 0 ~ (INT_MAX/1024) | master; session; superuser |
Позволяет оптимизатору запросов Postgres (планировщику) использовать статистику из дочерних партиций при планировании запросов к родительской таблице.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload |
При включении позволяет оптимизатору запросов Postgres (планировщику) использовать информацию о внешних ключах, хранящуюся в системном каталоге, для оптимизации соединений между внешними и первичными ключами.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload |
Задаёт максимальное количество срезов (частей плана запроса, выполняемых на экземплярах Segment), которые может сгенерировать запрос.
UNION или UNION ALL на нескольких сложных представлениях могут генерировать множество срезов. Вы можете выполнить EXPLAIN ANALYZE для запроса, чтобы просмотреть его статистику по срезам.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| int | 0 | 0 ~ INT_MAX | master; session; reload |
Подготовленные инструкции (явно подготовленные или неявно сгенерированные, например, в PL/pgSQL) могут выполняться с использованием либо пользовательских, либо общих планов.
| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| enum | auto | auto / force_custom_plan / force_generic_plan | master; session; reload |
Определяет, разрешает ли YMatrix компиляцию JIT.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Задаёт порог стоимости запроса для активации компиляции JIT (Just-In-Time). Если стоимость запроса превышает это значение, активируется компиляция JIT.
-1 отключает компиляцию JIT.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| floating point | 100000 | -1 ~ DBL_MAX | master; session; reload |
Если LLVM имеет необходимые возможности, регистрирует сгенерированные функции в GDB. Это упрощает отладку.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload; superuser |
Записывает сгенерированный LLVM IR в файловую систему в каталог data_directory.
SET.| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload; superuser |
При активации компиляции JIT позволяет компилировать выражения с помощью JIT.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Задаёт порог стоимости запроса, при котором компиляция JIT пытается встраивать функции и операторы.
jit_above_cost неэффективна.-1 отключает встраивание.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| floating point | 500000 | -1 ~ DBL_MAX | master; session; reload |
Задаёт порог стоимости запроса, при котором компиляция JIT применяет дорогостоящие оптимизации.
jit_above_cost неэффективна, а установка выше jit_inline_above_cost может не принести выгоды.-1 отключает дорогостоящие оптимизации.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| floating point | 500000 | -1 ~ DBL_MAX | master; session; reload |
Если LLVM имеет необходимые возможности, генерирует данные, необходимые команде perf для профилирования функций, сгенерированных JIT.
~/.debug/jit/. Если установлена и загружена переменная окружения JITDUMPDIR, файлы записываются в JITDUMPDIR/debug/jit вместо этого.| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload; superuser |
При активации компиляции JIT позволяет компилировать деструктуризацию кортежей с помощью JIT.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Если у таблицы отсутствует статистика, позволяет оптимизатору ORCA и оптимизатору запросов Postgres использовать оценённый размер таблицы (функция pg_relation_size).
ANALZYE ROOTPARTITION для сбора статистики по корневой партиции. См. ANALYZE.| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload |
Включает или отключает GPORCA при выполнении SQL-запросов.
on. Если GPORCA отключён, база данных YMatrix использует только оптимизатор запросов Postgres.optimizer можно задавать на уровне системы базы данных, отдельной базы данных, сессии или запроса.| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Для партиционированных таблиц управляет тем, требует ли команда ANALYZE ключевое слово ROOTPARTITION для сбора статистики по корневой партиции.
on, что означает, что ANALYZE может собирать статистику корневой партиции без ключевого слова ROOTPARTITION. Статистика собирается при выполнении ANALYZE на корневой партиции или при выполнении ANALYZE на дочерней листовой партиции, если другие листовые партиции имеют статистику.off необходимо выполнять ANALZYE ROOTPARTITION для сбора статистики корневой партиции.optimizer установлен в on (по умолчанию), этот параметр также должен быть установлен в on.| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; system; restart |
Когда GPORCA включен (по умолчанию) и обрабатываются запросы с предикатами, содержащими константные массивы, параметр optimizer_array_expansion_threshold ограничивает оптимизацию на основе количества констант в массиве.
IN, содержащим более 100 элементов, GPORCA не преобразует предикат во время оптимизации, чтобы сократить время планирования и использование памяти. Различия в обработке запроса можно увидеть в условиях фильтрации в предложении EXPLAIN плана запроса IN.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| int | 100 | 0 ~ INT_MAX | master; session; reload |
Управляет возможностью пользователей изменять параметр конфигурации сервера optimizer с помощью команд SET, RESET или утилиты YMatrix gpconfig.
optimizer_control включен, пользователи могут задавать параметры оптимизатора.optimizer_control установлен в off, параметры оптимизатора изменять нельзя.| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; system; restart; superuser |
Когда GPORCA включен (по умолчанию), этот параметр управляет моделью стоимости, используемой GPORCA для сканирования битовых карт, применяемых с битовыми индексами или B-tree индексами на таблицах AO.
legacy — сохраняет модель стоимости calibrated, использовавшуюся GPORCA в Greenplum Database версий 6.13 и ранее.calibrated — улучшает оценку стоимости индексов.experimental — зарезервировано для будущих экспериментальных моделей стоимости; в настоящее время эквивалентно calibrated.calibrated чаще выбирает более быстрые сканирования битовых индексов с вложенными циклами вместо хеш-соединений.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| enum | calibrated | legacy / calibrated / experimental | master; session; reload |
Когда GPORCA включен (по умолчанию), этот параметр управляет объемом инлайна для запросов с общими табличными выражениями (CTE) (запросов с предложением WHERE).
0 отключает инлайн.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| int | 0 | 0 ~ INT_MAX | master; session; reload |
Когда оптимизатор Greenplum ORCA включен (по умолчанию) и этот параметр установлен в on (по умолчанию), GPORCA выводит статистику для более точной оценки количества строк, сканируемых во время динамического исключения партиций.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Когда GPORCA включен (по умолчанию), этот параметр управляет включением преобразований ассоциативности соединений во время оптимизации запроса.
off включается только динамическое программирование GPORCA для анализа порядка соединений.on GPORCA может использовать преобразования ассоциативности во время оптимизации запроса.| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload |
Когда GPORCA включен (по умолчанию) и этот параметр установлен в on (по умолчанию), GPORCA пытается обрабатывать команды DML, такие как INSERT, UPDATE и DELETE.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Когда GPORCA включен (по умолчанию) и этот параметр включен (по умолчанию), GPORCA может генерировать планы сканирования только по индексу для B-tree индексов.
off) GPORCA не генерирует планы сканирования только по индексу.| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Когда GPORCA включен (по умолчанию), этот параметр позволяет GPORCA поддерживать несколько агрегатов с различными квалификаторами, например SELECT count(DISTINCT a),sum(DISTINCT b) FROM foo.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload |
Когда GPORCA включен (по умолчанию), этот параметр влияет на альтернативные планы запроса, которые GPORCA рассматривает при генерации трехэтапных планов агрегации.
on GPORCA рассматривает только трехэтапные планы агрегации, где промежуточная агрегация использует столбцы GROUP BY и DISTINCT для распределения, чтобы снизить влияние перекоса.off GPORCA может также рассматривать планы, использующие для распределения столбец GROUP BY.| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
При настройке по умолчанию, когда GPORCA включен и этот параметр включен, GPORCA выбирает трехэтапные планы агрегации для скалярных агрегатов с различными квалификаторами, если такие альтернативы доступны.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | off | master; session; reload |
При настройке по умолчанию, когда GPORCA включен и этот параметр включен, GPORCA выбирает многоэтапные планы агрегации, если такие альтернативы доступны.
| Тип данных | Значение по умолчанию | Область действия |
|---|---|---|
| boolean | on | master; session; reload |
Это значение является подсказкой оптимизации, ограничивающей количество преобразований ассоциативности и коммутативности соединений, исследуемых во время оптимизации запроса.
18 указывает GPORCA остановить исследование преобразований ассоциативности и коммутативности, когда n-арный оператор соединения имеет более 18 дочерних элементов.optimizer_join_order установлен в query или greedy.| Тип данных | Значение по умолчанию | Допустимый диапазон | Область действия |
|---|---|---|---|
| int | 18 | 0 ~ INT_MAX | segments; system; reload |
Когда GPORCA включен, этот параметр задает уровень оптимизации для упорядочивания соединений во время оптимизации запроса, указывая тип альтернативных порядков соединений для оценки.
query — использовать порядок соединений, указанный в запросе.greedy — вычислить порядок соединений, указанный в запросе, и альтернативы на основе наименьшей мощности отношений в соединениях.exhaustive — применить правила преобразования для поиска и оценки всех возможных альтернатив порядков соединений.exhaustive. Установка этого параметра в query или greedy может привести к неоптимальным планам запроса. Однако, если администратор уверен, что удовлетворительные планы создаются с query или greedy, снижение уровня оптимизации может ускорить процесс оптимизации запроса.query или greedy переопределяет параметры optimizer_join_order_threshold и optimizer_join_arity_for_associativity_commutativity.| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| enum | exhaustive | exhaustive / greedy / query | master; session; reload |
Когда GPORCA включен (по умолчанию), этот параметр задает максимальное количество входов соединения, для которых GPORCA использует алгоритм упорядочивания соединений на основе динамического программирования.
optimizer_join_query установлен в query или greedy.| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| int | 10 | 0 ~ 12 | master; session; reload |
Задает максимальный объем памяти (в КБ) на мастере базы данных YMatrix, который GPORCA использует для кэширования метаданных запросов (данных оптимизации) во время оптимизации запроса.
optimizer_metadata_caching включен.16384(16MB), что является оптимальным значением, определенным на основе анализа производительности.KB, MB или GB. Единица измерения по умолчанию — KB. Например, значение 16384 означает 16384KB. Значение 1GB эквивалентно 1024MB или 1048576KB.0, размер кэша не ограничен.| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| int | 16384 | 0 ~ INT_MAX | master; session; reload |
Когда GPORCA включен (по умолчанию), этот параметр указывает, кэширует ли GPORCA метаданные запросов (данные оптимизации) в памяти на мастере базы данных YMatrix во время оптимизации запроса.
off, GPORCA не кэширует метаданные во время оптимизации запроса.optimizer_mdcache_size управляет размером кэша метаданных запроса.| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | on | master; session; reload |
Когда GPORCA включен (по умолчанию), optimizer_parallel_union управляет степенью параллелизма для запросов, содержащих UNION или UNION ALL.
off GPORCA генерирует план запроса, в котором каждый дочерний элемент оператора APPEND(UNION) находится в том же срезе, что и оператор APPEND.APPEND(UNION). Во время выполнения дочерние и родительские операторы APPEND находятся на разных срезах, что позволяет дочерним элементам оператора APPEND(UNION) выполнять параллельно на экземплярах Segment.| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | off | master; session; reload |
Когда GPORCA включен (по умолчанию), во время оптимизации запроса GPORCA штрафует стоимость планов, пытающихся транслировать отношения, превышающие количество строк, указанное этим параметром.
100K строк (по умолчанию), любая трансляция, превышающая 100K строк, сильно штрафуется.0 GPORCA устанавливает порог трансляции как неограниченный и никогда не штрафует операции трансляции.| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| int | 100000 | 0 ~ INT_MAX | master; session; reload |
При включённом GPORCA (по умолчанию) этот параметр позволяет GPORCA снижать стоимость сегмента для операторов HashJoin, у которых дочерним элементом является смещённое Redistribute Motion, предпочитая при оптимизации запросов Broadcast Motion.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | on | master; session; reload |
При включённом GPORCA (по умолчанию) этот параметр включает логирование статистики оптимизации запросов GPORCA для различных фаз оптимизации.
off; статистика оптимизации не логируется.on, а параметр client_min_messages — в log.set optimizer_print_optimization_stats = on;set client_min_messages = 'log';EXPLAIN или EXPLAIN ANALYZE.| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | off | master; session; reload |
При включённом GPORCA (по умолчанию) optimizer_sort_factor управляет коэффициентом стоимости, применяемым к операциям сортировки при оптимизации запросов.
1 задаёт стандартный коэффициент стоимости сортировки.2.0 устанавливает коэффициент стоимости в два раза выше стандартного, а значение 0.5 — в два раза ниже.| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| floating point | 1.0 | 0.0 ~ DBL_MAX | master; session; reload |
Включает или отключает Runtime Filter.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | on | master; session; reload |
Runtime Filter не активируется, если соотношение строк внешней таблицы к строкам внутренней таблицы в соединении меньше этого значения.
| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| int | 10 | 0 ~ (INT_MAX/2) | master; session; reload |
Максимальное количество Runtime Filter, разрешённых на один запрос.
| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| int | 4 | 0 ~ (INT_MAX/2) | master; session; reload |
Runtime Filter не активируется, если количество строк во внутренней таблице соединения превышает это значение.
| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| int | 2000000 | 0 ~ (INT_MAX/2) | master; session; reload |
Runtime Filter не активируется, если количество строк во внешней таблице соединения меньше этого значения.
| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| int | 3 | 0 ~ (INT_MAX/2) | master; session; reload |
Runtime Filter не активируется, если количество строк во внешней таблице соединения меньше этого значения.
| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| int | 500000 | 0 ~ (INT_MAX/2) | master; session; reload |
Runtime Filter не активируется, если соотношение просканированных строк во внутренней таблице к строкам, удовлетворяющим условию соединения, меньше этого значения.
| Тип данных | Значение по умолчанию | Диапазон значений | Классификация настройки |
|---|---|---|---|
| int | 25 | 0 ~ (INT_MAX/2) | master; session; reload |
Включает или отключает векторизованный движок исполнения.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования планов групповой агрегации.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования планов хеш-агрегации.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования типов планов Append.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования типов планов Motion.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования типов планов агрегации с явной предварительной сортировкой.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает корневой исполнитель векторизованного движка исполнения.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования типов планов сортировки.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает строгий режим для векторизованного движка исполнения.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | false | master; session; reload |
Включает резервные выражения для векторизованного движка исполнения.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования типов планов Limit.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования типов планов оконной агрегации.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | false | master; session; reload |
Включает векторизованный движок исполнения для использования типов планов Subquery Scan.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования типов планов Hash Join.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает расширенную хеш-таблицу для векторизованных соединений по хешу.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования типов планов AggScan.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |
Включает векторизованный движок исполнения для использования индексных сканирований.
| Тип данных | Значение по умолчанию | Классификация настройки |
|---|---|---|
| boolean | true | master; session; reload |