> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Настройки сервера columns_cache_*

> Настройки сервера ClickHouse из автоматически сгенерированной группы columns_cache_*.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Тип</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>По умолчанию</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Изменяется без перезапуска
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Эти настройки определяют конфигурацию сервера ClickHouse и генерируются автоматически на основе исходного кода ClickHouse.

<h2 id="columns_cache_free_memory_ratio">
  columns\_cache\_free\_memory\_ratio
</h2>

<SettingsInfoBlock type="Double" default_value="0.15" changeable_without_restart="No" />

Доля лимита памяти сервера (`max_server_memory_usage`), которую кэш столбцов оставляет свободной для запросов.

Память кэша учитывается в том же лимите, что и память запросов, поэтому фактический размер кэша уменьшается,
пока остальные компоненты сервера потребляют больше, чем `max_server_memory_usage * (1 - columns_cache_free_memory_ratio) - columns_cache_size`,
и снова возвращается к `columns_cache_size`, когда это потребление снижается. Кроме того, при выделении памяти, которое привело бы к превышению лимита, данные сначала вытесняются
из кэша и лишь затем запрос останавливается. Аналогично `page_cache_free_memory_ratio`.

Действующий лимит отображается в `CurrentMetrics.ColumnsCacheSizeLimit`, тогда как `system.server_settings` по-прежнему показывает
заданное в конфигурации значение `columns_cache_size`.

<h2 id="columns_cache_history_window_ms">
  columns\_cache\_history\_window\_ms
</h2>

<SettingsInfoBlock type="UInt64" default_value="1000" changeable_without_restart="No" />

Определяя допустимый для себя объём памяти, кэш столбцов учитывает пиковое потребление памяти остальной частью сервера за указанное количество миллисекунд (и за такое же предшествующее
окно). Благодаря этому кратковременный спад потребления памяти не приводит к тому, что кэш разрастается,
а через мгновение его данные снова вытесняются. Аналогично `page_cache_history_window_ms`.

<h2 id="columns_cache_policy">
  columns\_cache\_policy
</h2>

<SettingsInfoBlock type="String" default_value="SLRU" changeable_without_restart="No" />Название политики кэша столбцов.

<h2 id="columns_cache_size">
  columns\_cache\_size
</h2>

<SettingsInfoBlock type="UInt64" default_value="2147483648" changeable_without_restart="Yes" />

Максимальный размер (в байтах) кэша столбцов, в котором хранятся десериализованные столбцы из таблиц семейства MergeTree.

Кэш столбцов избавляет от повторной декомпрессии и десериализации часто запрашиваемых столбцов.
Кэш используется, если включён параметр уровня запроса `use_columns_cache`.

Если этот параметр не задан в конфигурации сервера, размер кэша составляет долю `columns_cache_size_to_ram_ratio`
от доступной серверу памяти (по умолчанию 10%), поэтому на сервере с большим объёмом памяти кэш оказывается достаточно большим,
чтобы вместить рабочий набор более тяжёлых запросов. Встроенное значение этого параметра используется, только если объём
памяти определить не удаётся. Как и для других кэшей, размер ограничен значением `cache_size_to_ram_max_ratio`.

Ограничение распространяется на память, удерживаемую кэшем: для каждой записи учитывается выделенный размер её столбца,
который может превышать логический размер содержащихся в нём строк, а также небольшие накладные расходы на саму запись. `system.columns_cache`
показывает ту же величину для каждой записи, а `CurrentMetrics.ColumnsCacheBytes` — её суммарное значение.

`system.server_settings` показывает значение этого параметра в том виде, в каком оно задано в конфигурации. Фактически действующее ограничение может быть ниже, когда
остальной части сервера не хватает памяти (см. `columns_cache_free_memory_ratio`); это значение публикуется отдельно
как `CurrentMetrics.ColumnsCacheSizeLimit`.

<Note>
  Значение `0` означает, что кэш отключён.

  Этот параметр можно изменять во время работы сервера, изменения вступают в силу немедленно.
</Note>

<h2 id="columns_cache_size_ratio">
  columns\_cache\_size\_ratio
</h2>

<SettingsInfoBlock type="Double" default_value="0.5" changeable_without_restart="No" />Доля размера защищённой очереди (при использовании политики SLRU) в кэше столбцов относительно общего размера кэша.

<h2 id="columns_cache_size_to_ram_ratio">
  columns\_cache\_size\_to\_ram\_ratio
</h2>

<SettingsInfoBlock type="Double" default_value="0.1" changeable_without_restart="No" />

Размер кэша столбцов в виде доли памяти, доступной серверу. Используется, если `columns_cache_size`
не задан в конфигурации сервера: тогда размер кэша вычисляется как эта доля оперативной памяти (с учётом
ограничения `cache_size_to_ram_max_ratio`). Благодаря этому на крупном сервере кэш способен вместить рабочий набор данных для более тяжёлых запросов,
а небольшой сервер отдаёт под него лишь малую часть своей памяти. Память выделяется только по мере необходимости и только тогда, когда
запросы выполняются с включённой настройкой `use_columns_cache`.

Значение `0` отключает кэш, если только `columns_cache_size` не задан явно.
