> ## 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.

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

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

export const PrivatePreviewBadge = () => {
  return <div className="privatePreviewBadge">
            <div className="privatePreviewIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M5.33301 6.66667V4.66667V4.66667C5.33301 3.194 6.52701 2 7.99967 2V2C9.47234 2 10.6663 3.194 10.6663 4.66667V4.66667V6.66667" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path d="M8.00033 9.33337V11.3334" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path fillRule="evenodd" clipRule="evenodd" d="M11.333 14H4.66634C3.92967 14 3.33301 13.4033 3.33301 12.6666V7.99996C3.33301 7.26329 3.92967 6.66663 4.66634 6.66663H11.333C12.0697 6.66663 12.6663 7.26329 12.6663 7.99996V12.6666C12.6663 13.4033 12.0697 14 11.333 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'Закрытая предварительная версия'}
        </div>;
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Бета</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Возможность в статусе бета</span>
        </a>;
};

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).

## enable\_adaptive\_aggregator

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Новая настройка для включения адаптивной агрегации `GROUP BY`: локальная хеш-таблица каждого потока замораживается по достижении `adaptive_aggregator_freeze_threshold` ключей, благодаря чему частые ключи продолжают агрегироваться в небольших локальных таблицах, а редкие ключи по хешу направляются в очереди отдельных бакетов и агрегируются ровно один раз при параллельном слиянии по бакетам; редкие ключи хранятся и обрабатываются один раз, а не по одному разу для каждого потока."}]}]} />

Включает адаптивный алгоритм `GROUP BY`: каждый поток агрегирует данные в локальную хеш-таблицу, пока число ключей не достигнет `adaptive_aggregator_freeze_threshold` (или объём памяти не достигнет `adaptive_aggregator_freeze_threshold_bytes`), после чего таблица замораживается. Строки уже встречавшихся (частых) ключей продолжают обновляться в этой таблице, а новые (редкие) ключи по хешу направляются в очереди отдельных бакетов и агрегируются ровно один раз при параллельном слиянии по бакетам. Частые ключи остаются в небольших таблицах, помещающихся в кэше, а редкие ключи хранятся и обрабатываются один раз, а не по одному разу для каждого потока.

Настройки внешней агрегации (`max_bytes_before_external_group_by`, `max_bytes_ratio_before_external_group_by`) учитываются: после превышения порога очереди заранее переносятся в общую таблицу, а если этого недостаточно для возврата ниже порога, общая таблица выгружается на диск с помощью обычной внешней агрегации.

## enable\_adaptive\_memory\_spill\_scheduler

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "Новая настройка. Включает адаптивную выгрузку данных из памяти во внешнее хранилище."}]}]} />

Включает адаптивную выгрузку данных из памяти во внешнее хранилище. На данный момент поддерживаются hash join, способные выгружать данные на диск: как `grace_hash`, так и адаптивный путь `hash` / `parallel_hash`.

## enable\_add\_distinct\_to\_in\_subqueries

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Новая настройка, уменьшающая размер временных таблиц, передаваемых для распределённых подзапросов IN."}]}]} />

Включает `DISTINCT` в подзапросах `IN`. Это компромиссная настройка: при включении она может значительно уменьшить размер временных таблиц, передаваемых для распределённых подзапросов `IN`, и существенно ускорить передачу данных между сегментами, поскольку отправляются только уникальные значения.
Однако включение этой настройки требует дополнительных затрат на слияние на каждом узле, так как необходимо выполнять дедупликацию (`DISTINCT`). Используйте эту настройку, если передача данных по сети является узким местом, а дополнительные затраты на слияние допустимы.

## enable\_alp\_codec

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Новая настройка, позволяющая отдельно включить экспериментальный кодек сжатия `ALP` без `allow_experimental_codecs`."}]}]} />

Включает кодек сжатия `ALP`.

## enable\_automatic\_decision\_for\_merging\_across\_partitions\_for\_final

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

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

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

Столбцы ключа с плавающей запятой исключаются из этого вывода. Компаратор `FINAL` менее строг, чем
тождественность значений, для `Float32`, `Float64` и `BFloat16`: `-0.0` считается равным `0.0`, а любое битовое представление `NaN`
считается равным любому другому. Выражение партиционирования способно различить именно такие значения, поэтому строки, которые компаратор считает
одним ключом, могут попасть в разные партиции, и пропуск слияния между партициями вернет их все.
Это исключение действует и тогда, когда число с плавающей запятой вложено в столбец ключа, например `Tuple(Float64, UInt8)`
или `Array(Float64)`.

## enable\_cascades\_optimizer

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Новая экспериментальная настройка."}]}]} />

Включает оптимизатор Cascades, основанный на оценке стоимости, для распределённых планов запросов.
Настройка действует только вместе с `make_distributed_plan = 1`; сама по себе она не влияет на планирование запросов на одном узле.

## enable\_early\_constant\_folding

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

Включает оптимизацию запроса: анализируются результаты функций и подзапросов, и при наличии в них констант запрос переписывается

## enable\_extended\_results\_for\_datetime\_functions

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

Включает или отключает возврат результатов типа `Date32` с расширенным диапазоном значений (по сравнению с типом `Date`)
или `DateTime64` с расширенным диапазоном значений (по сравнению с типом `DateTime`).

Возможные значения:

* `0` — Функции возвращают `Date` или `DateTime` для аргументов всех типов.
* `1` — Функции возвращают `Date32` или `DateTime64` для аргументов типа `Date32` или `DateTime64`, а в остальных случаях — `Date` или `DateTime`.

В таблице ниже показано, как эта настройка влияет на поведение различных функций даты и времени.

| Функция | `enable_extended_results_for_datetime_functions = 0` | `enable_extended_results_for_datetime_functions = 1` |
| - | - | - |
| `toStartOfYear` | Возвращает `Date` или `DateTime` | Возвращает `Date`/`DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `Date32`/`DateTime64` для входных значений `Date32`/`DateTime64` |
| `toStartOfISOYear` | Возвращает `Date` или `DateTime` | Возвращает `Date`/`DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `Date32`/`DateTime64` для входных значений `Date32`/`DateTime64` |
| `toStartOfQuarter` | Возвращает `Date` или `DateTime` | Возвращает `Date`/`DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `Date32`/`DateTime64` для входных значений `Date32`/`DateTime64` |
| `toStartOfMonth` | Возвращает `Date` или `DateTime` | Возвращает `Date`/`DateTime` при вводе `Date`/`DateTime`<br />Возвращает `Date32`/`DateTime64` при вводе `Date32`/`DateTime64` |
| `toStartOfWeek` | Возвращает `Date` или `DateTime` | Возвращает `Date`/`DateTime` для аргументов `Date`/`DateTime`<br />Возвращает `Date32`/`DateTime64` для аргументов `Date32`/`DateTime64` |
| `toLastDayOfWeek` | Возвращает `Date` или `DateTime` | Возвращает `Date`/`DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `Date32`/`DateTime64` для входных значений `Date32`/`DateTime64` |
| `toLastDayOfMonth` | Возвращает `Date` или `DateTime` | Возвращает `Date`/`DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `Date32`/`DateTime64` для входных значений `Date32`/`DateTime64` |
| `toMonday` | Возвращает `Date` или `DateTime` | Возвращает `Date`/`DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `Date32`/`DateTime64` для входных значений `Date32`/`DateTime64` |
| `toStartOfDay` | Возвращает `DateTime`<br />*Note: Некорректные результаты для значений за пределами диапазона 1970–2149* | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64` |
| `toStartOfHour` | Возвращает `DateTime`<br />*Note: Некорректные результаты для значений за пределами диапазона 1970–2149* | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64` |
| `toStartOfFifteenMinutes` | Возвращает `DateTime`<br />*Note: Некорректные результаты для значений вне диапазона 1970–2149* | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64` |
| `toStartOfTenMinutes` | Возвращает `DateTime`<br />*Примечание: неправильные результаты для значений вне диапазона 1970–2149* | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64` |
| `toStartOfFiveMinutes` | Возвращает `DateTime`<br />*Note: Неверные результаты для значений вне диапазона 1970-2149* | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64` |
| `toStartOfMinute` | Возвращает `DateTime`<br />*Note: Некорректные результаты для значений вне диапазона 1970–2149* | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64` |
| `timeSlot` | Возвращает `DateTime`<br />*Примечание: неверные результаты для значений за пределами диапазона 1970–2149* | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64` |

## enable\_full\_text\_index

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Текстовый индекс теперь имеет статус GA"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "Текстовый индекс переведён в статус бета."}]}]} />

Если установлено значение true, разрешает использование текстового индекса.

## enable\_function\_early\_short\_circuit

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

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

Включает раннюю свёртку констант с коротким замыканием для `and` и `or` на этапе анализа запроса.
Если параметр включен, подходящие недостижимые ветви со скалярными подзапросами анализируются для сохранения их типов и проверки семантики запроса, но не выполняются. Если требуются скалярная мощность или значения времени выполнения, оптимизация переключается на обычный анализ.

## enable\_funnel\_functions

<ExperimentalBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Добавлен псевдоним для настройки `allow_experimental_funnel_functions`."}]}]} />

Включает функции для воронкового анализа.

## enable\_global\_with\_statement

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.2"},{"label": "1"},{"label": "По умолчанию распространяет операторы WITH на запросы UNION и все подзапросы"}]}]} />

Распространяет операторы WITH на запросы UNION и все подзапросы

## enable\_group\_by\_top\_k\_optimization

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Новая настройка для управления оптимизацией фильтрации TopK при агрегации в запросах `GROUP BY key ORDER BY key LIMIT N`."}]}]} />

Включает оптимизацию фильтрации TopK при агрегации в запросах `GROUP BY keys ORDER BY <prefix of keys> LIMIT K`, а также в запросах `GROUP BY keys LIMIT K` без `ORDER BY` (в этом случае допустим любой набор из `K` групп, поэтому синтезируется сортировка по всем ключам).

Когда параметр включен, агрегатор поддерживает ограниченную кучу из `K` лучших ключей, найденных к текущему моменту, и не вставляет новые строки в хеш-таблицу, если их ключ группировки не может попасть в итоговый результат. Это позволяет избежать агрегации строк, которые будут отброшены последующим `ORDER BY ... LIMIT`. Если куча ранжирует полный ключ `GROUP BY`, она также удаляет вытесненные группы из промежуточной хеш-таблицы, ограничивая ее размер значением `LIMIT`, а не числом различных ключей. Если `ORDER BY` охватывает только собственный префикс ключей `GROUP BY`, ранжирование не позволяет определить полную группу, поэтому применяется только пропуск строк: хеш-таблица хранит все допущенные группы и все еще может расти с увеличением мощности оставшихся столбцов ключа.

Оптимизация отключается, если запрошенный `LIMIT` превышает [query\_plan\_max\_limit\_for\_top\_k\_optimization](/ru/reference/settings/session-settings/query-plan#query_plan_max_limit_for_top_k_optimization) или жесткий предел `100000`, поскольку потребление памяти и CPU кучей растет с увеличением запрошенного `LIMIT`.

Оптимизация не применяется к формам запросов, в которых удаление групп может изменить результат, включая `WITH TOTALS`, `HAVING`, `QUALIFY`, оконные функции, `ROLLUP`/`CUBE`/`GROUPING SETS`, `LIMIT WITH TIES`, `COLLATE` для любого из сопоставленных ключей `GROUP BY` (`COLLATE` для более позднего столбца `ORDER BY` после полного префикса ключа не влияет на то, какие группы попадут в результат, поэтому не отключает оптимизацию), `ORDER BY` по агрегату или по чему-либо, что не является начальным префиксом ключей `GROUP BY`, а также запросы, в которых задан `max_rows_to_group_by` или `exact_rows_before_limit`.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

## enable\_hash\_join\_row\_store

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

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

Включает преобразование полезной нагрузки hash JOIN в построчный формат.

## enable\_hdfs\_pread

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

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

Включает или отключает использование `pread` для файлов HDFS. По умолчанию используется `hdfsPread`. Если параметр отключен, для чтения файлов HDFS используются `hdfsRead` и `hdfsSeek`.

## enable\_http\_compression

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "В целом должно быть полезно"}]}]} />

Включает или отключает сжатие данных в ответе на HTTP-запрос.

Дополнительные сведения см. в [описании HTTP-интерфейса](/ru/concepts/features/interfaces/http).

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

## enable\_identifier\_resolve\_cache

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

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

Включает кэш разрешения идентификаторов в анализаторе запросов. Кэш повторно использует уже разрешённые узлы псевдонимов, чтобы предотвратить разрастание AST, когда на один и тот же псевдоним ссылаются несколько раз. Установите `false`, чтобы отключить кэширование, если есть подозрение на некорректные результаты.

## enable\_job\_stack\_trace

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Параметр по умолчанию отключён, чтобы избежать снижения производительности."}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "0"},{"label": "Включает сбор трассировок стека при планировании задачи. По умолчанию отключён, чтобы избежать снижения производительности."}]}]} />

Выводит трассировку стека создателя задачи, если при выполнении задачи возникает исключение. По умолчанию отключён, чтобы избежать снижения производительности.

## enable\_json\_ast\_dialect

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Новая настройка, включающая значение `clickhouse_json` для настройки `dialect`, при котором запросы интерпретируются как JSON AST (результат `parseQueryToJSON`), а не как текст SQL."}]}]} />

Включает значение `clickhouse_json` для настройки `dialect`.

Если для `dialect` установлено значение `clickhouse_json`, запросы интерпретируются как JSON AST
(результат `parseQueryToJSON`), а не как текст SQL. Запрос `SET` по-прежнему
разбирается как обычный SQL, чтобы можно было переключить диалект обратно.

Пример:

```sql theme={null}
SET enable_json_ast_dialect = 1;
SET dialect = 'clickhouse_json';

