Перейти к основному содержанию
Эти настройки доступны в system.settings и автоматически генерируются на основе исходного кода.

group_by_overflow_mode

Определяет, что происходит, когда число уникальных ключей агрегации превышает лимит:
  • throw: сгенерировать исключение
  • break: остановить выполнение запроса и вернуть частичный результат
  • any: продолжить агрегацию для ключей, попавших в набор, но не добавлять в него новые ключи.
Использование значения any позволяет выполнить приблизительный вариант GROUP BY. Качество этого приближения зависит от статистической природы данных.

group_by_top_k_optimization_observation_rows

Для enable_group_by_top_k_optimization: количество строк, наблюдаемых каждым потоком агрегации перед заморозкой полной кучи top-K, которая пропустила менее 10 % входных строк и вытеснила меньше ключей, чем её вместимость. Замороженная куча означает, что агрегация продолжается так, как если бы оптимизация была отключена. Фактическое окно как минимум вдвое превышает зарезервированный размер кучи, поэтому куча всегда успевает заполниться до оценки. 0 отключает эту заморозку (куча всё равно замораживается, если граничный набор равных значений разрастается сверх её размера). Это не влияет на запросы GROUP BY keys LIMIT K без ORDER BY, для которых заморозка всегда отключена: план такого запроса содержит синтезированную сортировку, которая оправдана лишь пока куча ограничивает хеш-таблицу, поэтому заморозка кучи сделала бы план медленнее, чем без оптимизации.

group_by_top_k_optimization_shared_boundary

Для enable_group_by_top_k_optimization: делает самую жёсткую границу пропуска общей для всех потоков агрегации. Каждый поток публикует границу своего Set top-K раз в обработанный блок, если эта граница стала жёстче, а все потоки пропускают строки по лучшей из опубликованных границ, а не только по собственной. Если существует Set из K ключей, строго лучших, чем строка, это доказывает, что строка не может попасть в итоговый результат, независимо от того, в каком потоке находятся эти ключи. Поэтому общий доступ к границе не влияет на результат: он лишь позволяет потокам с низкоранговыми локальными ключами (например, когда значения ключей сгруппированы в отдельных частях таблицы) пропускать строки, которые иначе были бы агрегированы впустую. Возможные значения:
  • 0 — отключено.
  • 1 — включено.

group_by_two_level_threshold

При каком количестве ключей начинается двухуровневая агрегация. 0 — порог не задан.

group_by_two_level_threshold_bytes

Минимальный размер состояния агрегации в байтах, при котором начинает использоваться двухуровневая агрегация. 0 — порог не задан. Двухуровневая агрегация используется, когда срабатывает хотя бы один из порогов.

group_by_use_nulls

Изменяет способ обработки типов ключей агрегации в секции GROUP BY. Когда используются спецификаторы ROLLUP, CUBE или GROUPING SETS, некоторые ключи агрегации могут не участвовать в формировании отдельных строк результата. Столбцы для этих ключей в соответствующих строках заполняются либо значением по умолчанию, либо NULL — в зависимости от этой настройки. Возможные значения:
  • 0 — Для заполнения отсутствующих значений используется значение по умолчанию для типа ключа агрегации.
  • 1 — ClickHouse выполняет GROUP BY в соответствии со стандартом SQL. Типы ключей агрегации преобразуются в Nullable. Столбцы соответствующих ключей агрегации заполняются значением NULL в строках, где эти ключи не использовались.
См. также: