> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-revert-104359-revert-104251-parquet-single.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Настройки таблиц семейства MergeTree use_*

> Настройки таблиц семейства MergeTree в ClickHouse из сгенерированной группы use_*.

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Версия", "Значение по умолчанию", "Комментарий"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        История версий
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

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>;
};

Эти настройки доступны в [system.merge\_tree\_settings](/ru/reference/system-tables/merge_tree_settings) и автоматически генерируются на основе исходного кода ClickHouse.

<div id="use_adaptive_write_buffer_for_dynamic_subcolumns">
  ## use\_adaptive\_write\_buffer\_for\_dynamic\_subcolumns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Разрешает использовать адаптивные буферы записи при записи динамических подстолбцов, чтобы
снизить использование памяти

<div id="use_async_block_ids_cache">
  ## use\_async\_block\_ids\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Устаревшая настройка, не имеет эффекта.

<div id="use_compact_variant_discriminators_serialization">
  ## use\_compact\_variant\_discriminators\_serialization
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает компактный режим бинарной сериализации дискриминаторов в типе
данных Variant.
Этот режим позволяет использовать значительно меньше памяти для хранения дискриминаторов
в частях, если в основном используется один вариант или имеется много значений NULL.

<div id="use_const_adaptive_granularity">
  ## use\_const\_adaptive\_granularity
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Неконстантная адаптивная гранулярность (используемая по умолчанию, когда `index_granularity_bytes` не равно `0`) поддерживает
постоянный размер гранул в байтах, поэтому число строк в них различается: для каждого
записываемого блока число строк в грануле равно `index_granularity_bytes`, делённому на
средний размер строки в этом блоке, но не превышает `index_granularity`. Поскольку это значение различается
для разных гранул, число строк каждой гранулы в части необходимо хранить в
памяти — по 8 байт на гранулу; в больших таблицах это в сумме составляет десятки гигабайт.

При включении постоянной адаптивной гранулярности (этого параметра) число строк в гранулах, напротив, остаётся постоянным,
а их размер в байтах различается. Это число вычисляется один раз на основе среднего размера
строки в записываемой части, и в части хранится одно значение
вместо отдельного значения для каждой гранулы. Поскольку все гранулы содержат одинаковое число строк,
дополнительно хранить число строк для каждой гранулы не требуется.

Объём памяти, занимаемый этими значениями, отражается метрикой
`TotalIndexGranularityBytesInMemory` в `system.asynchronous_metrics`,
а для каждой части — в `system.parts.index_granularity_bytes_in_memory`.

Параметр применяется только к частям, записанным после его изменения. Используйте
[ALTER TABLE ... REWRITE PARTS](/ru/reference/statements/alter/partition#rewrite-parts),
чтобы применить его к существующим частям. Части `Compact` всегда используют адаптивную гранулярность.

<div id="use_metadata_cache">
  ## use\_metadata\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Устаревшая настройка, не имеет эффекта.

<div id="use_primary_key_cache">
  ## use\_primary\_key\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "новая настройка"}]}]} />

Использовать кэш для первичного индекса
вместо хранения всех индексов в памяти. Может быть полезно для очень больших таблиц