-- Subsequent queries are parsed as JSON ASTs:
{"type":"SelectWithUnionQuery", ...}
```

## enable\_json\_lazy\_type\_hints

<BetaBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Добавлен псевдоним для настройки `allow_experimental_json_lazy_type_hints`."}]}, {"id": "row-2","items": [{"label": "26.9"},{"label": "0"},{"label": "Ленивые подсказки типов JSON теперь в статусе бета. Псевдоним для настройки 'allow_experimental_json_lazy_type_hints'."}]}]} />

Включает ленивые подсказки типов для типа [JSON](/ru/reference/data-types/newjson).

Когда эта настройка включена, запрос `ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)`, который лишь добавляет или изменяет
подсказки типов, выполняется только над метаданными: для существующих частей подсказки типов применяются во время выполнения запроса и
материализуются при вставках и фоновых слияниях, а не за счёт перезаписи исторических данных.

## enable\_lazy\_columns\_replication

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "По умолчанию включить отложенную репликацию столбцов в JOIN и ARRAY JOIN"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Добавить настройку для включения отложенной репликации столбцов в JOIN и ARRAY JOIN"}]}]} />

Включает отложенную репликацию столбцов в `JOIN`, `ARRAY JOIN` и захватах лямбда-выражений функций высшего порядка (например, `arrayMap`), что позволяет избежать многократного ненужного копирования одних и тех же строк в памяти.

## enable\_materialized\_cte

<ExperimentalBadge />

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

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

Включает материализованные общие табличные выражения (CTE) (`WITH <name> AS MATERIALIZED (<subquery>)`).
Если настройка включена, CTE, объявленное как `MATERIALIZED` и используемое более одного раза, выполняется однократно и сохраняется во временной таблице, а все обращения читают данные из этой таблицы. CTE, к которому обращаются лишь один раз, встраивается как обычное CTE, чтобы избежать накладных расходов.
Если настройка отключена, ключевое слово `MATERIALIZED` игнорируется: CTE встраивается при каждом обращении как обычное CTE, а в лог записывается предупреждение.

## enable\_materialized\_postgresql\_table

<ExperimentalBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Добавлен псевдоним для настройки `allow_experimental_materialized_postgresql_table`."}]}]} />

Позволяет использовать движок таблицы `MaterializedPostgreSQL`.

## enable\_memory\_bound\_merging\_of\_aggregation\_results

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

Включает стратегию слияния результатов агрегации с ограничением по памяти.

## enable\_multiple\_prewhere\_read\_steps

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

Перемещает больше условий из WHERE в PREWHERE и выполняет чтение с диска и фильтрацию в несколько этапов, если есть несколько условий, объединённых оператором побитового И

## enable\_named\_columns\_in\_function\_tuple

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Генерировать именованные Tuple в функции tuple(), если все имена уникальны и могут использоваться как идентификаторы без кавычек."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Отключено до улучшения удобства использования"}]}]} />

Генерировать именованные Tuple в функции tuple(), если все имена уникальны и могут использоваться как идентификаторы без кавычек.

## enable\_nullable\_tuple\_type

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "`Nullable(Tuple)` теперь GA"}]}, {"id": "row-2","items": [{"label": "26.6"},{"label": "0"},{"label": "Nullable Tuple теперь в статусе бета. Добавлен как псевдоним для 'allow_experimental_nullable_tuple_type'."}]}]} />

Разрешает создание в таблицах столбцов типа [Nullable](/ru/reference/data-types/nullable) [Tuple](/ru/reference/data-types/tuple).

Эта настройка не определяет, могут ли извлечённые подстолбцы tuple быть `Nullable` (например, из столбцов Dynamic, Variant, JSON или Tuple).
Для управления тем, могут ли извлечённые подстолбцы tuple быть `Nullable`, используйте `allow_nullable_tuple_in_extracted_subcolumns`.

## enable\_order\_by\_all

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

Включает или отключает сортировку с использованием синтаксиса `ORDER BY ALL`, см. [ORDER BY](/ru/reference/statements/select/order-by).

Возможные значения:

* 0 — Отключает ORDER BY ALL.
* 1 — Включает ORDER BY ALL.

**Пример**

Запрос:

```sql theme={null}
CREATE TABLE TAB(C1 Int, C2 Int, ALL Int) ENGINE=Memory();

