Эти настройки доступны в system.merge_tree_settings и автоматически генерируются из исходного кода ClickHouse.
map_buckets_coefficient
История версий
| Версия | Значение по умолчанию | Комментарий |
|---|---|---|
| 26.3 | 1 | Добавлена настройка для управления коэффициентом, используемым в стратегиях `sqrt` и `linear` для вычисления количества бакетов при сериализации `Map` `with_buckets` |
Коэффициент, используемый в стратегиях sqrt и linear настройки map_buckets_strategy для вычисления количества бакетов на основе среднего размера map.
Для стратегии sqrt: round(map_buckets_coefficient * sqrt(avg_map_size)).
Для стратегии linear: round(map_buckets_coefficient * avg_map_size).
Игнорируется, если map_buckets_strategy имеет значение constant.
map_buckets_min_avg_size
История версий
| Версия | Значение по умолчанию | Комментарий |
|---|---|---|
| 26.3 | 32 | Добавлена настройка для задания минимального среднего размера Map (количества ключей на строку), необходимого для применения сериализации `Map` `with_buckets` |
Минимальный средний размер Map (количество ключей на строку), необходимый для применения сериализации Map with_buckets.
Если средний размер Map меньше этого значения, используется один бакет независимо от других настроек бакетов.
Значение 0 отключает этот порог и всегда применяет стратегию разбиения по бакетам.
Эта настройка позволяет избежать накладных расходов сериализации Map по бакетам для небольших Map, где выигрыш незначителен.
map_buckets_strategy
История версий
| Версия | Значение по умолчанию | Комментарий |
|---|---|---|
| 26.3 | sqrt | Добавлена настройка, управляющая стратегией выбора количества бакетов для сериализации `Map` `with_buckets` |
Управляет стратегией выбора количества бакетов в сериализации with_buckets типа Map на основе среднего размера map.
Возможные значения:
- constant — Всегда использовать max_buckets_in_map как количество бакетов, независимо от среднего размера map.
- sqrt — Использовать
round(map_buckets_coefficient * sqrt(avg_map_size))как количество бакетов, ограниченное диапазоном[1, max_buckets_in_map]. - linear — Использовать
round(map_buckets_coefficient * avg_map_size)как количество бакетов, ограниченное диапазоном[1, max_buckets_in_map].