> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Настройки сеанса iceberg_*

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

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Экспериментальная возможность
        </a>;
};

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.settings](/ru/reference/system-tables/settings) и автоматически генерируются на основе [исходного кода](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

## iceberg\_delete\_data\_on\_drop

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

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

Удалять ли все файлы Iceberg при drop.

## iceberg\_file\_entries\_queue\_size

<SettingsInfoBlock type="NonZeroUInt64" default_value="100" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "100"},{"label": "Новая настройка для ранее жёстко заданной ёмкости очереди между задачами декодирования манифеста данных Iceberg и запросом."}]}]} />

Ёмкость очереди между задачами декодирования манифеста данных Iceberg и запросом, измеряемая в записях файлов данных.

Задачи декодирования приостанавливаются, когда очередь заполнена, а запрос не читает из неё данные, поэтому эта настройка также ограничивает опережающее чтение.

Значение должно быть больше нуля.

## iceberg\_manifest\_decode\_concurrency

**Псевдонимы**: `iceberg_delete_manifest_decode_concurrency`

<SettingsInfoBlock type="NonZeroUInt64" default_value="4" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "4"},{"label": "Новая настройка, ограничивающая количество одновременно декодируемых Iceberg файлов манифеста — как delete-, так и манифестов данных. Она заменяет `iceberg_delete_manifest_decode_concurrency` (сохранён как псевдоним). Значение `2` примерно воспроизводит путь к данным до версии 26.9, где манифесты декодировались по одному, а fetch следующего уже был in-flight; поэтому при `compatibility` 26.8 или ниже декодирование delete-манифестов также выполняется с параллелизмом 2, а не со штатным значением по умолчанию 4 — это сохраняет прежний envelope потребления памяти на пути к данным ценой меньшего перекрытия при декодировании delete-манифестов."}]}]} />

Максимальное количество Iceberg файлов манифеста, декодируемых одновременно при чтении таблицы.

Все delete-манифесты декодируются до того, как будет прочитан хотя бы один файл данных; манифесты данных декодируются по ходу формирования списка файлов данных для запроса, причём новые декодируются только по мере того, как запрос обрабатывает уже декодированные entries. Одновременное декодирование нескольких манифестов позволяет совмещать round-trip к объектному хранилищу с работой по pruning для каждой entry.

Более высокие значения увеличивают пиковое потребление памяти, если кеш Iceberg metadata files отключён или заполнен, поскольку каждый находящийся in-flight манифест хранит собственное декодированное содержимое.

Значение должно быть больше нуля; при `1` манифесты декодируются по одному.

## iceberg\_manifest\_min\_count\_to\_compact

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="100" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "100"},{"label": "Приведено в соответствие с документированным значением по умолчанию свойства таблицы Iceberg `commit.manifest.min-count-to-merge` (100), см. https:\/\/iceberg.apache.org\/docs\/1.5.2\/configuration\/."}]}, {"id": "row-2","items": [{"label": "26.7"},{"label": "30"},{"label": "Новая настройка для управления компактацией файлов манифеста для таблиц Iceberg."}]}]} />

Минимальное количество файлов манифеста, необходимое для запуска компактации только файлов манифеста через OPTIMIZE TABLE ... MANIFEST.
Если текущее количество файлов манифеста меньше или равно этому порогу, компактация пропускается.
Необходимо, чтобы был включен allow\_experimental\_iceberg\_compaction.

Значение по умолчанию соответствует документированному значению по умолчанию свойства таблицы Iceberg `commit.manifest.min-count-to-merge` (100),
см. [https://iceberg.apache.org/docs/1.5.2/configuration/](https://iceberg.apache.org/docs/1.5.2/configuration/).

## iceberg\_max\_number\_datafiles\_to\_compact

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

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

Пороговое значение для файлов данных, участвующих в компактации, в Iceberg.

## iceberg\_orphan\_files\_older\_than\_seconds

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="259200" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "259200"},{"label": "Новая настройка: пороговое значение возраста файлов-сирот по умолчанию"}]}]} />

Пороговое значение возраста по умолчанию в секундах для удаления файлов-сирот в таблицах Iceberg. Файлы новее этого значения не считаются сиротами. Используется, если в вызове процедуры remove\_orphan\_files() опущен аргумент older\_than. Значение по умолчанию — 259200 (3 дня).

## iceberg\_snapshot\_id

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

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

Выполняет запрос к таблице Iceberg по указанному идентификатору снимка.

## iceberg\_timestamp\_ms

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

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

Выполняет запрос к таблице Iceberg, используя снимок, актуальный для указанной временной метки.

## iceberg\_tolerate\_conflicting\_manifest\_schemas

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.10"},{"label": "1"},{"label": "Новая настройка: если заголовок файла манифеста Iceberg содержит схему, конфликтующую со схемой, зарегистрированной для того же schema-id в metadata.json, использовать схему из metadata.json и записывать предупреждение в лог вместо аварийного завершения запроса — так же, как это делают другие движки запросов. Значение `compatibility` ниже 26.10 возвращает прежнее строгое поведение."}]}]} />

Если настройка включена и ключ `schema` в заголовке файла манифеста Iceberg содержит схему, отличающуюся от схемы, уже зарегистрированной для того же schema-id из metadata.json, используется схема из metadata.json, а копия из заголовка manifest игнорируется с выводом предупреждения. Если настройка отключена, такой конфликт завершает запрос с ошибкой ICEBERG\_SPECIFICATION\_VIOLATION.

Схема в заголовке manifest — это лишь копия схемы таблицы на момент записи manifest, и известны случаи, когда некоторые пишущие стороны (например, обслуживающие задачи AWS S3 Tables) сохраняли там неполноценные копии. Другие движки запросов берут схемы из metadata.json и игнорируют расходящиеся копии из заголовков, поэтому поведение по умолчанию соответствует их логике. Конфликт между двумя определениями схем в самом metadata.json по-прежнему всегда приводит к ошибке запроса.