INSERT INTO TAB VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);

SELECT * FROM TAB ORDER BY ALL; -- returns an error that ALL is ambiguous

SELECT * FROM TAB ORDER BY ALL SETTINGS enable_order_by_all = 0;
```

Результат:

```text theme={null}
┌─C1─┬─C2─┬─ALL─┐
│ 20 │ 20 │  10 │
│ 30 │ 10 │  20 │
│ 10 │ 20 │  30 │
└────┴────┴─────┘
```

## enable\_packed\_string\_keys\_in\_aggregation

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Новая настройка для включения и отключения хеш-таблицы на основе `PackedStringRef` для GROUP BY с одним ключом типа `String`. previous_value=false, поэтому `compatibility` с версиями до 26.8 восстанавливает устаревший метод на основе `StringHashTable`, включая его двухуровневое разбиение на бакеты."}]}]} />

Используйте хеш-таблицу с ключами в виде 16-байтных упакованных ссылок на строки (`PackedStringRef`) для `GROUP BY` с одним ключом типа `String`, не допускающим NULL. Ключи длиной до 11 байт хранятся непосредственно в упакованной ссылке; для более длинных ключей используются ссылки на arena.
Этот метод быстрее для большинства рабочих нагрузок, но может быть медленнее устаревшего при `GROUP BY` с очень небольшим числом различных ключей длиннее 11 байт (особенно длиной 12..24 байта): устаревшая хеш-таблица хранит ключи непосредственно в ячейке, а упакованная при каждой проверке разыменовывает указатель на arena.
При отключении используется устаревший метод на основе `StringHashTable` (использовавшийся по умолчанию до версии 26.8).

Все серверы, участвующие в распределённом запросе, должны использовать одинаковое значение: при `distributed_aggregation_memory_efficient` номера двухуровневых бакетов зависят от хеша ключа, который различается для этих двух методов. Поэтому серверы с разными значениями этой настройки могут распределить один и тот же ключ по разным бакетам и сформировать некорректно слитый результат. Чтобы гарантировать согласованность, инициатор всегда отправляет своё фактическое значение вместе со вторичными запросами (даже если оно задано только значениями по умолчанию сервера или профиля), переопределяя собственные значения по умолчанию удалённых серверов.

## enable\_parsing\_to\_custom\_serialization

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

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

Если значение равно true, данные можно напрямую разбирать в столбцы с пользовательской сериализацией (например, Sparse) в соответствии с подсказками по сериализации, полученными из таблицы.

## enable\_producing\_buckets\_out\_of\_order\_in\_aggregation

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

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

Разрешает агрегированию с эффективным использованием памяти (см. `distributed_aggregation_memory_efficient`) выдавать бакеты не по порядку.
Это может повысить производительность при неравномерном распределении размеров бакетов, так как реплика может отправлять инициатору бакеты с более высокими идентификаторами, пока ещё обрабатывает тяжёлые бакеты с более низкими идентификаторами.
Недостаток — потенциально более высокое использование памяти.

## enable\_quantized\_codec

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Новая настройка для отдельного включения экспериментального кодека сжатия `Quantized` без `allow_experimental_codecs`."}]}]} />

Включает кодек сжатия `Quantized`.

## enable\_reads\_from\_query\_cache

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

Если параметр включен, результаты `SELECT`-запросов берутся из [кэша запросов](/ru/concepts/features/performance/caches/query-cache).

Возможные значения:

* 0 - Отключено
* 1 - Включено

## enable\_s3\_requests\_logging

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

Включает максимально подробное логирование запросов к S3. Имеет смысл только для отладки.

## enable\_scalar\_subquery\_optimization

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.18"},{"label": "1"},{"label": "Предотвращает (де)сериализацию больших скалярных значений в скалярных подзапросах и в некоторых случаях позволяет избежать повторного выполнения одного и того же подзапроса"}]}]} />

Если параметр имеет значение true, предотвращается (де)сериализация больших скалярных значений в скалярных подзапросах, а в некоторых случаях удаётся избежать повторного выполнения одного и того же подзапроса.

## enable\_scopes\_for\_with\_statement

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "Новая настройка для обратной совместимости со старым анализатором."}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "1"},{"label": "Новая настройка для обратной совместимости со старым анализатором."}]}, {"id": "row-3","items": [{"label": "25.5"},{"label": "1"},{"label": "Новая настройка для обратной совместимости со старым анализатором."}]}, {"id": "row-4","items": [{"label": "25.4"},{"label": "1"},{"label": "Новая настройка для обратной совместимости со старым анализатором."}]}]} />

Если отключено, объявления в родительских предложениях WITH будут иметь ту же область видимости, как если бы они были объявлены в текущей области видимости.

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

## enable\_shared\_storage\_snapshot\_in\_query

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Новая настройка для совместного использования StorageSnapshot в запросе"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "Совместное использование StorageSnapshot в запросе включено по умолчанию"}]}]} />

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

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

```sql theme={null}
SELECT
    count()
