Эти настройки доступны в system.settings и автоматически генерируются на основе исходного кода.
prefer_column_name_to_alias
Включает или отключает использование исходных имен столбцов вместо псевдонимов в выражениях запроса и секциях. Это особенно важно, когда псевдоним совпадает с именем столбца, см. Псевдонимы выражений. Включите этот параметр, чтобы правила синтаксиса псевдонимов в ClickHouse лучше соответствовали правилам большинства других движков баз данных.
Возможные значения:
- 0 — Имя столбца заменяется псевдонимом.
- 1 — Имя столбца не заменяется псевдонимом.
Пример
Разница между включенным и выключенным состоянием:
Запрос:
SET prefer_column_name_to_alias = 0;
SELECT avg(number) AS number, max(number) FROM numbers(10);Результат:
Received exception from server (version 21.5.1):
Code: 184. DB::Exception: Received from localhost:9000. DB::Exception: Aggregate function avg(number) is found inside another aggregate function in query: While processing avg(number) AS number.Запрос:
SET prefer_column_name_to_alias = 1;
SELECT avg(number) AS number, max(number) FROM numbers(10);Результат:
┌─number─┬─max(number)─┐
│ 4.5 │ 9 │
└────────┴─────────────┘prefer_external_sort_block_bytes
История версий
| Версия | Значение по умолчанию | Комментарий |
|---|---|---|
| 24.5 | 16744704 | Предпочитать максимальный размер блока в байтах для внешней сортировки, чтобы уменьшить использование памяти при слиянии. |
Предпочитать максимальный размер блока в байтах для внешней сортировки, чтобы уменьшить использование памяти при слиянии.
prefer_global_in_and_join
Включает замену операторов IN/JOIN на GLOBAL IN/GLOBAL JOIN.
Возможные значения:
- 0 — Отключено. Операторы
IN/JOINне заменяются наGLOBAL IN/GLOBAL JOIN. - 1 — Включено. Операторы
IN/JOINзаменяются наGLOBAL IN/GLOBAL JOIN.
Использование
Хотя SET distributed_product_mode=global может изменить поведение запросов для распределённых таблиц, он не подходит для локальных таблиц или таблиц из внешних источников. В таких случаях используется настройка prefer_global_in_and_join.
Например, у нас есть узлы, обслуживающие запросы, с локальными таблицами, которые не подходят для распределения. Их данные нужно на лету разослать в ходе распределённой обработки с помощью ключевого слова GLOBAL — GLOBAL IN/GLOBAL JOIN.
Ещё один сценарий использования prefer_global_in_and_join — доступ к таблицам, созданным с помощью внешних движков. Эта настройка помогает сократить количество обращений к внешним источникам при JOIN таких таблиц: до одного вызова на запрос.
См. также:
- Распределённые подзапросы — дополнительная информация об использовании
GLOBAL IN/GLOBAL JOIN
prefer_localhost_replica
Включает или отключает предпочтительное использование реплики на localhost при обработке распределённых запросов.
Возможные значения:
- 1 — ClickHouse всегда отправляет запрос реплике на localhost, если она существует.
- 0 — ClickHouse использует стратегию балансировки, указанную в настройке load_balancing.
prefer_warmed_unmerged_parts_seconds
Действует только в ClickHouse Cloud. Если слитая часть была создана менее указанного числа секунд назад и не была предварительно прогрета (см. cache_populated_by_fetch), но все её исходные части доступны и предварительно прогреты, запросы SELECT будут читать данные из этих частей вместо неё. Только для Replicated-/SharedMergeTree. Обратите внимание, что здесь проверяется только то, была ли часть обработана CacheWarmer; если часть была загружена в кэш каким-либо другим способом, она всё равно будет считаться холодной, пока до неё не дойдёт CacheWarmer; если она была прогрета, а затем вытеснена из кэша, она всё равно будет считаться прогретой.