FROM events
WHERE (_part, _part_offset) IN (
    SELECT _part, _part_offset
    FROM events
    WHERE user_id = 42
)
```

Без этой настройки внешние и внутренние запросы могут работать с разными снимками данных, что может приводить к некорректным результатам.

Возможные значения:

* 0 - Отключено
* 1 - Включено

## enable\_sharing\_sets\_for\_mutations

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

Разрешает совместно использовать объекты Set, созданные для подзапросов IN, в разных задачах одной мутации. Это снижает использование памяти и потребление CPU

## enable\_streaming\_queries

<ExperimentalBadge />

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

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

Разрешает непрерывные запросы `SELECT ... FROM t STREAM [CURSOR '{...}']`.
Если настройка отключена, любое табличное выражение, использующее модификатор `STREAM`, отклоняется
на этапе построения плана выполнения. Это основной переключатель для
возможности стриминг-запросов; дополнительные возможности могут управляться
собственными настройками.

## enable\_sz3\_codec

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Новая настройка для отдельного включения экспериментального кодека сжатия `SZ3` без включения `allow_experimental_codecs`."}]}]} />

Включает кодек сжатия `SZ3`.

## enable\_time\_series\_aggregate\_functions

<PrivatePreviewBadge />

**Псевдонимы**: `allow_experimental_ts_to_grid_aggregate_function`, `allow_experimental_time_series_aggregate_functions`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Агрегатные функции `timeSeries*` переведены на уровень закрытой предварительной версии. Добавлен псевдоним для настройки `allow_experimental_time_series_aggregate_functions`."}]}]} />

Включает агрегатные функции `timeSeries*` для передискретизации временных рядов в стиле Prometheus, а также для вычисления rate и delta.

## enable\_time\_series\_table

<PrivatePreviewBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Движок таблицы `TimeSeries` и диалект `promql` переведены на уровень закрытой предварительной версии. Добавлен псевдоним для настройки `allow_experimental_time_series_table`."}]}]} />

Разрешает создание таблиц с движком таблицы [TimeSeries](/ru/reference/engines/table-engines/integrations/time-series). Возможные значения:

* 0 — движок таблицы [TimeSeries](/ru/reference/engines/table-engines/integrations/time-series) отключён.
* 1 — движок таблицы [TimeSeries](/ru/reference/engines/table-engines/integrations/time-series) включён.

## enable\_time\_time64\_type

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Новая настройка. Позволяет использовать новые экспериментальные типы данных Time и Time64."}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "Типы Time и Time64 включены по умолчанию"}]}]} />

Позволяет создавать типы данных [Time](/ru/reference/data-types/time) и [Time64](/ru/reference/data-types/time64).

## enable\_trino\_dialect

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Новая настройка, включающая значение `trino` для настройки `dialect`, которое транслирует SQL-синтаксис Trino и сопоставляет имена функций Trino с эквивалентами ClickHouse."}]}]} />

Включает значение `trino` для настройки `dialect`.

Когда `dialect` имеет значение `trino`, запросы пишутся на Trino SQL: специфичный
для Trino синтаксис (литералы `ARRAY[...]`, `TRY_CAST`, `UNNEST`, типы `ROW`, `OFFSET` перед `LIMIT`)
транслируется в ClickHouse SQL, а имена функций Trino сопоставляются с их
эквивалентами в ClickHouse. Запрос `SET` по-прежнему разбирается как обычный SQL, чтобы
диалект можно было переключить обратно.

Диалект также приводит семантику запросов в соответствие с Trino: `join_use_nulls` включается,
`use_variant_as_common_type` отключается, а анализатор запросов включается.
Явно указанное в запросе предложение `SETTINGS` по-прежнему имеет приоритет.

## enable\_unaligned\_array\_join

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

Разрешает ARRAY JOIN с несколькими массивами разной длины. Когда этот параметр включен, массивы будут приведены к длине самого длинного.

## enable\_unique\_key

<ExperimentalBadge />

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Добавлен псевдоним для настройки `allow_experimental_unique_key`."}]}]} />

Разрешает создание таблиц с конструкцией `UNIQUE KEY` для движков семейства MergeTree.

## enable\_url\_encoding

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Изменено значение по умолчанию существующей настройки"}]}]} />

Позволяет включать и отключать декодирование/кодирование пути в URI в таблицах с движком [URL](/ru/reference/engines/table-engines/special/url).

По умолчанию отключено.

## enable\_vertical\_final

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Снова включить vertical final по умолчанию после исправления ошибки"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "Использовать vertical final по умолчанию"}]}]} />

Если включено, во время FINAL дублирующиеся строки удаляются путём пометки строк как удалённых и их последующей фильтрации вместо слияния строк

## enable\_writes\_to\_query\_cache

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

Если параметр включен, результаты запросов `SELECT` сохраняются в [кэше запросов](/ru/concepts/features/performance/caches/query-cache).

Возможные значения:

* 0 - Отключено
* 1 - Включено

## enable\_zxc\_codec

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Новая настройка для отдельного включения экспериментального кодека сжатия `ZXC` без `allow_experimental_codecs`."}]}]} />

Включает кодек сжатия `ZXC`.
