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

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

> Настройки, содержащиеся в таблице ``system.settings``.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  const cells = [["Type", <Badge color="surface">{type}</Badge>], ["Default value", <Badge color="surface">{default_value}</Badge>]];
  if (changeable_without_restart) {
    const isYes = String(changeable_without_restart).trim().toLowerCase() === "yes";
    const badge = isYes ? <Badge icon="check" stroke color="green" size="sm">Yes</Badge> : <Badge icon="x" stroke color="red" size="sm">No</Badge>;
    cells.push(["Changeable without restart", badge]);
  }
  return <table>
      <thead>
        <tr>
          {cells.map(([h]) => <th key={h}>{h}</th>)}
        </tr>
      </thead>
      <tbody>
        <tr>
          {cells.map(([h, v]) => <td key={h}>{v}</td>)}
        </tr>
      </tbody>
    </table>;
};

export const CloudOnlyBadge = () => {
  return <div className="cloudBadge">
            <div className="cloudIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path fillRule="evenodd" clipRule="evenodd" d="M5.33395 12.6667H12.3739C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00004 12.3739 8.00004H12.0839V7.33337C12.0839 5.12671 10.2906 3.33337 8.08395 3.33337C6.09928 3.33337 4.45395 4.78537 4.14195 6.68204C2.55728 6.76271 1.29395 8.06204 1.29395 9.66671C1.29395 11.3234 2.63728 12.6667 4.29395 12.6667H5.33395Z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'ClickHouse Cloud only'}
        </div>;
};

export const galaxyOnClick = eventName => () => {
  try {
    if (typeof window !== "undefined" && window.galaxy && eventName) {
      window.galaxy.track(eventName, {
        interaction: "click"
      });
    }
  } catch (e) {}
};

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}>
                <Icon />
                <span>Beta</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                Beta feature. 
                <u>
                    <a href="/docs/beta-and-experimental-features#beta-features">
                        Learn more.
                    </a>
                </u>
            </span>
        </div>;
};

export const ExperimentalBadge = () => {
  return <div 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>
            Experimental feature. <u><a href="/docs/beta-and-experimental-features#experimental-features">Learn more.</a></u>
        </div>;
};

Все настройки, приведенные ниже, также доступны в таблице [system.settings](/ru/reference/system-tables/settings). Эти настройки автоматически генерируются из [исходного кода](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="add_http_cors_header">
  ## add\_http\_cors\_header
</div>

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

Добавлять HTTP-заголовок CORS.

<div id="additional_result_filter">
  ## additional\_result\_filter
</div>

Дополнительное фильтрующее выражение, применяемое к результату запроса `SELECT`.
Этот параметр не применяется ни к одному подзапросу.

**Пример**

```sql theme={null}
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SElECT * FROM table_1;
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 2 │ bb   │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

```sql theme={null}
SELECT *
FROM table_1
SETTINGS additional_result_filter = 'x != 2'
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

<div id="additional_table_filters">
  ## additional\_table\_filters
</div>

<SettingsInfoBlock type="Map" default_value="{}" />

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

**Пример**

```sql theme={null}
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SELECT * FROM table_1;
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 2 │ bb   │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

```sql theme={null}
SELECT *
FROM table_1
SETTINGS additional_table_filters = {'table_1': 'x != 2'}
```

```response theme={null}
┌─x─┬─y────┐
│ 1 │ a    │
│ 3 │ ccc  │
│ 4 │ dddd │
└───┴──────┘
```

<div id="aggregate_function_input_format">
  ## aggregate\_function\_input\_format
</div>

<SettingsInfoBlock type="AggregateFunctionInputFormat" default_value="state" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "state"},{"label": "Новая настройка для управления форматом входных данных AggregateFunction во время операций INSERT. По умолчанию значение настройки — state"}]}]} />

Формат входных данных AggregateFunction во время операций INSERT.

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

* `state` — Двоичная строка с сериализованным состоянием (по умолчанию). Это стандартное поведение, при котором значения AggregateFunction ожидаются в виде двоичных данных.
* `value` — Формат ожидает одно значение аргумента агрегатной функции или, в случае нескольких аргументов, их кортеж. Они будут десериализованы с использованием соответствующего IDataType или DataTypeTuple, а затем агрегированы для формирования состояния.
* `array` — Формат ожидает `Array` значений, как описано выше для варианта `value`. Все элементы массива будут агрегированы для формирования состояния.

**Примеры**

Для таблицы со следующей структурой:

```sql theme={null}
CREATE TABLE example (
    user_id UInt64,
    avg_session_length AggregateFunction(avg, UInt32)
);
```

При `aggregate_function_input_format = 'value'`:

```sql theme={null}
INSERT INTO example FORMAT CSV
123,456
```

При `aggregate_function_input_format = 'array'`:

```sql theme={null}
INSERT INTO example FORMAT CSV
123,"[456,789,101]"
```

Примечание: форматы `value` и `array` работают медленнее, чем формат `state` по умолчанию, так как при вставке для них требуется создавать и агрегировать значения.

<div id="aggregate_functions_null_for_empty">
  ## aggregate\_functions\_null\_for\_empty
</div>

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

Включает или отключает переписывание всех агрегатных функций в запросе с добавлением к ним суффикса [-OrNull](/ru/reference/functions/aggregate-functions/combinators#-ornull). Включите этот параметр для совместимости со стандартом SQL.
Это реализовано через переписывание запроса (аналогично настройке [count\_distinct\_implementation](#count_distinct_implementation)), чтобы обеспечить согласованные результаты для распределённых запросов.

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

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

**Пример**

Рассмотрим следующий запрос с агрегатными функциями:

```sql theme={null}
SELECT SUM(-1), MAX(0) FROM system.one WHERE 0;
```

При `aggregate_functions_null_for_empty = 0` результат будет таким:

```text theme={null}
┌─SUM(-1)─┬─MAX(0)─┐
│       0 │      0 │
└─────────┴────────┘
```

При `aggregate_functions_null_for_empty = 1` результат будет таким:

```text theme={null}
┌─SUMOrNull(-1)─┬─MAXOrNull(0)─┐
│          NULL │         NULL │
└───────────────┴──────────────┘
```

<div id="aggregation_in_order_max_block_bytes">
  ## aggregation\_in\_order\_max\_block\_bytes
</div>

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

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

<div id="aggregation_memory_efficient_merge_threads">
  ## aggregation\_memory\_efficient\_merge\_threads
</div>

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

Количество потоков для слияния промежуточных результатов агрегации в режиме экономии памяти. Чем больше значение, тем больше потребляется памяти. 0 означает то же, что и 'max\_threads'.

<div id="ai_function_max_api_calls_per_query">
  ## ai\_function\_max\_api\_calls\_per\_query
</div>

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

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

Максимальное количество HTTP-запросов, которые функции ИИ могут отправить в рамках одного запроса. Установите 0, чтобы отключить.

<div id="ai_function_max_input_tokens_per_query">
  ## ai\_function\_max\_input\_tokens\_per\_query
</div>

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

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

Максимальное суммарное количество входных токенов (промпта) во всех вызовах API функции ИИ в рамках одного запроса. Подсчитывается накопительно на основе ответов провайдера. Обратите внимание, что этот предел может быть превышен на количество входных токенов одного вызова, поскольку число входных токенов для вызова заранее неизвестно. Установите 0, чтобы отключить.

<div id="ai_function_max_output_tokens_per_query">
  ## ai\_function\_max\_output\_tokens\_per\_query
</div>

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

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

Максимальное суммарное количество выходных токенов (completion) во всех вызовах API функции ИИ в рамках одного запроса. Подсчитывается накопительно на основе ответов провайдера. Обратите внимание, что этот предел может быть превышен на количество выходных токенов одного вызова, поскольку число выходных токенов для вызова заранее неизвестно. Установите 0, чтобы отключить.

<div id="ai_function_max_retries">
  ## ai\_function\_max\_retries
</div>

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

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

Максимальное число повторных попыток при временных ошибках для каждого отдельного API-запроса. При каждой повторной попытке используется экспоненциально увеличивающаяся задержка, начиная с `ai_function_retry_initial_delay_ms`.

<div id="ai_function_request_timeout_sec">
  ## ai\_function\_request\_timeout\_sec
</div>

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

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

Тайм-аут в секундах для отдельных HTTP-запросов, выполняемых функциями ИИ (запросы AI chat completions и вызовы API embedding). Если запрос не завершается за это время, он считается неуспешным и может быть повторён в соответствии с `ai_function_max_retries`.

<div id="ai_function_retry_initial_delay_ms">
  ## ai\_function\_retry\_initial\_delay\_ms
</div>

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

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

Начальная задержка в миллисекундах перед первой повторной попыткой после неудачного API-запроса функции ИИ. При каждой следующей попытке задержка удваивается (экспоненциальная задержка). Например, при настройках по умолчанию: 1000ms, 2000ms, 4000ms.

<div id="ai_function_throw_on_error">
  ## ai\_function\_throw\_on\_error
</div>

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

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

Если true (по умолчанию), при необратимом сбое вызова функции ИИ после исчерпания всех повторных попыток запрос прерывается с исключением. Если false, для строки, в которой произошла ошибка, подставляется значение по умолчанию для типа столбца (пустая строка для String), и обработка продолжается.

<div id="ai_function_throw_on_quota_exceeded">
  ## ai\_function\_throw\_on\_quota\_exceeded
</div>

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

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

Если true (значение по умолчанию), при превышении лимита квоты функции ИИ (`ai_function_max_input_tokens_per_query`, `ai_function_max_output_tokens_per_query` или `ai_function_max_api_calls_per_query`) запрос прерывается с исключением. Если false, для оставшихся строк используется значение по умолчанию для типа столбца (пустая строка для String).

<div id="allow_aggregate_partitions_independently">
  ## allow\_aggregate\_partitions\_independently
</div>

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

Включает независимую агрегацию партиций в отдельных потоках, если ключ партиционирования соответствует ключу GROUP BY. Полезно, когда число партиций близко к числу ядер, а сами партиции имеют примерно одинаковый размер

<div id="allow_archive_path_syntax">
  ## allow\_archive\_path\_syntax
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "1"},{"label": "Добавлена новая настройка, позволяющая отключать синтаксис путей к архивам."}]}, {"id": "row-2","items": [{"label": "24.5"},{"label": "1"},{"label": "Добавлена новая настройка, позволяющая отключать синтаксис путей к архивам."}]}]} />

В движках File/S3 и табличной функции пути с '::' будут разбираться как `<archive> :: <file>`, если у архива корректное расширение.

<div id="allow_asynchronous_read_from_io_pool_for_merge_tree">
  ## allow\_asynchronous\_read\_from\_io\_pool\_for\_merge\_tree
</div>

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

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

<div id="allow_calculating_subcolumns_sizes_for_merge_tree_reading">
  ## allow\_calculating\_subcolumns\_sizes\_for\_merge\_tree\_reading
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Разрешает вычислять размеры подстолбцов при чтении MergeTree для более точного разделения задач чтения"}]}]} />

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

<div id="allow_changing_replica_until_first_data_packet">
  ## allow\_changing\_replica\_until\_first\_data\_packet
</div>

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

Если параметр включен, при hedged-запросах можно устанавливать новое соединение до получения первого пакета данных, даже если уже есть некоторый прогресс
(но он не обновлялся в течение тайм-аута `receive_data_timeout`); в противном случае смена реплики запрещается после первого появления прогресса.

<div id="allow_create_index_without_type">
  ## allow\_create\_index\_without\_type
</div>

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

Разрешает выполнять запрос CREATE INDEX без TYPE. Запрос будет проигнорирован. Предназначено для тестов совместимости с SQL.

<div id="allow_custom_error_code_in_throwif">
  ## allow\_custom\_error\_code\_in\_throwif
</div>

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

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

<div id="allow_ddl">
  ## allow\_ddl
</div>

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

Если установлено значение true, пользователю разрешено выполнять DDL-запросы.

<div id="allow_deprecated_database_ordinary">
  ## allow\_deprecated\_database\_ordinary
</div>

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

Разрешает создавать базы данных с устаревшим движком Ordinary

<div id="allow_deprecated_error_prone_window_functions">
  ## allow\_deprecated\_error\_prone\_window\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "0"},{"label": "Разрешить использование устаревших ошибкоопасных оконных функций (neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference)"}]}]} />

Разрешить использование устаревших ошибкоопасных оконных функций (neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference)

<div id="allow_deprecated_snowflake_conversion_functions">
  ## allow\_deprecated\_snowflake\_conversion\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Устаревшие функции snowflakeToDateTime[64] и dateTime[64]ToSnowflake отключены."}]}]} />

Функции `snowflakeToDateTime`, `snowflakeToDateTime64`, `dateTimeToSnowflake` и `dateTime64ToSnowflake` устарели и по умолчанию отключены.
Вместо них используйте функции `snowflakeIDToDateTime`, `snowflakeIDToDateTime64`, `dateTimeToSnowflakeID` и `dateTime64ToSnowflakeID`.

Чтобы снова включить устаревшие функции (например, в переходный период), установите для этой настройки значение `true`.

<div id="allow_deprecated_syntax_for_merge_tree">
  ## allow\_deprecated\_syntax\_for\_merge\_tree
</div>

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

Разрешает создавать таблицы семейства \*MergeTree, используя устаревший синтаксис определения движка

<div id="allow_distributed_ddl">
  ## allow\_distributed\_ddl
</div>

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

Если задано значение true, пользователю разрешается выполнять распределённые DDL-запросы.

<div id="allow_drop_detached">
  ## allow\_drop\_detached
</div>

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

Разрешает запросы ALTER TABLE ... DROP DETACHED PART\[ITION] ...

<div id="allow_dynamic_type_in_join_keys">
  ## allow\_dynamic\_type\_in\_join\_keys
</div>

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

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

Разрешает использовать тип Dynamic в ключах JOIN. Добавлено для обеспечения совместимости. Не рекомендуется использовать тип Dynamic в ключах JOIN, поскольку сравнение с другими типами может приводить к неожиданным результатам.

<div id="allow_execute_multiif_columnar">
  ## allow\_execute\_multiif\_columnar
</div>

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

Разрешить выполнение функции multiIf в столбцовом режиме

<div id="allow_experimental_ai_functions">
  ## allow\_experimental\_ai\_functions
</div>

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

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

Включает экспериментальные функции ИИ (например, `aiGenerateContent`). Эти функции выполняют внешние HTTP-запросы к поставщикам ИИ.

<div id="allow_experimental_analyzer">
  ## allow\_experimental\_analyzer
</div>

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

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

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

Разрешает использование нового анализатора запросов.

<div id="allow_experimental_cleanup_old_data_files_compaction">
  ## allow\_experimental\_cleanup\_old\_data\_files\_compaction
</div>

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

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

Разрешает удалять старые файлы данных при компакции Iceberg.

<div id="allow_experimental_codecs">
  ## allow\_experimental\_codecs
</div>

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

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

<div id="allow_experimental_correlated_subqueries">
  ## allow\_experimental\_correlated\_subqueries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Поддержка коррелированных подзапросов помечена как бета."}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Добавлена новая настройка, разрешающая выполнение коррелированных подзапросов."}]}]} />

Разрешает выполнять коррелированные подзапросы.

<div id="allow_experimental_database_glue_catalog">
  ## allow\_experimental\_database\_glue\_catalog
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "0"},{"label": "Разрешает использование экспериментального движка базы данных DataLakeCatalog с catalog_type = 'glue'"}]}]} />

Разрешает использование экспериментального движка базы данных DataLakeCatalog с catalog\_type = 'glue'

Значение по умолчанию в Cloud: `1`.

<div id="allow_experimental_database_hms_catalog">
  ## allow\_experimental\_database\_hms\_catalog
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Разрешает использование экспериментального движка базы данных DataLakeCatalog с catalog_type = 'hive'"}]}]} />

Разрешает использование экспериментального движка базы данных DataLakeCatalog с catalog\_type = 'hms'

<div id="allow_experimental_database_iceberg">
  ## allow\_experimental\_database\_iceberg
</div>

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

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

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

Разрешает использование экспериментального движка базы данных DataLakeCatalog с `catalog_type = 'iceberg'`

Значение по умолчанию в Cloud: `1`.

<div id="allow_experimental_database_materialized_postgresql">
  ## allow\_experimental\_database\_materialized\_postgresql
</div>

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

Разрешает создавать базу данных с движком MaterializedPostgreSQL(...).

<div id="allow_experimental_database_paimon_rest_catalog">
  ## allow\_experimental\_database\_paimon\_rest\_catalog
</div>

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

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

Разрешить использование экспериментального движка базы данных DataLakeCatalog с catalog\_type = 'paimon\_rest'

<div id="allow_experimental_database_unity_catalog">
  ## allow\_experimental\_database\_unity\_catalog
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "0"},{"label": "Разрешить использование экспериментального движка базы данных DataLakeCatalog с catalog_type = 'unity'"}]}]} />

Разрешить использование экспериментального движка базы данных DataLakeCatalog с catalog\_type = 'unity'

Значение по умолчанию в Cloud: `1`.

<div id="allow_experimental_delta_kernel_rs">
  ## allow\_experimental\_delta\_kernel\_rs
</div>

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

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

Разрешает использовать экспериментальную реализацию delta-kernel-rs.

<div id="allow_experimental_delta_lake_writes">
  ## allow\_experimental\_delta\_lake\_writes
</div>

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

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

Включает возможность записи с использованием delta-kernel.

<div id="allow_experimental_expire_snapshots">
  ## allow\_experimental\_expire\_snapshots
</div>

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

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

Разрешает выполнение экспериментальной команды Iceberg `ALTER TABLE ... EXECUTE expire_snapshots`.

<div id="allow_experimental_funnel_functions">
  ## allow\_experimental\_funnel\_functions
</div>

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

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

<div id="allow_experimental_geo_types_in_iceberg">
  ## allow\_experimental\_geo\_types\_in\_iceberg
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка, позволяющая интерпретировать поля geometry/geography в Iceberg как тип Geometry."}]}]} />

Разрешает интерпретировать типы полей `geometry` и `geography` в Iceberg как тип ClickHouse `Geometry` (Variant).

<div id="allow_experimental_hash_functions">
  ## allow\_experimental\_hash\_functions
</div>

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

Включить экспериментальные хеш-функции

<div id="allow_experimental_iceberg_compaction">
  ## allow\_experimental\_iceberg\_compaction
</div>

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

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

Разрешает явным образом использовать 'OPTIMIZE' для таблиц Iceberg.

<div id="allow_experimental_join_right_table_sorting">
  ## allow\_experimental\_join\_right\_table\_sorting
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Если задано значение true и выполняются условия `join_to_sort_minimum_perkey_rows` и `join_to_sort_maximum_table_rows`, правая таблица переупорядочивается по ключу для повышения производительности при левом или внутреннем hash JOIN"}]}]} />

Если задано значение true и выполняются условия `join_to_sort_minimum_perkey_rows` и `join_to_sort_maximum_table_rows`, правая таблица переупорядочивается по ключу для повышения производительности при левом или внутреннем hash JOIN.

<div id="allow_experimental_json_lazy_type_hints">
  ## allow\_experimental\_json\_lazy\_type\_hints
</div>

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

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

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

<div id="allow_experimental_kafka_offsets_storage_in_keeper">
  ## allow\_experimental\_kafka\_offsets\_storage\_in\_keeper
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Разрешить использование экспериментального движка Kafka, который хранит зафиксированные смещения в ClickHouse Keeper"}]}]} />

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

<div id="allow_experimental_kusto_dialect">
  ## allow\_experimental\_kusto\_dialect
</div>

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

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

Включает Kusto Query Language (KQL) — альтернативный SQL-диалект.

<div id="allow_experimental_materialized_postgresql_table">
  ## allow\_experimental\_materialized\_postgresql\_table
</div>

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

Разрешает использовать движок таблицы MaterializedPostgreSQL. По умолчанию отключена, так как эта возможность является экспериментальной

<div id="allow_experimental_nlp_functions">
  ## allow\_experimental\_nlp\_functions
</div>

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

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

<div id="allow_experimental_nullable_tuple_type">
  ## allow\_experimental\_nullable\_tuple\_type
</div>

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

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

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

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

<div id="allow_experimental_object_storage_queue_hive_partitioning">
  ## allow\_experimental\_object\_storage\_queue\_hive\_partitioning
</div>

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

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

Разрешает использовать партиционирование Hive с движками S3Queue/AzureQueue

<div id="allow_experimental_paimon_storage_engine">
  ## allow\_experimental\_paimon\_storage\_engine
</div>

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

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

Разрешает создавать таблицы с движком таблицы Paimon\*.

<div id="allow_experimental_parallel_reading_from_replicas">
  ## allow\_experimental\_parallel\_reading\_from\_replicas
</div>

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

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

Для выполнения SELECT-запросов использует до `max_parallel_replicas` реплик из каждого сегмента. Чтение распараллеливается и координируется динамически. 0 — отключено, 1 — включено, при сбое отключается без уведомления, 2 — включено, при сбое генерируется исключение

<div id="allow_experimental_polyglot_dialect">
  ## allow\_experimental\_polyglot\_dialect
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Новая настройка для включения диалекта транспайлера polyglot SQL."}]}]} />

Включает транспайлер polyglot SQL — преобразует SQL из более чем 30 диалектов (MySQL, PostgreSQL, SQLite, Snowflake, DuckDB и т. д.) в ClickHouse SQL.

<div id="allow_experimental_prql_dialect">
  ## allow\_experimental\_prql\_dialect
</div>

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

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

Включает PRQL — альтернативный язык запросов по отношению к SQL.

<div id="allow_experimental_query_deduplication">
  ## allow\_experimental\_query\_deduplication
</div>

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

Экспериментальная дедупликация данных для SELECT-запросов на основе UUID частей

<div id="allow_experimental_time_series_aggregate_functions">
  ## allow\_experimental\_time\_series\_aggregate\_functions
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Новая настройка, включающая экспериментальные агрегатные функции timeSeries*."}]}]} />

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

<div id="allow_experimental_time_series_table">
  ## allow\_experimental\_time\_series\_table
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Добавлена новая настройка, разрешающая использование движка таблицы TimeSeries"}]}]} />

Разрешает создавать таблицы с использованием движка таблицы [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) включен.

<div id="allow_experimental_unique_key">
  ## allow\_experimental\_unique\_key
</div>

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

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

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

<div id="allow_experimental_window_view">
  ## allow\_experimental\_window\_view
</div>

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

Включает WINDOW VIEW. Функция ещё недостаточно зрелая.

<div id="allow_experimental_ytsaurus_dictionary_source">
  ## allow\_experimental\_ytsaurus\_dictionary\_source
</div>

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

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

Экспериментальный источник словаря для интеграции с YTsaurus.

<div id="allow_experimental_ytsaurus_table_engine">
  ## allow\_experimental\_ytsaurus\_table\_engine
</div>

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

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

Экспериментальный движок таблицы для интеграции с YTsaurus.

<div id="allow_experimental_ytsaurus_table_function">
  ## allow\_experimental\_ytsaurus\_table\_function
</div>

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

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

Экспериментальный движок таблицы для интеграции с YTsaurus.

<div id="allow_fuzz_query_functions">
  ## allow\_fuzz\_query\_functions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Новая настройка для включения функции fuzzQuery."}]}]} />

Включает функцию `fuzzQuery`, которая применяет случайные мутации AST к строке запроса.

<div id="allow_general_join_planning">
  ## allow\_general\_join\_planning
</div>

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

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

Разрешает использовать более универсальный алгоритм планирования JOIN, способный обрабатывать более сложные условия, но работающий только с hash join. Если hash join не включен, то независимо от значения этой настройки используется обычный алгоритм планирования JOIN.

<div id="allow_get_client_http_header">
  ## allow\_get\_client\_http\_header
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Добавлена новая функция."}]}]} />

Разрешает использовать функцию `getClientHTTPHeader`, которая позволяет получать значение заголовка текущего HTTP-запроса. По соображениям безопасности этот параметр по умолчанию отключен, поскольку некоторые заголовки, например `Cookie`, могут содержать конфиденциальную информацию. Обратите внимание, что заголовки `X-ClickHouse-*` и `Authentication` всегда недоступны, и получить их с помощью этой функции нельзя.

<div id="allow_hyperscan">
  ## allow\_hyperscan
</div>

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

Разрешает использование функций, работающих с библиотекой Hyperscan. Отключите этот параметр, чтобы избежать потенциально длительной компиляции и чрезмерного потребления ресурсов.

<div id="allow_iceberg_remove_orphan_files">
  ## allow\_iceberg\_remove\_orphan\_files
</div>

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

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

Разрешает использовать 'ALTER TABLE ... EXECUTE remove\_orphan\_files()' для таблиц Iceberg.

<div id="allow_insert_into_iceberg">
  ## allow\_insert\_into\_iceberg
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Вставка в Iceberg переведена в стадию бета"}]}, {"id": "row-2","items": [{"label": "25.7"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Разрешает выполнять запросы `insert` в Iceberg.

<div id="allow_introspection_functions">
  ## allow\_introspection\_functions
</div>

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

Включает или отключает [функции интроспекции](/ru/reference/functions/regular-functions/introspection) при профилировании запросов.

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

* 1 — Функции интроспекции включены.
* 0 — Функции интроспекции отключены.

**См. также**

* [Выборочный профилировщик запросов](/ru/concepts/features/performance/troubleshoot/sampling-query-profiler)
* Системная таблица [trace\_log](/ru/reference/system-tables/trace_log)

<div id="allow_key_condition_coalesce_rewrite">
  ## allow\_key\_condition\_coalesce\_rewrite
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Новая настройка для преобразования предикатов вида `coalesce(a_1, ..., a_N) <op> const` (а также эквивалентных выражений с `ifNull` или с константой слева) в дизъюнкцию перед анализом индексов, чтобы можно было использовать первичный ключ по отдельным столбцам и индексы пропуска данных для каждого `a_i`. Также поддерживаются формы с частичными константами, такие как `coalesce(a, 42, b)` и `coalesce(a, b, 42)`."}]}]} />

Преобразует предикаты вида `coalesce(a_1, ..., a_N) <op> const` (а также эквивалентные выражения с `ifNull` или с константой слева) в дизъюнкцию `(a_1 <op> const) OR (a_1 IS NULL AND a_2 <op> const) OR ... OR (a_1 IS NULL AND ... AND a_{N-1} IS NULL AND a_N <op> const)` перед анализом индексов, чтобы можно было использовать первичный ключ по отдельным столбцам и индексы пропуска данных для каждого `a_i`. Поддерживаются и формы с частичными константами, такие как `coalesce(a, 42, b)` и `coalesce(a, b, 42)`: список аргументов нормализуется так же, как в самом `coalesce` (литералы `NULL` отбрасываются, аргументы после первого не-`Nullable` отбрасываются), а завершающая не-`NULL` константа, если она есть, добавляется как последняя ветвь. Это преобразование используется только для дополнительного отсечения по индексам; фильтрация во время выполнения по-прежнему использует исходный предикат.

<div id="allow_materialized_view_with_bad_select">
  ## allow\_materialized\_view\_with\_bad\_select
</div>

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

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

Разрешает CREATE MATERIALIZED VIEW с запросом SELECT, который ссылается на несуществующие таблицы или столбцы. При этом запрос всё равно должен быть синтаксически корректным. Не применяется к обновляемым MV. Не применяется, если схему MV нужно автоматически вывести из запроса SELECT (то есть если в CREATE нет списка столбцов и нет таблицы TO). Может использоваться для создания MV до создания её исходной таблицы.

<div id="allow_named_collection_override_by_default">
  ## allow\_named\_collection\_override\_by\_default
</div>

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

По умолчанию разрешает переопределение полей именованных коллекций.

<div id="allow_non_metadata_alters">
  ## allow\_non\_metadata\_alters
</div>

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

Разрешает выполнять ALTER-запросы, которые затрагивают не только метаданные таблиц, но и данные на диске

<div id="allow_nonconst_timezone_arguments">
  ## allow\_nonconst\_timezone\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "Разрешить неконстантные аргументы часового пояса в некоторых функциях, связанных со временем, таких как toTimeZone(), fromUnixTimestamp*(), snowflakeToDateTime*()."}]}]} />

Разрешить неконстантные аргументы часового пояса в некоторых функциях, связанных со временем, таких как toTimeZone(), fromUnixTimestamp\*(), snowflakeToDateTime\*().
Этот параметр существует только из соображений совместимости. В ClickHouse часовой пояс является свойством типа данных и, соответственно, столбца.
Включение этого параметра создает неверное впечатление, будто разные значения в одном столбце могут иметь разные часовые пояса.
Поэтому не включайте этот параметр.

<div id="allow_nondeterministic_mutations">
  ## allow\_nondeterministic\_mutations
</div>

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

Пользовательская настройка, которая разрешает мутациям в реплицируемых таблицах использовать недетерминированные функции, такие как `dictGet`.

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

**Пример**

```xml theme={null}
<profiles>
    <default>
        <allow_nondeterministic_mutations>1</allow_nondeterministic_mutations>

        <!-- ... -->
    </default>

    <!-- ... -->

</profiles>
```

<div id="allow_nondeterministic_optimize_skip_unused_shards">
  ## allow\_nondeterministic\_optimize\_skip\_unused\_shards
</div>

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

Разрешает использовать недетерминированные функции (например, `rand` или `dictGet`, поскольку у последней есть некоторые особенности, связанные с обновлениями) в ключе сегментирования.

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

* 0 — Запрещено.
* 1 — Разрешено.

<div id="allow_nullable_tuple_in_extracted_subcolumns">
  ## allow\_nullable\_tuple\_in\_extracted\_subcolumns
</div>

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

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

Определяет, могут ли извлечённые подстолбцы типа `Tuple(...)` иметь тип `Nullable(Tuple(...))`.

* `false`: Возвращает `Tuple(...)` и использует значения кортежа по умолчанию для строк, в которых подстолбец отсутствует.
* `true`: Возвращает `Nullable(Tuple(...))` и использует `NULL` для строк, в которых подстолбец отсутствует.

Эта настройка влияет только на поведение извлечённых подстолбцов.
Она не определяет, можно ли создавать в таблицах столбцы `Nullable(Tuple(...))`; это регулируется параметром `allow_experimental_nullable_tuple_type`.

ClickHouse использует значение этой настройки, загруженное при запуске сервера.
Изменения, внесённые с помощью `SET` или `SETTINGS` на уровне запроса, не меняют поведение извлечённых подстолбцов.
Чтобы изменить поведение извлечённых подстолбцов, обновите `allow_nullable_tuple_in_extracted_subcolumns` в конфигурации профиля запуска (например, в users.xml) и перезапустите сервер.

<div id="allow_prefetched_read_pool_for_local_filesystem">
  ## allow\_prefetched\_read\_pool\_for\_local\_filesystem
</div>

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

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

<div id="allow_prefetched_read_pool_for_remote_filesystem">
  ## allow\_prefetched\_read\_pool\_for\_remote\_filesystem
</div>

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

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

<div id="allow_push_predicate_ast_for_distributed_subqueries">
  ## allow\_push\_predicate\_ast\_for\_distributed\_subqueries
</div>

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

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

Разрешает проталкивание предиката на уровне AST для распределённых подзапросов при включённом анализаторе

<div id="allow_push_predicate_when_subquery_contains_with">
  ## allow\_push\_predicate\_when\_subquery\_contains\_with
</div>

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

Разрешает проталкивание предиката, если подзапрос содержит конструкцию WITH

<div id="allow_rank_dense_rank_arguments">
  ## allow\_rank\_dense\_rank\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка. До версии 26.5 оконные функции `RANK` и `DENSE_RANK` молча игнорировали любые переданные аргументы (эквивалентно `allow_rank_dense_rank_arguments = 1`). Начиная с версии 26.5, по умолчанию они отклоняют аргументы с ошибкой `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`, поскольку по стандарту SQL эти функции не принимают аргументов. Установите `1`, чтобы восстановить прежнее поведение."}]}]} />

Разрешает передавать аргументы оконным функциям `RANK` и `DENSE_RANK` для обратной совместимости.

Согласно стандарту SQL, `RANK` и `DENSE_RANK` не принимают аргументов — они ранжируют строки только по
окну `OVER (ORDER BY ...)`. В версиях ClickHouse до 26.5 запросы вида
`RANK(x) OVER (...)` молча принимались, а аргумент игнорировался, что вызывало путаницу у пользователей
(видимый аргумент создавал впечатление, что он влияет на ранжирование, хотя это не так).

Когда этот параметр имеет значение `false` (по умолчанию), `RANK` и `DENSE_RANK` отклоняют любые аргументы и
выдают ошибку `NUMBER_OF_ARGUMENTS_DOESNT_MATCH`. Если установить значение `true`, восстанавливается
прежнее более мягкое поведение — аргументы молча игнорируются, как и до версии 26.5.

<div id="allow_reorder_prewhere_conditions">
  ## allow\_reorder\_prewhere\_conditions
</div>

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

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

При перемещении условий из WHERE в PREWHERE разрешает менять их порядок для оптимизации фильтрации

<div id="allow_settings_after_format_in_insert">
  ## allow\_settings\_after\_format\_in\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.4"},{"label": "0"},{"label": "Не разрешать SETTINGS после FORMAT в запросах INSERT, поскольку ClickHouse интерпретирует SETTINGS как значения, что может вводить в заблуждение"}]}]} />

Определяет, разрешён ли `SETTINGS` после `FORMAT` в запросах `INSERT`. Использовать это не рекомендуется, поскольку часть `SETTINGS` может интерпретироваться как значения.

Пример:

```sql theme={null}
INSERT INTO FUNCTION null('foo String') SETTINGS max_threads=1 VALUES ('bar');
```

Но следующий запрос будет работать только при `allow_settings_after_format_in_insert`:

```sql theme={null}
SET allow_settings_after_format_in_insert=1;
INSERT INTO FUNCTION null('foo String') VALUES ('bar') SETTINGS max_threads=1;
```

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

* 0 — Запретить.
* 1 — Разрешить.

<Note>
  Используйте эту настройку только для обеспечения обратной совместимости, если ваши сценарии использования зависят от старого синтаксиса.
</Note>

<div id="allow_simdjson">
  ## allow\_simdjson
</div>

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

Разрешает использовать библиотеку simdjson в функциях 'JSON\*', если доступны инструкции AVX2. Если параметр отключён, используется rapidjson.

<div id="allow_special_serialization_kinds_in_output_formats">
  ## allow\_special\_serialization\_kinds\_in\_output\_formats
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Включить прямой вывод специальных представлений столбцов, таких как Sparse/Replicated, в некоторых выходных форматах"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Добавить настройку, разрешающую вывод специальных представлений столбцов, таких как Sparse/Replicated, без преобразования в представление полного столбца"}]}]} />

Позволяет выводить столбцы со специальными видами сериализации, такими как Sparse и Replicated, без преобразования в представление полного столбца.
Это помогает избежать лишнего копирования данных при форматировании.

<div id="allow_statistics">
  ## allow\_statistics
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Статистика столбцов теперь в статусе GA"}]}]} />

Позволяет задавать для столбцов [статистику](/ru/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-creating-a-table) и [управлять статистикой](/ru/reference/engines/table-engines/mergetree-family/mergetree#column-statistics).

<div id="allow_statistics_optimize">
  ## allow\_statistics\_optimize
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Эта оптимизация включена по умолчанию."}]}, {"id": "row-2","items": [{"label": "24.6"},{"label": "0"},{"label": "Параметр был переименован. Прежнее имя — `allow_statistic_optimize`."}]}]} />

Разрешает использовать статистику для оптимизации запросов

<div id="allow_suspicious_codecs">
  ## allow\_suspicious\_codecs
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.5"},{"label": "0"},{"label": "Не разрешать указывать бессмысленные кодеки сжатия"}]}]} />

При значении true можно указывать бессмысленные кодеки сжатия.

<div id="allow_suspicious_fixed_string_types">
  ## allow\_suspicious\_fixed\_string\_types
</div>

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

В операторе CREATE TABLE разрешает создавать столбцы типа FixedString(n) при n > 256. FixedString длиной >= 256 выглядит подозрительно и, скорее всего, указывает на некорректное использование

<div id="allow_suspicious_indices">
  ## allow\_suspicious\_indices
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "Если установлено значение true, индекс можно определить с одинаковыми выражениями"}]}]} />

Отклоняет основные/вторичные индексы и ключи сортировки с одинаковыми выражениями

<div id="allow_suspicious_low_cardinality_types">
  ## allow\_suspicious\_low\_cardinality\_types
</div>

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

Разрешает или запрещает использование [LowCardinality](/ru/reference/data-types/lowcardinality) с типами данных фиксированного размера 8 байт и менее: числовыми типами данных и `FixedString(8_bytes_or_less)`.

Для небольших значений фиксированного размера использование `LowCardinality` обычно неэффективно, поскольку ClickHouse хранит числовой индекс для каждой строки. В результате:

* Может увеличиться использование дискового пространства.
* Потребление оперативной памяти может возрасти в зависимости от размера словаря.
* Некоторые функции могут работать медленнее из-за дополнительных операций кодирования и декодирования.

В таблицах с движком [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree) время слияния также может увеличиться по всем перечисленным выше причинам.

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

* 1 — Использование `LowCardinality` не ограничено.
* 0 — Использование `LowCardinality` ограничено.

<div id="allow_suspicious_primary_key">
  ## allow\_suspicious\_primary\_key
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Запрещает сомнительные PRIMARY KEY/ORDER BY для MergeTree (например, SimpleAggregateFunction)"}]}]} />

Разрешает сомнительные `PRIMARY KEY`/`ORDER BY` для MergeTree (например, SimpleAggregateFunction).

<div id="allow_suspicious_ttl_expressions">
  ## allow\_suspicious\_ttl\_expressions
</div>

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

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

Отклонять TTL-выражения, которые не зависят ни от одного столбца таблицы. В большинстве случаев это указывает на ошибку пользователя.

<div id="allow_suspicious_types_in_group_by">
  ## allow\_suspicious\_types\_in\_group\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "По умолчанию запрещает типы Variant/Dynamic в ключах GROUP BY"}]}]} />

Разрешает или запрещает использование типов [Variant](/ru/reference/data-types/variant) и [Dynamic](/ru/reference/data-types/dynamic) в ключах GROUP BY.

<div id="allow_suspicious_types_in_order_by">
  ## allow\_suspicious\_types\_in\_order\_by
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Типы Variant/Dynamic по умолчанию не разрешены в ключах ORDER BY"}]}]} />

Разрешает или запрещает использование типов [Variant](/ru/reference/data-types/variant) и [Dynamic](/ru/reference/data-types/dynamic) в ключах ORDER BY.

<div id="allow_suspicious_variant_types">
  ## allow\_suspicious\_variant\_types
</div>

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

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

В операторе CREATE TABLE позволяет указывать тип Variant со схожими типами варианта (например, с разными числовыми типами или типами даты). Включение этой настройки может внести некоторую неоднозначность при работе со значениями схожих типов.

<div id="allow_unrestricted_reads_from_keeper">
  ## allow\_unrestricted\_reads\_from\_keeper
</div>

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

Разрешает неограниченное чтение (без условия для path) из таблицы system.zookeeper; может быть полезно, но небезопасно для ZooKeeper

<div id="alter_move_to_space_execute_async">
  ## alter\_move\_to\_space\_execute\_async
</div>

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

Выполнять ALTER TABLE MOVE ... TO \[DISK|VOLUME] в асинхронном режиме

<div id="alter_partition_verbose_result">
  ## alter\_partition\_verbose\_result
</div>

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

Включает или отключает вывод информации о частях, к которым были успешно применены операции с партициями и частями.
Применимо к [ATTACH PARTITION|PART](/ru/reference/statements/alter/partition#attach-partitionpart) и [FREEZE PARTITION](/ru/reference/statements/alter/partition#freeze-partition).

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

* 0 — отключить подробный вывод.
* 1 — включить подробный вывод.

**Пример**

```sql theme={null}
CREATE TABLE test(a Int64, d Date, s String) ENGINE = MergeTree PARTITION BY toYYYYMDECLARE(d) ORDER BY a;
INSERT INTO test VALUES(1, '2021-01-01', '');
INSERT INTO test VALUES(1, '2021-01-01', '');
ALTER TABLE test DETACH PARTITION ID '202101';

ALTER TABLE test ATTACH PARTITION ID '202101' SETTINGS alter_partition_verbose_result = 1;

┌─command_type─────┬─partition_id─┬─part_name────┬─old_part_name─┐
│ ATTACH PARTITION │ 202101       │ 202101_7_7_0 │ 202101_5_5_0  │
│ ATTACH PARTITION │ 202101       │ 202101_8_8_0 │ 202101_6_6_0  │
└──────────────────┴──────────────┴──────────────┴───────────────┘

ALTER TABLE test FREEZE SETTINGS alter_partition_verbose_result = 1;

┌─command_type─┬─partition_id─┬─part_name────┬─backup_name─┬─backup_path───────────────────┬─part_backup_path────────────────────────────────────────────┐
│ FREEZE ALL   │ 202101       │ 202101_7_7_0 │ 8           │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_7_7_0 │
│ FREEZE ALL   │ 202101       │ 202101_8_8_0 │ 8           │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_8_8_0 │
└──────────────┴──────────────┴──────────────┴─────────────┴───────────────────────────────┴─────────────────────────────────────────────────────────────┘
```

<div id="alter_sync">
  ## alter\_sync
</div>

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

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

Позволяет указать, как ожидать выполнение действий на репликах для запросов [`ALTER`](/ru/reference/statements/alter), [`OPTIMIZE`](/ru/reference/statements/optimize) или [`TRUNCATE`](/ru/reference/statements/truncate).

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

* `0` — Не ждать.
* `1` — Ждать выполнения на текущей реплике.
* `2` — Ждать выполнения на всех репликах.
* `3` - Ждать только активные реплики.

Значение по умолчанию в Cloud: `0`.

<Note>
  `alter_sync` применим только к таблицам `Replicated` и `SharedMergeTree`; для таблиц без `Replicated` или `Shared` при выполнении ALTER он ничего не делает.
</Note>

<div id="alter_update_mode">
  ## alter\_update\_mode
</div>

<SettingsInfoBlock type="AlterUpdateMode" default_value="heavy" />

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

Режим для запросов `ALTER` с командой `UPDATE`.

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

* `heavy` — выполнять обычную мутацию.
* `lightweight` — выполнять легковесное обновление, если это возможно; в противном случае выполнять обычную мутацию.
* `lightweight_force` — выполнять легковесное обновление, если это возможно; в противном случае сгенерировать исключение.

<div id="analyze_index_with_space_filling_curves">
  ## analyze\_index\_with\_space\_filling\_curves
</div>

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

Если в индексе таблицы используется пространственно-заполняющая кривая, например `ORDER BY mortonEncode(x, y)` или `ORDER BY hilbertEncode(x, y)`, и запрос содержит условия по её аргументам, например `x >= 10 AND x <= 20 AND y >= 20 AND y <= 30`, используйте пространственно-заполняющую кривую для анализа индекса.

<div id="analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested">
  ## analyzer\_compatibility\_allow\_compound\_identifiers\_in\_unflatten\_nested
</div>

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

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

Разрешает добавлять составные идентификаторы в nested. Это настройка совместимости, поскольку она изменяет результат запроса. Когда она отключена, `SELECT a.b.c FROM table ARRAY JOIN a` не работает, а `SELECT a FROM table` не включает столбец `a.b.c` в результат `Nested a`.

<div id="analyzer_compatibility_join_using_top_level_identifier">
  ## analyzer\_compatibility\_join\_using\_top\_level\_identifier
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Принудительно разрешать идентификатор в JOIN USING из проекции"}]}]} />

Принудительно разрешать идентификатор в JOIN USING из проекции (например, в `SELECT a + 1 AS b FROM t1 JOIN t2 USING (b)` JOIN будет выполняться по условию `t1.a + 1 = t2.b`, а не `t1.b = t2.b`).

<div id="analyzer_inline_views">
  ## analyzer\_inline\_views
</div>

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

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

При включении анализатор разворачивает обычные (нематериализованные, непараметризованные) представления в их определяющие подзапросы, что делает возможными сквозные оптимизации, такие как pushdown предикатов и отсечение столбцов.

<div id="any_join_distinct_right_table_keys">
  ## any\_join\_distinct\_right\_table\_keys
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.14"},{"label": "0"},{"label": "По умолчанию отключает ANY RIGHT и ANY FULL JOIN, чтобы избежать несогласованности"}]}]} />

Включает устаревшее поведение сервера ClickHouse в операциях `ANY INNER|LEFT JOIN`.

<Note>
  Используйте эту настройку только для обратной совместимости, если ваши сценарии зависят от устаревшего поведения `JOIN`.
</Note>

Когда устаревшее поведение включено:

* Результаты операций `t1 ANY LEFT JOIN t2` и `t2 ANY RIGHT JOIN t1` различаются, поскольку ClickHouse использует логику сопоставления ключей таблиц слева направо по схеме «многие к одному».
* Результаты операций `ANY INNER JOIN` содержат все строки из левой таблицы, как и операции `SEMI LEFT JOIN`.

Когда устаревшее поведение отключено:

* Результаты операций `t1 ANY LEFT JOIN t2` и `t2 ANY RIGHT JOIN t1` совпадают, поскольку ClickHouse использует логику, обеспечивающую сопоставление ключей по схеме «один ко многим» в операциях `ANY RIGHT JOIN`.
* Результаты операций `ANY INNER JOIN` содержат по одной строке для каждого ключа из левой и правой таблиц.

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

* 0 — Устаревшее поведение отключено.
* 1 — Устаревшее поведение включено.

См. также:

* [Строгость JOIN](/ru/reference/statements/select/join#settings)

<div id="apply_deleted_mask">
  ## apply\_deleted\_mask
</div>

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

Включает отфильтровывание строк, удалённых с помощью легковесного DELETE. Если параметр отключён, запрос сможет читать эти строки. Это полезно для отладки и сценариев "восстановления удалённых данных"

<div id="apply_mutations_on_fly">
  ## apply\_mutations\_on\_fly
</div>

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

Если установлено значение true, мутации (UPDATE и DELETE), которые не материализованы в части данных, будут применяться при выполнении SELECT.

<div id="apply_patch_parts">
  ## apply\_patch\_parts
</div>

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

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

Если значение равно true, патч-части (представляющие собой легковесные обновления) применяются при выполнении SELECT.

<div id="apply_patch_parts_join_cache_buckets">
  ## apply\_patch\_parts\_join\_cache\_buckets
</div>

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

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

Количество бакетов во временном кеше для применения патч-частей в режиме JOIN.

<div id="apply_prewhere_after_final">
  ## apply\_prewhere\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Новая настройка. Если включена, условия PREWHERE применяются после обработки FINAL."}]}]} />

Если включено, условия PREWHERE для ReplacingMergeTree и схожих движков применяются после обработки FINAL.
Это может быть полезно, когда PREWHERE ссылается на столбцы, значения которых могут различаться в дублирующихся строках,
и вы хотите, чтобы FINAL сначала выбрал итоговую строку, а фильтрация выполнялась уже после этого. Если отключено, PREWHERE применяется при чтении.
Примечание: если включен apply\_row\_level\_security\_after\_final и политика доступа к строкам использует столбцы, не входящие в ключ сортировки, PREWHERE также
будет отложен, чтобы сохранить правильный порядок выполнения (политика доступа к строкам должна применяться до PREWHERE).

<div id="apply_row_policy_after_final">
  ## apply\_row\_policy\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Настройка apply_row_policy_after_final включена по умолчанию, как это было в 25.8 до #87303"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "Новая настройка, управляющая тем, применяются ли row policies и PREWHERE после обработки FINAL для таблиц семейства *MergeTree"}]}]} />

Если настройка включена, row policies и PREWHERE применяются после обработки FINAL для таблиц семейства \*MergeTree. (Особенно актуально для ReplacingMergeTree)
Если настройка выключена, row policies применяются до FINAL, что может приводить к различающимся результатам, если политика
отфильтровывает строки, которые должны использоваться для дедупликации в ReplacingMergeTree или аналогичных движках.

Если выражение row policy зависит только от столбцов из ORDER BY, оно всё равно будет применяться до FINAL в целях оптимизации,
поскольку такая фильтрация не может повлиять на результат дедупликации.

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

* 0 — Row policy и PREWHERE применяются до FINAL (по умолчанию).
* 1 — Row policy и PREWHERE применяются после FINAL.

<div id="apply_settings_from_server">
  ## apply\_settings\_from\_server
</div>

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

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

Определяет, должен ли клиент принимать настройки от сервера.

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

Обычно эту настройку следует задавать в профиле пользователя (users.xml или запросами вроде `ALTER USER`), а не через клиент (аргументами командной строки клиента, запросом `SET` или в секции `SETTINGS` запроса `SELECT`). Через клиент её можно изменить на false, но нельзя изменить на true (потому что сервер не отправит настройки, если в профиле пользователя установлено `apply_settings_from_server = false`).

Обратите внимание, что изначально (24.12) существовала настройка сервера (`send_settings_to_client`), но позже её заменили этой клиентской настройкой для большего удобства.

<div id="archive_adaptive_buffer_max_size_bytes">
  ## archive\_adaptive\_buffer\_max\_size\_bytes
</div>

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

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

Ограничивает максимальный размер адаптивного буфера, используемого при записи в архивные файлы (например, tar-архивы

<div id="arrow_flight_request_descriptor_type">
  ## arrow\_flight\_request\_descriptor\_type
</div>

<SettingsInfoBlock type="ArrowFlightDescriptorType" default_value="path" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "path"},{"label": "Новая настройка. Тип дескриптора для запросов Arrow Flight: 'path' или 'command'. Dremio требует 'command'."}]}]} />

Тип дескриптора для запросов Arrow Flight. 'path' отправляет имя набора данных в виде дескриптора PATH. 'command' отправляет SQL-запрос в виде дескриптора команды (требуется для Dremio).

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

* 'path' — Использовать FlightDescriptor::Path (по умолчанию; работает с большинством серверов Arrow Flight)
* 'command' — Использовать FlightDescriptor::Command с запросом SELECT (требуется для Dremio)

<div id="ast_fuzzer_any_query">
  ## ast\_fuzzer\_any\_query
</div>

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

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

Если установлено значение false (по умолчанию), AST-фаззер на стороне сервера (управляется параметром `ast_fuzzer_runs`) выполняет фаззинг только запросов в режиме только для чтения (SELECT, EXPLAIN, SHOW, DESCRIBE, EXISTS). Если true, фаззингу подвергаются все типы запросов, включая DDL и INSERT.

<div id="ast_fuzzer_runs">
  ## ast\_fuzzer\_runs
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Новая настройка для включения серверного AST-фаззера."}]}]} />

Включает серверный AST-фаззер, который после каждого обычного запроса запускает случайно сгенерированные запросы, отбрасывая их результаты.

* 0: отключено (по умолчанию).
* Значение между 0 и 1 (не включая границы): вероятность запуска одного фаззинг-запроса.
* Значение >= 1: число фаззинг-запросов, запускаемых на каждый обычный запрос.

Фаззер накапливает AST-фрагменты из всех запросов во всех сеансах, со временем создавая всё более интересные мутации. Фаззинг-запросы, завершающиеся ошибкой, молча отбрасываются; результаты клиенту не возвращаются.

<div id="asterisk_include_alias_columns">
  ## asterisk\_include\_alias\_columns
</div>

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

Учитывать столбцы [ALIAS](/ru/reference/statements/create/table#alias) в запросе с подстановочным символом (`SELECT *`).

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

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

<div id="asterisk_include_materialized_columns">
  ## asterisk\_include\_materialized\_columns
</div>

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

Включать столбцы [MATERIALIZED](/ru/reference/statements/create/view#materialized-view) в запросах с подстановочным знаком (`SELECT *`).

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

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

<div id="asterisk_include_virtual_columns">
  ## asterisk\_include\_virtual\_columns
</div>

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

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

Включать виртуальные столбцы в запросе с подстановочным символом (`SELECT *`).

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

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

<div id="async_insert">
  ## async\_insert
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Включает async inserts по умолчанию."}]}]} />

Если значение равно true, данные из запроса INSERT сохраняются в очереди и позже в фоновом режиме записываются в таблицу. Если wait\_for\_async\_insert имеет значение false, запрос INSERT обрабатывается почти мгновенно, в противном случае клиент будет ждать, пока данные не будут записаны в таблицу

<div id="async_insert_busy_timeout_decrease_rate">
  ## async\_insert\_busy\_timeout\_decrease\_rate
</div>

<SettingsInfoBlock type="Double" default_value="0.2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0.2"},{"label": "Коэффициент, определяющий скорость экспоненциального уменьшения адаптивного тайм-аута асинхронной вставки"}]}]} />

Коэффициент, определяющий скорость экспоненциального уменьшения адаптивного тайм-аута асинхронной вставки

<div id="async_insert_busy_timeout_increase_rate">
  ## async\_insert\_busy\_timeout\_increase\_rate
</div>

<SettingsInfoBlock type="Double" default_value="0.2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0.2"},{"label": "Скорость экспоненциального роста, с которой увеличивается адаптивный тайм-аут асинхронной вставки"}]}]} />

Скорость экспоненциального роста, с которой увеличивается адаптивный тайм-аут асинхронной вставки

<div id="async_insert_busy_timeout_max_ms">
  ## async\_insert\_busy\_timeout\_max\_ms
</div>

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

<SettingsInfoBlock type="Миллисекунды" default_value="200" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "200"},{"label": "Минимальное значение тайм-аута асинхронной вставки в миллисекундах; async_insert_busy_timeout_ms — псевдоним async_insert_busy_timeout_max_ms"}]}]} />

Максимальное время ожидания перед сбросом собранных данных по каждому запросу с момента поступления первых данных.

Значение по умолчанию в Cloud: `1000` (1s).

<div id="async_insert_busy_timeout_min_ms">
  ## async\_insert\_busy\_timeout\_min\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "50"},{"label": "Минимальное значение тайм-аута асинхронной вставки в миллисекундах; также служит начальным значением, которое впоследствии может быть увеличено адаптивным алгоритмом"}]}]} />

Если автоматическая настройка включена через async\_insert\_use\_adaptive\_busy\_timeout, это минимальное время ожидания перед сбросом собранных данных для каждого запроса с момента появления первых данных. Оно также служит начальным значением для адаптивного алгоритма

<div id="async_insert_deduplicate">
  ## async\_insert\_deduplicate
</div>

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

Для асинхронных запросов INSERT в реплицируемой таблице задаёт, нужно ли выполнять дедупликацию вставляемых блоков

<div id="async_insert_max_data_size">
  ## async\_insert\_max\_data\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "10485760"},{"label": "Предыдущее значение, по-видимому, было слишком маленьким."}]}]} />

Максимальный размер в байтах неразобранных данных, накапливаемых для каждого запроса перед вставкой

Значение по умолчанию в Cloud: `104857600` (100 MiB).

<div id="async_insert_max_query_number">
  ## async\_insert\_max\_query\_number
</div>

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

Максимальное количество запросов на вставку до выполнения вставки.
Применяется только в том случае, если значение настройки [`async_insert_deduplicate`](#async_insert_deduplicate) равно 1.

<div id="async_insert_poll_timeout_ms">
  ## async\_insert\_poll\_timeout\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "10"},{"label": "Тайм-аут в миллисекундах при опросе данных из очереди асинхронной вставки"}]}]} />

Тайм-аут при опросе данных из очереди асинхронной вставки

<div id="async_insert_use_adaptive_busy_timeout">
  ## async\_insert\_use\_adaptive\_busy\_timeout
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Использовать адаптивный тайм-аут асинхронной вставки"}]}]} />

Если установлено значение true, для асинхронных вставок используется адаптивный тайм-аут

<div id="async_query_sending_for_remote">
  ## async\_query\_sending\_for\_remote
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.3"},{"label": "1"},{"label": "Асинхронное создание соединений и отправка запросов по сегментам"}]}]} />

Включает асинхронное создание соединений и отправку запросов при выполнении удаленного запроса.

Включено по умолчанию.

<div id="async_socket_for_remote">
  ## async\_socket\_for\_remote
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.5"},{"label": "1"},{"label": "Исправить все проблемы и снова включить по умолчанию асинхронное чтение из сокета для удаленных запросов"}]}, {"id": "row-2","items": [{"label": "21.3"},{"label": "0"},{"label": "Отключить асинхронное чтение из сокета для удаленных запросов из-за некоторых проблем"}]}]} />

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

Включено по умолчанию.

<div id="automatic_parallel_replicas_min_bytes_per_replica">
  ## automatic\_parallel\_replicas\_min\_bytes\_per\_replica
</div>

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

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

Порог количества байт для чтения на одну реплику, при достижении которого параллельные реплики включаются автоматически (применяется только при `automatic_parallel_replicas_mode`=1). 0 означает отсутствие порога.
Общее количество байт для чтения оценивается на основе собранной статистики.

<div id="automatic_parallel_replicas_mode">
  ## automatic\_parallel\_replicas\_mode
</div>

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

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

Включает автоматическое переключение на выполнение с параллельными репликами на основе собранной статистики. Требует `enable_analyzer = 1`, `enable_parallel_replicas != 0`, `parallel_replicas_local_plan = 1` и указания `cluster_for_parallel_replicas`.
0 — отключено, 1 — включено, 2 — включен только сбор статистики (переключение на выполнение с параллельными репликами отключено).

<div id="azure_allow_parallel_part_upload">
  ## azure\_allow\_parallel\_part\_upload
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "true"},{"label": "Использовать несколько потоков для multipart-загрузки в Azure."}]}]} />

Использовать несколько потоков для multipart-загрузки в Azure.

<div id="azure_check_objects_after_upload">
  ## azure\_check\_objects\_after\_upload
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Проверять каждый загруженный объект в Azure Blob Storage, чтобы убедиться, что он был успешно загружен"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Проверять каждый загруженный объект в Azure Blob Storage, чтобы убедиться, что он был успешно загружен"}]}]} />

Проверять каждый загруженный объект в Azure Blob Storage, чтобы убедиться, что он был успешно загружен

<div id="azure_connect_timeout_ms">
  ## azure\_connect\_timeout\_ms
</div>

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

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

Тайм-аут подключения к хосту для дисков Azure.

<div id="azure_create_new_file_on_insert">
  ## azure\_create\_new\_file\_on\_insert
</div>

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

Включает или отключает создание нового файла при каждой вставке в таблицах движка Azure

<div id="azure_ignore_file_doesnt_exist">
  ## azure\_ignore\_file\_doesnt\_exist
</div>

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

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

Игнорирует отсутствие файла при чтении определённых ключей, если файл не существует.

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

* 1 — `SELECT` возвращает пустой результат.
* 0 — `SELECT` генерирует исключение.

<div id="azure_list_object_keys_size">
  ## azure\_list\_object\_keys\_size
</div>

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

Максимальное количество файлов, которое может вернуть запрос ListObject за один батч

<div id="azure_max_blocks_in_multipart_upload">
  ## azure\_max\_blocks\_in\_multipart\_upload
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "50000"},{"label": "Максимальное количество блоков при multipart-загрузке в Azure."}]}]} />

Максимальное количество блоков при multipart-загрузке в Azure.

<div id="azure_max_get_burst">
  ## azure\_max\_get\_burst
</div>

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

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

Максимальное количество запросов, которые можно выполнять одновременно до достижения ограничения на количество запросов в секунду. По умолчанию (0) равно `azure_max_get_rps`

<div id="azure_max_get_rps">
  ## azure\_max\_get\_rps
</div>

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

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

Ограничение на число Azure GET-запросов в секунду до начала throttling. Ноль означает отсутствие ограничений.

<div id="azure_max_inflight_parts_for_one_file">
  ## azure\_max\_inflight\_parts\_for\_one\_file
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "20"},{"label": "Максимальное количество частей, одновременно загружаемых в запросе multipart-загрузки. 0 означает отсутствие ограничений."}]}]} />

Максимальное количество частей, одновременно загружаемых в запросе multipart-загрузки. 0 означает отсутствие ограничений.

<div id="azure_max_put_burst">
  ## azure\_max\_put\_burst
</div>

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

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

Максимальное количество запросов, которые можно отправить одновременно до достижения лимита запросов в секунду. По умолчанию (0) равно `azure_max_put_rps`

<div id="azure_max_put_rps">
  ## azure\_max\_put\_rps
</div>

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

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

Ограничение на количество Azure PUT-запросов в секунду до начала троттлинга. Ноль означает отсутствие ограничений.

<div id="azure_max_redirects">
  ## azure\_max\_redirects
</div>

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

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

Максимально допустимое количество перенаправлений Azure.

<div id="azure_max_single_part_copy_size">
  ## azure\_max\_single\_part\_copy\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "268435456"},{"label": "Максимальный размер объекта, копируемого в Azure Blob Storage за одну операцию однокомпонентного копирования."}]}]} />

Максимальный размер объекта, копируемого в Azure Blob Storage за одну операцию однокомпонентного копирования.

<div id="azure_max_single_part_upload_size">
  ## azure\_max\_single\_part\_upload\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "33554432"},{"label": "Приведено в соответствие с S3"}]}]} />

Максимальный размер объекта для загрузки в Azure Blob Storage одной частью.

<div id="azure_max_single_read_retries">
  ## azure\_max\_single\_read\_retries
</div>

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

Максимальное количество повторных попыток при однократном чтении из Azure Blob Storage.

<div id="azure_max_unexpected_write_error_retries">
  ## azure\_max\_unexpected\_write\_error\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "4"},{"label": "Максимальное количество повторных попыток в случае непредвиденных ошибок при записи в Azure Blob Storage"}]}]} />

Максимальное количество повторных попыток в случае непредвиденных ошибок при записи в Azure Blob Storage

<div id="azure_max_upload_part_size">
  ## azure\_max\_upload\_part\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "5368709120"},{"label": "Максимальный размер части, загружаемой при multipart-загрузке в Azure Blob Storage."}]}]} />

Максимальный размер части, загружаемой при multipart-загрузке в Azure Blob Storage.

<div id="azure_min_upload_part_size">
  ## azure\_min\_upload\_part\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "16777216"},{"label": "Минимальный размер части, загружаемой при multipart-загрузке в Azure Blob Storage."}]}]} />

Минимальный размер части, загружаемой при multipart-загрузке в Azure Blob Storage.

<div id="azure_request_timeout_ms">
  ## azure\_request\_timeout\_ms
</div>

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

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

Тайм-аут бездействия при отправке и получении данных в/из Azure. Если один вызов TCP на чтение или запись блокируется на это время, операция завершается с ошибкой.

<div id="azure_sdk_max_retries">
  ## azure\_sdk\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "10"},{"label": "Максимальное число повторных попыток в Azure SDK"}]}]} />

Максимальное число повторных попыток в Azure SDK

<div id="azure_sdk_retry_initial_backoff_ms">
  ## azure\_sdk\_retry\_initial\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "10"},{"label": "Минимальная задержка между повторными попытками в Azure SDK"}]}]} />

Минимальная задержка между повторными попытками в Azure SDK

<div id="azure_sdk_retry_max_backoff_ms">
  ## azure\_sdk\_retry\_max\_backoff\_ms
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1000"},{"label": "Максимальная задержка между повторными попытками в Azure SDK"}]}]} />

Максимальная задержка между повторными попытками в Azure SDK

<div id="azure_skip_empty_files">
  ## azure\_skip\_empty\_files
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Разрешает пропускать пустые файлы в движке таблицы Azure"}]}]} />

Включает или отключает пропуск пустых файлов в движке S3.

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

* 0 — `SELECT` генерирует исключение, если пустой файл несовместим с запрошенным форматом.
* 1 — `SELECT` возвращает пустой результат для пустого файла.

<div id="azure_strict_upload_part_size">
  ## azure\_strict\_upload\_part\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Точный размер части, загружаемой при multipart-загрузке в Azure Blob Storage."}]}]} />

Точный размер части, загружаемой при multipart-загрузке в Azure Blob Storage.

<div id="azure_throw_on_zero_files_match">
  ## azure\_throw\_on\_zero\_files\_match
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Разрешает генерировать ошибку, если запрос ListObjects не находит ни одного файла в движке AzureBlobStorage, вместо возврата пустого результата запроса"}]}]} />

Генерировать ошибку, если по правилам раскрытия glob не найдено ни одного файла.

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

* 1 — `SELECT` генерирует исключение.
* 0 — `SELECT` возвращает пустой результат.

<div id="azure_truncate_on_insert">
  ## azure\_truncate\_on\_insert
</div>

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

Включает или отключает выполнение TRUNCATE перед вставкой в таблицы движка Azure.

<div id="azure_upload_part_size_multiply_factor">
  ## azure\_upload\_part\_size\_multiply\_factor
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "2"},{"label": "Умножать azure_min_upload_part_size на этот коэффициент каждый раз, когда в результате одной операции записи в Azure Blob Storage было загружено azure_multiply_parts_count_threshold частей."}]}]} />

Умножать azure\_min\_upload\_part\_size на этот коэффициент каждый раз, когда в результате одной операции записи в Azure Blob Storage было загружено azure\_multiply\_parts\_count\_threshold частей.

<div id="azure_upload_part_size_multiply_parts_count_threshold">
  ## azure\_upload\_part\_size\_multiply\_parts\_count\_threshold
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "500"},{"label": "Каждый раз, когда в Azure Blob Storage загружается такое количество частей, значение azure_min_upload_part_size умножается на azure_upload_part_size_multiply_factor."}]}]} />

Каждый раз, когда в Azure Blob Storage загружается такое количество частей, значение azure\_min\_upload\_part\_size умножается на azure\_upload\_part\_size\_multiply\_factor.

<div id="azure_use_adaptive_timeouts">
  ## azure\_use\_adaptive\_timeouts
</div>

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

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

Если установлено значение `true`, то для всех запросов к Azure первые две попытки выполняются с меньшими тайм-аутами отправки и получения.
Если установлено значение `false`, то все попытки выполняются с одинаковыми тайм-аутами.

<div id="backup_restore_batch_size_for_keeper_multi">
  ## backup\_restore\_batch\_size\_for\_keeper\_multi
</div>

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

Максимальный размер батча для multi-запроса к \[Zoo]Keeper при резервном копировании или восстановлении

<div id="backup_restore_batch_size_for_keeper_multiread">
  ## backup\_restore\_batch\_size\_for\_keeper\_multiread
</div>

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

Максимальный размер батча для multiread-запроса к \[Zoo]Keeper при резервном копировании или восстановлении

<div id="backup_restore_failure_after_host_disconnected_for_seconds">
  ## backup\_restore\_failure\_after\_host\_disconnected\_for\_seconds
</div>

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

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

Если во время операции BACKUP ON CLUSTER или RESTORE ON CLUSTER хост не воссоздаёт свой эфемерный узел 'alive' в ZooKeeper в течение этого времени, то вся операция резервного копирования или восстановления считается неуспешной.
Это значение должно быть больше любого разумного времени, необходимого хосту для повторного подключения к ZooKeeper после сбоя.
Ноль означает отсутствие ограничения.

<div id="backup_restore_finish_timeout_after_error_sec">
  ## backup\_restore\_finish\_timeout\_after\_error\_sec
</div>

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

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

Как долго инициатор должен ждать, пока другие хосты отреагируют на узел 'error' и прекратят работу в рамках текущей операции BACKUP ON CLUSTER или RESTORE ON CLUSTER.

<div id="backup_restore_keeper_fault_injection_probability">
  ## backup\_restore\_keeper\_fault\_injection\_probability
</div>

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

Примерная вероятность сбоя запроса к Keeper во время резервного копирования или восстановления. Допустимое значение — в интервале \[0.0f, 1.0f]

<div id="backup_restore_keeper_fault_injection_seed">
  ## backup\_restore\_keeper\_fault\_injection\_seed
</div>

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

0 — случайное начальное значение генератора случайных чисел, иначе — значение настройки

<div id="backup_restore_keeper_max_retries">
  ## backup\_restore\_keeper\_max\_retries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1000"},{"label": "Значение должно быть достаточно большим, чтобы операция BACKUP или RESTORE целиком не завершилась с ошибкой из-за временного сбоя [Zoo]Keeper в процессе выполнения."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1000"},{"label": "Значение должно быть достаточно большим, чтобы операция BACKUP или RESTORE целиком не завершилась с ошибкой из-за временного сбоя [Zoo]Keeper в процессе выполнения."}]}]} />

Максимальное число повторных попыток для операций с \[Zoo]Keeper во время выполнения операции BACKUP или RESTORE.
Значение должно быть достаточно большим, чтобы вся операция не завершилась с ошибкой из-за временного сбоя \[Zoo]Keeper.

<div id="backup_restore_keeper_max_retries_while_handling_error">
  ## backup\_restore\_keeper\_max\_retries\_while\_handling\_error
</div>

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

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

Максимальное число повторных попыток для операций \[Zoo]Keeper при обработке ошибки в операции BACKUP ON CLUSTER или RESTORE ON CLUSTER.

<div id="backup_restore_keeper_max_retries_while_initializing">
  ## backup\_restore\_keeper\_max\_retries\_while\_initializing
</div>

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

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

Максимальное количество повторных попыток операций \[Zoo]Keeper при инициализации операции BACKUP ON CLUSTER или RESTORE ON CLUSTER.

<div id="backup_restore_keeper_retry_initial_backoff_ms">
  ## backup\_restore\_keeper\_retry\_initial\_backoff\_ms
</div>

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

Тайм-аут начальной задержки перед повторной попыткой для операций \[Zoo]Keeper при резервном копировании или восстановлении

<div id="backup_restore_keeper_retry_max_backoff_ms">
  ## backup\_restore\_keeper\_retry\_max\_backoff\_ms
</div>

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

Максимальный тайм-аут задержки между повторными попытками для операций \[Zoo]Keeper при резервном копировании или восстановлении

Значение по умолчанию в Cloud: `60000`.

<div id="backup_restore_keeper_value_max_size">
  ## backup\_restore\_keeper\_value\_max\_size
</div>

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

Максимальный размер данных узла \[Zoo]Keeper при создании резервной копии

<div id="backup_restore_s3_retry_attempts">
  ## backup\_restore\_s3\_retry\_attempts
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1000"},{"label": "Настройка для Aws::Client::RetryStrategy; Aws::Client самостоятельно выполняет повторные попытки, 0 означает, что повторные попытки отключены. Используется только для резервного копирования/восстановления."}]}]} />

Настройка для Aws::Client::RetryStrategy; Aws::Client самостоятельно выполняет повторные попытки, 0 означает, что повторные попытки отключены. Используется только для резервного копирования/восстановления.

<div id="backup_restore_s3_retry_initial_backoff_ms">
  ## backup\_restore\_s3\_retry\_initial\_backoff\_ms
</div>

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

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

Начальная задержка в миллисекундах перед первой повторной попыткой при резервном копировании и восстановлении. При каждой последующей повторной попытке задержка экспоненциально увеличивается вплоть до максимального значения, указанного в `backup_restore_s3_retry_max_backoff_ms`

<div id="backup_restore_s3_retry_jitter_factor">
  ## backup\_restore\_s3\_retry\_jitter\_factor
</div>

<SettingsInfoBlock type="Float" default_value="0.1" />

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

Коэффициент джиттера, применяемый к задержке backoff при повторных попытках в Aws::Client::RetryStrategy во время операций резервного копирования и восстановления. Вычисленная задержка backoff умножается на случайный коэффициент в диапазоне \[1.0, 1.0 + jitter], но не более максимального значения `backup_restore_s3_retry_max_backoff_ms`. Должен находиться в интервале \[0.0, 1.0]

<div id="backup_restore_s3_retry_max_backoff_ms">
  ## backup\_restore\_s3\_retry\_max\_backoff\_ms
</div>

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

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

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

<div id="backup_slow_all_threads_after_retryable_s3_error">
  ## backup\_slow\_all\_threads\_after\_retryable\_s3\_error
</div>

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

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

Если установлено значение `true`, все потоки, выполняющие запросы S3 к одной и той же конечной точке резервного копирования, замедляются
после того, как хотя бы один запрос S3 получает ошибку S3, допускающую повторную попытку, например 'Slow Down'.
Если установлено значение `false`, каждый поток обрабатывает задержку запросов S3 независимо от остальных.

<div id="cache_warmer_threads">
  ## cache\_warmer\_threads
</div>

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

Действует только в ClickHouse Cloud. Количество фоновых потоков для упреждающей загрузки новых частей данных в файловый кэш при включенном [cache\_populated\_by\_fetch](/ru/reference/settings/merge-tree-settings#cache_populated_by_fetch). Значение 0 отключает эту возможность.

<div id="calculate_text_stack_trace">
  ## calculate\_text\_stack\_trace
</div>

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

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

<div id="cancel_http_readonly_queries_on_client_close">
  ## cancel\_http\_readonly\_queries\_on\_client\_close
</div>

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

Отменяет HTTP-запросы только для чтения (например, `SELECT`), если клиент закрывает соединение, не дождавшись ответа.

Значение по умолчанию в Cloud: `1`.

<div id="cast_ipv4_ipv6_default_on_conversion_error">
  ## cast\_ipv4\_ipv6\_default\_on\_conversion\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.3"},{"label": "0"},{"label": "Сделать так, чтобы функции cast(value, 'IPv4') и cast(value, 'IPv6') вели себя так же, как функции toIPv4 и toIPv6"}]}]} />

Оператор CAST к IPv4, оператор CAST к типу IPv6, а также функции toIPv4 и toIPv6 будут возвращать значение по умолчанию вместо того, чтобы сгенерировать исключение при ошибке преобразования.

<div id="cast_keep_nullable">
  ## cast\_keep\_nullable
</div>

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

Включает или отключает сохранение типа данных `Nullable` в операциях [CAST](/ru/reference/functions/regular-functions/type-conversion-functions#CAST).

Если настройка включена и аргумент функции `CAST` имеет тип `Nullable`, результат также преобразуется в тип `Nullable`. Если настройка отключена, результат всегда имеет в точности указанный тип пункта назначения.

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

* 0 — Результат `CAST` имеет в точности указанный тип пункта назначения.
* 1 — Если аргумент имеет тип `Nullable`, результат `CAST` преобразуется в `Nullable(DestinationDataType)`.

**Примеры**

Следующий запрос возвращает результат с точно указанным типом пункта назначения:

```sql theme={null}
SET cast_keep_nullable = 0;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
```

Результат:

```text theme={null}
┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Int32                                             │
└───┴───────────────────────────────────────────────────┘
```

Следующий запрос приводит к применению модификатора `Nullable` к целевому типу данных:

```sql theme={null}
SET cast_keep_nullable = 1;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
```

Результат:

```text theme={null}
┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Nullable(Int32)                                   │
└───┴───────────────────────────────────────────────────┘
```

**См. также**

* [CAST](/ru/reference/functions/regular-functions/type-conversion-functions#CAST) функция

<div id="cast_string_to_date_time_mode">
  ## cast\_string\_to\_date\_time\_mode
</div>

<SettingsInfoBlock type="DateTimeInputFormat" default_value="best_effort" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "best_effort"},{"label": "Повышено удобство использования"}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "basic"},{"label": "Разрешено использовать разные режимы разбора DateTime при приведении String к DateTime"}]}]} />

Позволяет выбрать парсер текстового представления даты и времени при приведении из String.

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

* `'best_effort'` — Включает расширенный разбор.

  ClickHouse может разбирать базовый формат `YYYY-MM-DD HH:MM:SS` и все форматы даты и времени [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Например, `'2018-06-08T01:02:03.000Z'`.

* `'best_effort_us'` — Аналогично `best_effort` (различия см. в [parseDateTimeBestEffortUS](/ru/reference/functions/regular-functions/type-conversion-functions#parseDateTimeBestEffortUS)

* `'basic'` — Использует базовый парсер.

  ClickHouse может разбирать только базовый формат `YYYY-MM-DD HH:MM:SS` или `YYYY-MM-DD`. Например, `2019-08-20 10:18:56` или `2019-08-20`.

См. также:

* [Тип данных DateTime.](/ru/reference/data-types/datetime)
* [Функции для работы с датой и временем.](/ru/reference/functions/regular-functions/date-time-functions)

<div id="cast_string_to_dynamic_use_inference">
  ## cast\_string\_to\_dynamic\_use\_inference
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "0"},{"label": "Добавлена настройка, позволяющая преобразовывать String в Dynamic через парсинг"}]}]} />

Использовать вывод типов при преобразовании String в Dynamic

<div id="cast_string_to_variant_use_inference">
  ## cast\_string\_to\_variant\_use\_inference
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Новая настройка для включения/отключения определения типов при CAST из String в Variant"}]}]} />

Использовать определение типов при преобразовании String в Variant.

<div id="check_named_collection_dependencies">
  ## check\_named\_collection\_dependencies
</div>

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

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

Проверяет, что DROP NAMED COLLECTION не приведёт к нарушению работы зависящих от неё таблиц

<div id="check_query_single_value_result">
  ## check\_query\_single\_value\_result
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Изменена настройка, чтобы сделать CHECK TABLE более информативной"}]}]} />

Определяет уровень детализации результата запроса [CHECK TABLE](/ru/reference/statements/check-table) для движков семейства `MergeTree` .

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

* 0 — запрос показывает статус проверки для каждой отдельной части данных таблицы.
* 1 — запрос показывает общий статус проверки таблицы.

<div id="check_referential_table_dependencies">
  ## check\_referential\_table\_dependencies
</div>

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

Проверьте, что DDL-запрос (например, DROP TABLE или RENAME) не нарушит ссылочную целостность зависимостей

<div id="check_table_dependencies">
  ## check\_table\_dependencies
</div>

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

Проверьте, что DDL-запрос (например, DROP TABLE или RENAME) не нарушает зависимости

<div id="checksum_on_read">
  ## checksum\_on\_read
</div>

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

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

<div id="cloud_mode">
  ## cloud\_mode
</div>

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

Режим Cloud

Значение по умолчанию в Cloud: `1`.

<div id="cloud_mode_database_engine">
  ## cloud\_mode\_database\_engine
</div>

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

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

Движок базы данных, допустимый в Cloud. 1 — переписывать DDL-запросы с использованием базы данных Replicated, 2 — переписывать DDL-запросы с использованием базы данных Shared

Значение по умолчанию в Cloud: `2`.

<div id="cloud_mode_engine">
  ## cloud\_mode\_engine
</div>

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

Семейство движков, разрешённых в Cloud.

* 0 - разрешить всё
* 1 - переписывать DDL-запросы с использованием \*ReplicatedMergeTree
* 2 - переписывать DDL-запросы с использованием SharedMergeTree
* 3 - переписывать DDL-запросы с использованием SharedMergeTree, кроме случаев, когда явно указан удалённый диск
* 4 - то же, что и 3, но дополнительно использовать Alias вместо Distributed (таблица Alias будет указывать на целевую таблицу таблицы Distributed, поэтому будет использоваться соответствующая локальная таблица)

UInt64 для минимизации публичной части

Значение по умолчанию в Cloud: `2`.

<div id="cluster_for_parallel_replicas">
  ## cluster\_for\_parallel\_replicas
</div>

Кластер для сегмента, в котором находится текущий сервер

Значение по умолчанию в Cloud: `default`.

<div id="cluster_function_process_archive_on_multiple_nodes">
  ## cluster\_function\_process\_archive\_on\_multiple\_nodes
</div>

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

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

Если установлено значение `true`, повышает производительность обработки архивов в функциях cluster. Для совместимости и во избежание ошибок при обновлении до 25.7+ следует установить значение `false`, если вы используете функции cluster с архивами в версиях ниже 25.7.

<div id="cluster_table_function_buckets_batch_size">
  ## cluster\_table\_function\_buckets\_batch\_size
</div>

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

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

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

<div id="cluster_table_function_split_granularity">
  ## cluster\_table\_function\_split\_granularity
</div>

<SettingsInfoBlock type="ObjectStorageGranularityLevel" default_value="file" />

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

Управляет тем, как данные разделяются на задачи при выполнении CLUSTER TABLE FUNCTION.

Эта настройка определяет гранулярность распределения работы по кластеру:

* `file` — каждая задача обрабатывает файл целиком.
* `bucket` — задачи создаются для каждого внутреннего блока данных в файле (например, для групп строк в Parquet).

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

<div id="collect_hash_table_stats_during_aggregation">
  ## collect\_hash\_table\_stats\_during\_aggregation
</div>

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

Включает сбор статистики хеш-таблицы для оптимизации выделения памяти

<div id="collect_hash_table_stats_during_joins">
  ## collect\_hash\_table\_stats\_during\_joins
</div>

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

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

Включает сбор статистики хеш-таблиц для оптимизации выделения памяти

<div id="compatibility">
  ## compatibility
</div>

Параметр `compatibility` заставляет ClickHouse использовать настройки по умолчанию из предыдущей версии ClickHouse, номер которой задается в этом параметре.

Если для каких-либо настроек заданы значения, отличные от значений по умолчанию, они сохраняются (параметр `compatibility` влияет только на те настройки, которые не были изменены).

Этот параметр принимает номер версии ClickHouse в виде строки, например `22.3` или `22.8`. Пустое значение означает, что параметр отключен.

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

<Note>
  В ClickHouse Cloud значение параметра compatibility по умолчанию на уровне сервиса должна задавать служба поддержки ClickHouse Cloud. Чтобы его установили, [создайте обращение](https://clickhouse.cloud/support).
  Однако параметр compatibility можно переопределить на уровне пользователя, роли, profile, запроса или сеанса с помощью стандартных механизмов настройки ClickHouse, например `SET compatibility = '22.3'` в сеансе или `SETTINGS compatibility = '22.3'` в запросе.
</Note>

<div id="compatibility_ignore_auto_increment_in_create_table">
  ## compatibility\_ignore\_auto\_increment\_in\_create\_table
</div>

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

Игнорировать ключевое слово AUTO\_INCREMENT в объявлении столбца, если true; в противном случае возвращать ошибку. Это упрощает миграцию с MySQL

<div id="compatibility_ignore_collation_in_create_table">
  ## compatibility\_ignore\_collation\_in\_create\_table
</div>

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

Параметр совместимости: игнорировать collation в CREATE TABLE

<div id="compatibility_s3_presigned_url_query_in_path">
  ## compatibility\_s3\_presigned\_url\_query\_in\_path
</div>

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

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

Совместимость: если включено, параметры запроса предподписанного URL (например, X-Amz-\*) включаются в ключ S3 (устаревшее поведение),
поэтому '?' обрабатывается как подстановочный знак в пути. Если отключено (по умолчанию), параметры запроса предподписанного URL сохраняются в строке запроса URL,
чтобы '?' не интерпретировался как подстановочный знак.

<div id="compile_aggregate_expressions">
  ## compile\_aggregate\_expressions
</div>

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

Включает или отключает JIT-компиляцию агрегатных функций в нативный код. Включение этой настройки может повысить производительность.

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

* 0 — агрегация выполняется без JIT-компиляции.
* 1 — агрегация выполняется с использованием JIT-компиляции.

**См. также**

* [min\_count\_to\_compile\_aggregate\_expression](#min_count_to_compile_aggregate_expression)

<div id="compile_expressions">
  ## compile\_expressions
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Мы считаем, что инфраструктура LLVM, лежащая в основе JIT-компилятора, достаточно стабильна, чтобы включить эту настройку по умолчанию."}]}]} />

Компилирует некоторые скалярные функции и операторы в нативный код.

<div id="compile_sort_description">
  ## compile\_sort\_description
</div>

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

Компиляция описания сортировки в нативный код.

<div id="connect_timeout">
  ## connect\_timeout
</div>

<SettingsInfoBlock type="Секунды" default_value="10" />

Тайм-аут соединения, если реплики отсутствуют.

<div id="connect_timeout_with_failover_ms">
  ## connect\_timeout\_with\_failover\_ms
</div>

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

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

Тайм-аут в миллисекундах для подключения к удалённому серверу для distributed таблицы, если в определении cluster используются секции 'shard' и 'replica'.
Если подключиться не удаётся, выполняется несколько попыток подключения к разным репликам.

<div id="connect_timeout_with_failover_secure_ms">
  ## connect\_timeout\_with\_failover\_secure\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "1000"},{"label": "Увеличен тайм-аут защищённого подключения по умолчанию из-за асинхронного подключения"}]}]} />

Тайм-аут подключения при выборе первой работоспособной реплики (для защищённых соединений).

<div id="connection_pool_max_wait_ms">
  ## connection\_pool\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="0" />

Время ожидания соединения в миллисекундах, если пул соединений заполнен.

Possible values:

* Положительное целое число.
* 0 — бесконечный тайм-аут.

<div id="connections_with_failover_max_tries">
  ## connections\_with\_failover\_max\_tries
</div>

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

Максимальное количество попыток установить соединение с каждой репликой для движка таблицы Distributed.

<div id="convert_query_to_cnf">
  ## convert\_query\_to\_cnf
</div>

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

Если задано значение `true`, запрос `SELECT` будет преобразован в конъюнктивную нормальную форму (CNF). В некоторых случаях преобразование запроса в CNF может выполняться быстрее (объяснение см. в этом [Github issue](https://github.com/ClickHouse/ClickHouse/issues/11749)).

Например, обратите внимание, что следующий запрос `SELECT` не изменяется (это поведение по умолчанию):

```sql theme={null}
EXPLAIN SYNTAX
SELECT *
FROM
(
    SELECT number AS x
    FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = false;
```

В результате:

```response theme={null}
┌─explain────────────────────────────────────────────────────────┐
│ SELECT x                                                       │
│ FROM                                                           │
│ (                                                              │
│     SELECT number AS x                                         │
│     FROM numbers(20)                                           │
│     WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15)) │
│ ) AS a                                                         │
│ WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))     │
│ SETTINGS convert_query_to_cnf = 0                              │
└────────────────────────────────────────────────────────────────┘
```

Давайте установим для `convert_query_to_cnf` значение `true` и посмотрим, что изменится:

```sql theme={null}
EXPLAIN SYNTAX
SELECT *
FROM
(
    SELECT number AS x
    FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = true;
```

Обратите внимание: условие `WHERE` переписано в КНФ, но результирующий набор остался тем же — булева логика не изменилась:

```response theme={null}
┌─explain───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SELECT x                                                                                                              │
│ FROM                                                                                                                  │
│ (                                                                                                                     │
│     SELECT number AS x                                                                                                │
│     FROM numbers(20)                                                                                                  │
│     WHERE ((x <= 15) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x >= 10) OR (x >= 1)) │
│ ) AS a                                                                                                                │
│ WHERE ((x >= 10) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x <= 15) OR (x <= 5))     │
│ SETTINGS convert_query_to_cnf = 1                                                                                     │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

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

<div id="correlated_subqueries_default_join_kind">
  ## correlated\_subqueries\_default\_join\_kind
</div>

<SettingsInfoBlock type="DecorrelationJoinKind" default_value="right" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "right"},{"label": "Новая настройка. Тип JOIN по умолчанию для декоррелированного плана запроса."}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "right"},{"label": "Новая настройка. Тип JOIN по умолчанию для декоррелированного плана запроса."}]}]} />

Управляет типом JOIN в декоррелированном плане запроса. Значение по умолчанию — `right`, то есть декоррелированный план будет содержать RIGHT JOIN, где подзапрос находится в правой части.

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

* `left` - В процессе декорреляции будут создаваться LEFT JOIN, и входная таблица будет находиться в левой части.
* `right` - В процессе декорреляции будут создаваться RIGHT JOIN, и входная таблица будет находиться в правой части.

<div id="correlated_subqueries_substitute_equivalent_expressions">
  ## correlated\_subqueries\_substitute\_equivalent\_expressions
</div>

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

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

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

<div id="correlated_subqueries_use_in_memory_buffer">
  ## correlated\_subqueries\_use\_in\_memory\_buffer
</div>

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

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

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

<div id="count_distinct_implementation">
  ## count\_distinct\_implementation
</div>

<SettingsInfoBlock type="String" default_value="uniqExact" />

Указывает, какая из функций `uniq*` используется для выполнения конструкции [COUNT(DISTINCT ...)](/ru/reference/functions/aggregate-functions/count).

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

* [uniq](/ru/reference/functions/aggregate-functions/uniq)
* [uniqCombined](/ru/reference/functions/aggregate-functions/uniqCombined)
* [uniqCombined64](/ru/reference/functions/aggregate-functions/uniqCombined64)
* [uniqHLL12](/ru/reference/functions/aggregate-functions/uniqHLL12)
* [uniqExact](/ru/reference/functions/aggregate-functions/uniqExact)

<div id="count_distinct_optimization">
  ## count\_distinct\_optimization
</div>

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

Преобразовывать count distinct в подзапрос с group by

<div id="count_matches_stop_at_empty_match">
  ## count\_matches\_stop\_at\_empty\_match
</div>

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

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

Прекращает подсчёт, как только шаблон регулярного выражения в функции `countMatches` даёт совпадение нулевой длины.

<div id="create_if_not_exists">
  ## create\_if\_not\_exists
</div>

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

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

По умолчанию включает `IF NOT EXISTS` в операторе `CREATE`. Если указан либо этот параметр, либо `IF NOT EXISTS`, и таблица с указанным именем уже существует, исключение не будет выброшено.

<div id="create_index_ignore_unique">
  ## create\_index\_ignore\_unique
</div>

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

Игнорирует ключевое слово UNIQUE в CREATE UNIQUE INDEX. Предназначено для тестов совместимости с SQL.

<div id="create_replicated_merge_tree_fault_injection_probability">
  ## create\_replicated\_merge\_tree\_fault\_injection\_probability
</div>

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

Вероятность внедрения сбоя при создании table после создания метаданных в ZooKeeper

<div id="create_table_empty_primary_key_by_default">
  ## create\_table\_empty\_primary\_key\_by\_default
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Повышение удобства использования"}]}]} />

Разрешает создавать таблицы семейства \*MergeTree с пустым первичным ключом, если не указаны ORDER BY и PRIMARY KEY

<div id="cross_join_min_bytes_to_compress">
  ## cross\_join\_min\_bytes\_to\_compress
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "1073741824"},{"label": "Минимальный размер блока для сжатия в CROSS JOIN. Нулевое значение означает, что этот порог отключён. Блок сжимается при достижении любого из двух порогов (по строкам или по байтам)."}]}]} />

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

<div id="cross_join_min_rows_to_compress">
  ## cross\_join\_min\_rows\_to\_compress
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "10000000"},{"label": "Минимальное количество строк для сжатия блока в CROSS JOIN. Нулевое значение означает, что этот порог отключён. Блок сжимается при достижении любого из двух порогов — по числу строк или по числу байтов."}]}]} />

Минимальное количество строк для сжатия блока в CROSS JOIN. Нулевое значение означает, что этот порог отключён. Блок сжимается при достижении любого из двух порогов — по числу строк или по числу байтов.

<div id="cross_to_inner_join_rewrite">
  ## cross\_to\_inner\_join\_rewrite
</div>

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

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

Использовать INNER JOIN вместо JOIN через запятую/CROSS JOIN, если в секции WHERE есть условия JOIN. Значения: 0 — без переписывания, 1 — применять, если возможно, для JOIN через запятую/CROSS, 2 — принудительно переписывать все JOIN через запятую, а CROSS — если возможно

<div id="data_type_default_nullable">
  ## data\_type\_default\_nullable
</div>

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

Позволяет использовать [Nullable](/ru/reference/data-types/nullable) для типов данных без явных модификаторов [NULL или NOT NULL](/ru/reference/statements/create/table#null-or-not-null-modifiers) в определениях столбцов.

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

* 1 — Типы данных в определениях столбцов по умолчанию имеют тип `Nullable`.
* 0 — Типы данных в определениях столбцов по умолчанию не имеют типа `Nullable`.

<div id="database_atomic_wait_for_drop_and_detach_synchronously">
  ## database\_atomic\_wait\_for\_drop\_and\_detach\_synchronously
</div>

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

Добавляет модификатор `SYNC` ко всем запросам `DROP` и `DETACH`.

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

* 0 — запросы будут выполняться с задержкой.
* 1 — запросы будут выполняться без задержки.

<div id="database_datalake_require_metadata_access">
  ## database\_datalake\_require\_metadata\_access
</div>

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

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

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

<div id="database_replicated_allow_explicit_uuid">
  ## database\_replicated\_allow\_explicit\_uuid
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Добавлена новая настройка, запрещающая явное указание UUID таблицы"}]}]} />

0 - Не разрешать явно указывать UUID для таблиц в базах данных Replicated. 1 - Разрешить. 2 - Разрешить, но игнорировать указанный UUID и вместо него генерировать случайный UUID.

<div id="database_replicated_allow_heavy_create">
  ## database\_replicated\_allow\_heavy\_create
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Длительно выполняющиеся DDL-запросы (CREATE AS SELECT и POPULATE) для движка базы данных Replicated запрещены"}]}]} />

Разрешает выполнять длительно выполняющиеся DDL-запросы (CREATE AS SELECT и POPULATE) для движка базы данных Replicated. Обратите внимание: это может надолго заблокировать очередь DDL.

<div id="database_replicated_allow_only_replicated_engine">
  ## database\_replicated\_allow\_only\_replicated\_engine
</div>

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

Разрешает создавать в базе данных с движком Replicated только таблицы Replicated

Значение по умолчанию в Cloud: `1`.

<div id="database_replicated_allow_replicated_engine_arguments">
  ## database\_replicated\_allow\_replicated\_engine\_arguments
</div>

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

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

0 - Запрещает явно указывать путь ZooKeeper и имя реплики для таблиц семейства \*MergeTree в базах данных Replicated. 1 - Разрешает. 2 - Разрешает, но игнорирует указанный путь и вместо него использует путь по умолчанию. 3 - Разрешает и не записывает предупреждение в журнал.

<div id="database_replicated_always_detach_permanently">
  ## database\_replicated\_always\_detach\_permanently
</div>

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

Выполнять DETACH TABLE как DETACH TABLE PERMANENTLY, если используется движок базы данных Replicated

<div id="database_replicated_enforce_synchronous_settings">
  ## database\_replicated\_enforce\_synchronous\_settings
</div>

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

Включает синхронное ожидание для некоторых запросов (см. также database\_atomic\_wait\_for\_drop\_and\_detach\_synchronously, mutations\_sync, alter\_sync). Не рекомендуется включать эти настройки.

<div id="database_replicated_initial_query_timeout_sec">
  ## database\_replicated\_initial\_query\_timeout\_sec
</div>

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

Задаёт, сколько секунд начальный DDL-запрос должен ждать, пока база данных Replicated обработает предыдущие записи в очереди DDL.

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

* Положительное целое число.
* 0 — без ограничений.

<div id="database_shared_drop_table_delay_seconds">
  ## database\_shared\_drop\_table\_delay\_seconds
</div>

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

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

Задержка в секундах перед окончательным удалением удалённой таблицы из Shared database. Это позволяет восстановить таблицу в течение этого времени с помощью оператора `UNDROP TABLE`.

<div id="decimal_check_overflow">
  ## decimal\_check\_overflow
</div>

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

Проверять переполнение при арифметических операциях и операциях сравнения с Decimal

<div id="deduplicate_blocks_in_dependent_materialized_views">
  ## deduplicate\_blocks\_in\_dependent\_materialized\_views
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "По умолчанию включает дедупликацию для зависимых materialized view."}]}]} />

Включает или отключает проверку дедупликации для materialized view, получающих данные из таблиц Replicated\*.

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

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

Если параметр включен, ClickHouse выполняет дедупликацию блоков в materialized view, зависящих от таблиц Replicated\*.
Этот параметр полезен, чтобы materialized view не содержали дублирующиеся данные, когда операция вставки повторяется из-за сбоя.

**См. также**

* [Обработка NULL в операторах IN](/ru/concepts/features/operations/insert/deduplicating-inserts-on-retries#insert-deduplication-with-materialized-views)

<div id="deduplicate_insert">
  ## deduplicate\_insert
</div>

<SettingsInfoBlock type="DeduplicateInsertMode" default_value="enable" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "enable"},{"label": "По умолчанию включает дедупликацию для всех синхронных и асинхронных вставок."}]}]} />

Включает или отключает дедупликацию блоков для `INSERT INTO` (для таблиц Replicated\*).
Эта настройка переопределяет параметры `insert_deduplicate` и `async_insert_deduplicate`.
У этой настройки есть три возможных значения:

* disable — Дедупликация для запроса `INSERT INTO` отключена.
* enable — Дедупликация для запроса `INSERT INTO` включена.
* backward\_compatible\_choice — Дедупликация включается, если `insert_deduplicate` или `async_insert_deduplicate` включены для соответствующего типа вставки.

<div id="deduplicate_insert_select">
  ## deduplicate\_insert\_select
</div>

<SettingsInfoBlock type="DeduplicateInsertSelectMode" default_value="enable_when_possible" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "enable_when_possible"},{"label": "изменено поведение по умолчанию для deduplicate_insert_select на ENABLE_WHEN_POSSIBLE"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "enable_even_for_bad_queries"},{"label": "новая настройка, заменяет insert_select_deduplicate"}]}]} />

Включает или отключает дедупликацию блоков для `INSERT SELECT` (для таблиц Replicated\*).
Этот параметр переопределяет `insert_deduplicate` и `deduplicate_insert` для запросов `INSERT SELECT`.
У этого параметра есть четыре возможных значения:

* disable — Дедупликация отключена для запроса `INSERT SELECT`.
* force\_enable — Дедупликация включена для запроса `INSERT SELECT`. Если результат `SELECT` нестабилен, генерируется исключение.
* enable\_when\_possible — Дедупликация включается, если `insert_deduplicate` включен и результат `SELECT` стабилен, в противном случае отключается.
* enable\_even\_for\_bad\_queries - Дедупликация включается, если `insert_deduplicate` включен. Если результат `SELECT` нестабилен, в журнал записывается предупреждение, но запрос выполняется с дедупликацией. Этот вариант предназначен для обратной совместимости. Рекомендуется использовать другие варианты, так как он может приводить к неожиданным результатам.

<div id="default_materialized_view_sql_security">
  ## default\_materialized\_view\_sql\_security
</div>

<SettingsInfoBlock type="SQLSecurityType" default_value="DEFINER" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "DEFINER"},{"label": "Позволяет задать значение по умолчанию для опции SQL SECURITY при создании materialized view"}]}]} />

Позволяет задать значение по умолчанию для опции SQL SECURITY при создании materialized view. [Подробнее о безопасности SQL](/ru/reference/statements/create/view#sql_security).

Значение по умолчанию — `DEFINER`.

<div id="default_max_bytes_in_join">
  ## default\_max\_bytes\_in\_join
</div>

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

Максимальный размер правой таблицы, если требуется ограничение, но `max_bytes_in_join` не задан.

<div id="default_normal_view_sql_security">
  ## default\_normal\_view\_sql\_security
</div>

<SettingsInfoBlock type="SQLSecurityType" default_value="INVOKER" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "INVOKER"},{"label": "Позволяет задать значение `SQL SECURITY` по умолчанию при создании обычного представления"}]}]} />

Позволяет задать значение `SQL SECURITY` по умолчанию при создании обычного представления. [Подробнее о безопасности SQL](/ru/reference/statements/create/view#sql_security).

Значение по умолчанию — `INVOKER`.

<div id="default_table_engine">
  ## default\_table\_engine
</div>

<SettingsInfoBlock type="DefaultTableEngine" default_value="MergeTree" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "MergeTree"},{"label": "В качестве движка таблицы по умолчанию установлен MergeTree для большего удобства использования"}]}]} />

Движок таблицы, используемый по умолчанию, если `ENGINE` не задан в операторе `CREATE`.

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

* строка, представляющая любое допустимое имя движка таблицы

Значение по умолчанию в Cloud: `SharedMergeTree`.

**Пример**

Запрос:

```sql theme={null}
SET default_table_engine = 'Log';

SELECT name, value, changed FROM system.settings WHERE name = 'default_table_engine';
```

Результат:

```response theme={null}
┌─name─────────────────┬─value─┬─changed─┐
│ default_table_engine │ Log   │       1 │
└──────────────────────┴───────┴─────────┘
```

В этом примере для любой новой таблицы, у которой не указан `Engine`, будет использоваться движок таблицы `Log`:

Запрос:

```sql theme={null}
CREATE TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TABLE my_table;
```

Результат:

```response theme={null}
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘
```

<div id="default_temporary_table_engine">
  ## default\_temporary\_table\_engine
</div>

<SettingsInfoBlock type="DefaultTableEngine" default_value="Memory" />

То же, что и [default\_table\_engine](#default_table_engine), но для временных таблиц.

В этом примере любая новая временная таблица, для которой не указан `Engine`, будет использовать движок таблицы `Log`:

Запрос:

```sql theme={null}
SET default_temporary_table_engine = 'Log';

CREATE TEMPORARY TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TEMPORARY TABLE my_table;
```

Результат:

```response theme={null}
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TEMPORARY TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘
```

<div id="default_view_definer">
  ## default\_view\_definer
</div>

<SettingsInfoBlock type="String" default_value="CURRENT_USER" />

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

Позволяет задать параметр `DEFINER`, используемый по умолчанию при создании представления. [Подробнее о безопасности SQL](/ru/reference/statements/create/view#sql_security).

Значение по умолчанию — `CURRENT_USER`.

<div id="defer_partition_pruning_after_final">
  ## defer\_partition\_pruning\_after\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Настройка, добавленная в 26.5, чтобы управлять поведением отсечения партиций для FINAL, которое было незаметно введено в 26.3 (https://github.com/ClickHouse/ClickHouse/pull/98242). Существенное семантическое изменение зафиксировано в блоке 26.3, поэтому `compatibility = '26.2'` отменяет его; эта запись нужна, чтобы проверка обновления с 26.4 принимала недавно добавленное имя."}]}, {"id": "row-2","items": [{"label": "26.3"},{"label": "1"},{"label": "Управляет безусловным пропуском отсечения партиций планировщиком FINAL, когда столбец ключа партиции не входит в ключ сортировки. Само изменение поведения было незаметно введено в 26.3 через https://github.com/ClickHouse/ClickHouse/pull/98242; эта запись задним числом документирует его, чтобы `compatibility = '26.2'` восстанавливала поведение до регрессии (0 = отсекать до FINAL, быстро; 1 = откладывать отсечение, безопасно с точки зрения корректности)."}]}]} />

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

Когда настройка отключена, отсечение партиций применяется даже с `FINAL`, восстанавливая поведение
до 26.3. Это может быть значительно быстрее для запросов с условиями `WHERE` по
столбцу партиции, но корректно только в тех случаях, когда строки с одним и тем же первичным ключом не могут находиться
в разных партициях — например, в таблицах логов событий, где столбец партиции задаётся во время вставки
и больше никогда не изменяется.

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

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

* 0 — Применять отсечение партиций до `FINAL` (поведение до 26.3, быстрее, но в общем случае небезопасно).
* 1 — Откладывать отсечение партиций до завершения `FINAL` (по умолчанию, безопасно с точки зрения корректности).

<div id="delta_lake_enable_engine_predicate">
  ## delta\_lake\_enable\_engine\_predicate
</div>

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

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

Включает внутренний механизм отсечения данных в delta-kernel.

<div id="delta_lake_enable_expression_visitor_logging">
  ## delta\_lake\_enable\_expression\_visitor\_logging
</div>

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

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

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

<div id="delta_lake_insert_max_bytes_in_data_file">
  ## delta\_lake\_insert\_max\_bytes\_in\_data\_file
</div>

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

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

Определяет предельный размер в байтах для одного файла данных при вставке в delta lake.

<div id="delta_lake_insert_max_rows_in_data_file">
  ## delta\_lake\_insert\_max\_rows\_in\_data\_file
</div>

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

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

Определяет ограничение на количество строк в одном файле данных, вставляемом в delta lake.

<div id="delta_lake_log_metadata">
  ## delta\_lake\_log\_metadata
</div>

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

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

Включает запись файлов метаданных Delta Lake в системную таблицу.

<div id="delta_lake_reload_schema_for_consistency">
  ## delta\_lake\_reload\_schema\_for\_consistency
</div>

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

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

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

<div id="delta_lake_snapshot_end_version">
  ## delta\_lake\_snapshot\_end\_version
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

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

Конечная версия снимка delta lake, которую нужно прочитать. Значение -1 означает чтение последней версии (значение 0 — допустимая версия снимка).

<div id="delta_lake_snapshot_start_version">
  ## delta\_lake\_snapshot\_start\_version
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

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

Начальная версия снимка delta lake, который нужно прочитать. Значение -1 означает чтение последней версии (значение 0 является допустимой версией снимка).

<div id="delta_lake_snapshot_version">
  ## delta\_lake\_snapshot\_version
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

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

Версия снимка delta lake, который нужно прочитать. Значение -1 означает чтение последней версии (значение 0 является допустимой версией снимка).

<div id="delta_lake_throw_on_engine_predicate_error">
  ## delta\_lake\_throw\_on\_engine\_predicate\_error
</div>

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

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

Включает генерацию исключения, если при анализе предиката сканирования в delta-kernel произошла ошибка.

<div id="describe_compact_output">
  ## describe\_compact\_output
</div>

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

Если значение равно true, в результат запроса DESCRIBE включаются только имена столбцов и типы

<div id="describe_include_subcolumns">
  ## describe\_include\_subcolumns
</div>

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

Включает отображение подстолбцов в запросе [DESCRIBE](/ru/reference/statements/describe-table). Например, элементов [Tuple](/ru/reference/data-types/tuple) или подстолбцов типа данных [Map](/ru/reference/data-types/map#reading-subcolumns-of-map), [Nullable](/ru/reference/data-types/nullable#finding-null) или [Array](/ru/reference/data-types/array#array-size).

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

* 0 — Подстолбцы не включаются в запросы `DESCRIBE`.
* 1 — Подстолбцы включаются в запросы `DESCRIBE`.

**Пример**

См. пример для оператора [DESCRIBE](/ru/reference/statements/describe-table).

<div id="describe_include_virtual_columns">
  ## describe\_include\_virtual\_columns
</div>

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

Если значение равно true, виртуальные столбцы таблицы будут включены в результат запроса DESCRIBE

<div id="dialect">
  ## диалект
</div>

<SettingsInfoBlock type="Dialect" default_value="clickhouse" />

Какой диалект используется для разбора запроса

<div id="dictionary_use_async_executor">
  ## dictionary\_use\_async\_executor
</div>

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

Запускает конвейер чтения источника словаря в несколько потоков. Поддерживается только для словарей с локальным источником CLICKHOUSE.

<div id="dictionary_validate_primary_key_type">
  ## dictionary\_validate\_primary\_key\_type
</div>

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

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

Проверяет тип первичного ключа для словарей. По умолчанию тип `id` для простых структур неявно преобразуется в UInt64.

<div id="distinct_overflow_mode">
  ## distinct\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Задаёт поведение в случае, если объём данных превышает одно из ограничений.

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

* `throw`: сгенерировать исключение (по умолчанию).
* `break`: остановить выполнение запроса и вернуть частичный результат, как если бы
  источник данных исчерпался.

<div id="distributed_aggregation_memory_efficient">
  ## distributed\_aggregation\_memory\_efficient
</div>

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

Включен ли режим экономии памяти при распределенной агрегации.

<div id="distributed_background_insert_batch">
  ## distributed\_background\_insert\_batch
</div>

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

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

Включает или отключает отправку вставленных данных батчами.

Когда отправка батчами включена, движок таблицы [Distributed](/ru/reference/engines/table-engines/special/distributed) пытается отправлять несколько файлов со вставленными данными за одну операцию, а не по отдельности. Отправка батчами повышает производительность кластера за счет более эффективного использования ресурсов сервера и сети.

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

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

<div id="distributed_background_insert_max_sleep_time_ms">
  ## distributed\_background\_insert\_max\_sleep\_time\_ms
</div>

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

<SettingsInfoBlock type="Миллисекунды" default_value="30000" />

Максимальный интервал отправки данных для движка таблицы [Distributed](/ru/reference/engines/table-engines/special/distributed). Ограничивает экспоненциальный рост интервала, заданного настройкой [distributed\_background\_insert\_sleep\_time\_ms](#distributed_background_insert_sleep_time_ms).

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

* Положительное целое число миллисекунд.

<div id="distributed_background_insert_sleep_time_ms">
  ## distributed\_background\_insert\_sleep\_time\_ms
</div>

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

<SettingsInfoBlock type="Миллисекунды" default_value="100" />

Базовый интервал, через который движок таблицы [Distributed](/ru/reference/engines/table-engines/special/distributed) отправляет данные. При возникновении ошибок фактический интервал увеличивается экспоненциально.

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

* Положительное целое число миллисекунд.

<div id="distributed_background_insert_split_batch_on_failure">
  ## distributed\_background\_insert\_split\_batch\_on\_failure
</div>

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

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

Включает или отключает разбиение батчей при сбоях.

Иногда отправка определенного батча на удаленный сегмент может завершиться ошибкой из-за сложного конвейера на последующих этапах (например, `MATERIALIZED VIEW` с `GROUP BY`) — из-за `Memory limit exceeded` или схожих ошибок. В таком случае повторные попытки не помогут (и это приведет к зависанию распределенных отправок для таблицы), тогда как отправка файлов из этого батча по одному может позволить успешно выполнить INSERT.

Поэтому при установке этого параметра в `1` батчинг для таких батчей будет отключаться (то есть для неудачных батчей временно отключается `distributed_background_insert_batch`).

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

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

<Note>
  Этот параметр также влияет на поврежденные батчи (которые могут появиться из-за аварийного завершения работы сервера (машины) и отсутствия `fsync_after_insert`/`fsync_directories` для движка таблицы [Distributed](/ru/reference/engines/table-engines/special/distributed)).
</Note>

<Note>
  Не следует полагаться на автоматическое разбиение батчей, так как это может негативно сказаться на производительности.
</Note>

<div id="distributed_background_insert_timeout">
  ## distributed\_background\_insert\_timeout
</div>

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

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

Тайм-аут для запроса вставки в Distributed. Эта настройка используется только при включенном `insert_distributed_sync`. Нулевое значение означает отсутствие тайм-аута.

<div id="distributed_cache_alignment">
  ## distributed\_cache\_alignment
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "Переименовано из distributed_cache_read_alignment"}]}]} />

Действует только в ClickHouse Cloud. Эта настройка предназначена для тестирования, не изменяйте её

<div id="distributed_cache_bypass_connection_pool">
  ## distributed\_cache\_bypass\_connection\_pool
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Позволяет обходить пул соединений Distributed Cache

<div id="distributed_cache_connect_backoff_max_ms">
  ## distributed\_cache\_connect\_backoff\_max\_ms
</div>

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

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

Действует только в ClickHouse Cloud. Максимальная задержка в миллисекундах при установлении подключения к distributed cache.

<div id="distributed_cache_connect_backoff_min_ms">
  ## distributed\_cache\_connect\_backoff\_min\_ms
</div>

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

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

Действует только в ClickHouse Cloud. Минимальная задержка в миллисекундах перед повторной попыткой создания подключения к распределённому кэшу.

<div id="distributed_cache_connect_max_tries">
  ## distributed\_cache\_connect\_max\_tries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "5"},{"label": "Изменено значение настройки"}]}, {"id": "row-2","items": [{"label": "25.1"},{"label": "20"},{"label": "Только в ClickHouse Cloud"}]}, {"id": "row-3","items": [{"label": "24.10"},{"label": "20"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Количество попыток подключения к distributed cache при неудаче

<div id="distributed_cache_connect_timeout_ms">
  ## distributed\_cache\_connect\_timeout\_ms
</div>

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

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

Действует только в ClickHouse Cloud. Тайм-аут подключения к серверу distributed cache.

<div id="distributed_cache_credentials_refresh_period_seconds">
  ## distributed\_cache\_credentials\_refresh\_period\_seconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "5"},{"label": "Новый приватный параметр"}]}]} />

Действует только в ClickHouse Cloud. Период обновления учётных данных.

<div id="distributed_cache_data_packet_ack_window">
  ## distributed\_cache\_data\_packet\_ack\_window
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "5"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Окно для отправки ACK для последовательности DataPacket в рамках одного запроса на чтение из распределённого кэша

<div id="distributed_cache_discard_connection_if_unread_data">
  ## distributed\_cache\_discard\_connection\_if\_unread\_data
</div>

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

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

Действует только в ClickHouse Cloud. Разрывать соединение, если остались непрочитанные данные.

<div id="distributed_cache_fetch_metrics_only_from_current_az">
  ## distributed\_cache\_fetch\_metrics\_only\_from\_current\_az
</div>

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

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

Действует только в ClickHouse Cloud. Получать метрики только из текущей зоны доступности в system.distributed\_cache\_metrics и system.distributed\_cache\_events

<div id="distributed_cache_file_cache_name">
  ## distributed\_cache\_file\_cache\_name
</div>

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

Действует только в ClickHouse Cloud. Настройка, используемая только для CI-тестов: имя файлового кэша для distributed cache.

<div id="distributed_cache_log_mode">
  ## distributed\_cache\_log\_mode
</div>

<SettingsInfoBlock type="DistributedCacheLogMode" default_value="on_error" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "on_error"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Режим записи в system.distributed\_cache\_log.

<div id="distributed_cache_max_unacked_inflight_packets">
  ## distributed\_cache\_max\_unacked\_inflight\_packets
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "10"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Максимальное количество неподтверждённых пакетов, находящихся в передаче, в одном запросе на чтение из распределённого кэша

<div id="distributed_cache_min_bytes_for_seek">
  ## distributed\_cache\_min\_bytes\_for\_seek
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Новый приватный параметр."}]}]} />

Действует только в ClickHouse Cloud. Минимальное количество байт для выполнения seek в distributed cache.

<div id="distributed_cache_pool_behaviour_on_limit">
  ## distributed\_cache\_pool\_behaviour\_on\_limit
</div>

<SettingsInfoBlock type="DistributedCachePoolBehaviourOnLimit" default_value="wait" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "wait"},{"label": "Только в ClickHouse Cloud"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "allocate_bypassing_pool"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Определяет поведение соединения distributed cache при достижении лимита пула.

<div id="distributed_cache_prefer_bigger_buffer_size">
  ## distributed\_cache\_prefer\_bigger\_buffer\_size
</div>

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

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

Действует только в ClickHouse Cloud. То же, что и filesystem\_cache\_prefer\_bigger\_buffer\_size, но для distributed cache.

<div id="distributed_cache_read_only_from_current_az">
  ## distributed\_cache\_read\_only\_from\_current\_az
</div>

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

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

Действует только в ClickHouse Cloud. Разрешает чтение только из текущей зоны доступности. Если отключено, чтение будет выполняться со всех серверов кэша во всех зонах доступности.

<div id="distributed_cache_read_request_max_tries">
  ## distributed\_cache\_read\_request\_max\_tries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "10"},{"label": "Изменено значение настройки"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "20"},{"label": "Новая настройка"}]}]} />

Действует только в ClickHouse Cloud. Количество попыток выполнить запрос на чтение из распределённого кэша при неудаче

<div id="distributed_cache_receive_response_wait_milliseconds">
  ## distributed\_cache\_receive\_response\_wait\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "60000"},{"label": "Параметр для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Время ожидания в миллисекундах при получении данных для запроса из distributed cache

<div id="distributed_cache_receive_timeout_milliseconds">
  ## distributed\_cache\_receive\_timeout\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "10000"},{"label": "Параметр для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Время ожидания в миллисекундах до получения любого ответа от distributed cache

Значение по умолчанию в Cloud: `20000`.

<div id="distributed_cache_receive_timeout_ms">
  ## distributed\_cache\_receive\_timeout\_ms
</div>

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

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

Действует только в ClickHouse Cloud. Тайм-аут получения данных от сервера distributed cache в миллисекундах. Если в течение этого интервала не получен ни один байт, генерируется исключение.

<div id="distributed_cache_send_timeout_ms">
  ## distributed\_cache\_send\_timeout\_ms
</div>

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

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

Действует только в ClickHouse Cloud. Тайм-аут отправки данных на сервер distributed cache, в миллисекундах. Если клиенту нужно отправить данные, но за этот интервал ему не удаётся передать ни одного байта, генерируется исключение.

<div id="distributed_cache_tcp_keep_alive_timeout_ms">
  ## distributed\_cache\_tcp\_keep\_alive\_timeout\_ms
</div>

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

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

Действует только в ClickHouse Cloud. Время в миллисекундах, в течение которого соединение с сервером distributed cache должно оставаться бездействующим, прежде чем TCP начнет отправлять keepalive-пакеты.

<div id="distributed_cache_throw_on_error">
  ## distributed\_cache\_throw\_on\_error
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Повторно генерирует исключение, возникшее при взаимодействии с распределённым кэшем, или исключение, полученное от распределённого кэша. В противном случае при ошибке используется пропуск распределённого кэша.

<div id="distributed_cache_use_clients_cache_for_read">
  ## distributed\_cache\_use\_clients\_cache\_for\_read
</div>

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

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

Действует только в ClickHouse Cloud. Использовать клиентский кэш для запросов чтения.

<div id="distributed_cache_use_clients_cache_for_write">
  ## distributed\_cache\_use\_clients\_cache\_for\_write
</div>

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

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

Действует только в ClickHouse Cloud. Использует кэш клиента для запросов на запись.

<div id="distributed_cache_wait_connection_from_pool_milliseconds">
  ## distributed\_cache\_wait\_connection\_from\_pool\_milliseconds
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "100"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Время ожидания в миллисекундах для получения соединения из пула соединений, если для distributed\_cache\_pool\_behaviour\_on\_limit задано значение wait

<div id="distributed_cache_write_request_max_tries">
  ## distributed\_cache\_write\_request\_max\_tries
</div>

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

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

Действует только в ClickHouse Cloud. Количество попыток выполнить запрос на запись в distributed cache в случае неудачи.

<div id="distributed_connections_pool_size">
  ## distributed\_connections\_pool\_size
</div>

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

Максимальное количество одновременных соединений с удалёнными серверами для распределённой обработки всех запросов к одной Distributed таблице. Рекомендуется задавать значение не меньше числа серверов в кластере.

<div id="distributed_ddl_entry_format_version">
  ## distributed\_ddl\_entry\_format\_version
</div>

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

Версия совместимости распределённых DDL-запросов с предложением ON CLUSTER

Значение по умолчанию в Cloud: `6`.

<div id="distributed_ddl_output_mode">
  ## distributed\_ddl\_output\_mode
</div>

<SettingsInfoBlock type="DistributedDDLOutputMode" default_value="throw" />

Задаёт формат результата распределённого DDL-запроса.

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

* `throw` — Возвращает результирующий набор со статусом выполнения запроса для всех хостов, где запрос завершён. Если на некоторых хостах запрос завершился с ошибкой, будет повторно выброшено первое исключение. Если на некоторых хостах запрос ещё не завершён и превышен [distributed\_ddl\_task\_timeout](#distributed_ddl_task_timeout), выбрасывается исключение `TIMEOUT_EXCEEDED`.
* `none` — Аналогично `throw`, но распределённый DDL-запрос не возвращает результирующий набор.
* `null_status_on_timeout` — Возвращает `NULL` в качестве статуса выполнения в некоторых строках результирующего набора вместо `TIMEOUT_EXCEEDED`, если запрос не завершён на соответствующих хостах.
* `never_throw` — Не выбрасывает `TIMEOUT_EXCEEDED` и не выбрасывает повторно исключения, если на некоторых хостах запрос завершился с ошибкой.
* `none_only_active` - аналогично `none`, но не ждёт неактивные реплики базы данных `Replicated`. Примечание: в этом режиме невозможно определить, что запрос не был выполнен на какой-либо реплике и будет выполнен в фоновом режиме.
* `null_status_on_timeout_only_active` — аналогично `null_status_on_timeout`, но не ждёт неактивные реплики базы данных `Replicated`
* `throw_only_active` — аналогично `throw`, но не ждёт неактивные реплики базы данных `Replicated`

Значение по умолчанию в Cloud: `none_only_active`.

<div id="distributed_ddl_task_timeout">
  ## distributed\_ddl\_task\_timeout
</div>

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

Устанавливает тайм-аут ожидания ответов на DDL-запрос от всех хостов в кластере. Если DDL-запрос не был выполнен на всех хостах, ответ будет содержать ошибку о тайм-ауте, а запрос будет выполнен в асинхронном режиме. Отрицательное значение означает бесконечный тайм-аут.

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

* Положительное целое число.
* 0 — асинхронный режим.
* Отрицательное целое число — бесконечный тайм-аут.

<div id="distributed_foreground_insert">
  ## distributed\_foreground\_insert
</div>

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

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

Включает или отключает синхронную вставку данных в таблицу [Distributed](/ru/reference/engines/table-engines/special/distributed).

По умолчанию при вставке данных в таблицу `Distributed` сервер ClickHouse отправляет данные на узлы кластера в фоновом режиме. Если `distributed_foreground_insert=1`, данные обрабатываются синхронно, и операция `INSERT` завершается успешно только после того, как все данные будут сохранены на всех сегментах (как минимум на одной реплике для каждого сегмента, если `internal_replication` имеет значение true).

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

* `0` — Данные вставляются в фоновом режиме.
* `1` — Данные вставляются в синхронном режиме.

Значение по умолчанию в Cloud: `1`.

**См. также**

* [Движок таблицы Distributed](/ru/reference/engines/table-engines/special/distributed)
* [Управление distributed таблицами](/ru/reference/statements/system#managing-distributed-tables)

<div id="distributed_group_by_no_merge">
  ## distributed\_group\_by\_no\_merge
</div>

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

Не объединять состояния агрегации с разных серверов при распределённой обработке запросов; можно использовать, если точно известно, что на разных сегментах находятся разные ключи

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

* `0` — Отключено (окончательная обработка запроса выполняется на узле-инициаторе).
* `1` - Не объединять состояния агрегации с разных серверов при распределённой обработке запросов (запрос полностью обрабатывается на сегменте, узел-инициатор только проксирует данные); можно использовать, если точно известно, что на разных сегментах находятся разные ключи.
* `2` - То же, что и `1`, но `ORDER BY` и `LIMIT` применяются на инициаторе (это невозможно, если запрос полностью обрабатывается на удалённом узле, как при `distributed_group_by_no_merge=1`) (можно использовать для запросов с `ORDER BY` и/или `LIMIT`).

**Пример**

```sql theme={null}
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 1
FORMAT PrettyCompactMonoBlock

┌─dummy─┐
│     0 │
│     0 │
└───────┘
```

```sql theme={null}
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 2
FORMAT PrettyCompactMonoBlock

┌─dummy─┐
│     0 │
└───────┘
```

<div id="distributed_index_analysis">
  ## distributed\_index\_analysis
</div>

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

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

Анализ индексов будет распределён между репликами.
Полезно для общего хранилища и очень больших объёмов данных в кластере.
Использует реплики из cluster\_for\_parallel\_replicas.

**См. также**

* [distributed\_index\_analysis\_for\_non\_shared\_merge\_tree](#distributed_index_analysis_for_non_shared_merge_tree)
* [distributed\_index\_analysis\_min\_parts\_to\_activate](/ru/reference/settings/merge-tree-settings#distributed_index_analysis_min_parts_to_activate)
* [distributed\_index\_analysis\_min\_indexes\_bytes\_to\_activate](/ru/reference/settings/merge-tree-settings#distributed_index_analysis_min_indexes_bytes_to_activate)

<div id="distributed_index_analysis_for_non_shared_merge_tree">
  ## distributed\_index\_analysis\_for\_non\_shared\_merge\_tree
</div>

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

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

Включает распределённый анализ индексов даже для движков, отличных от SharedMergeTree (движка, доступного только в Cloud).

<div id="distributed_index_analysis_only_on_coordinator">
  ## distributed\_index\_analysis\_only\_on\_coordinator
</div>

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

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

Если параметр включен, распределенный анализ индексов выполняется только на координаторе.
Это предотвращает появление запросов O(N^2), когда предикат содержит подзапросы (например, `IN (SELECT ...)`),
поскольку в противном случае каждая реплика-follower независимо запускала бы собственный распределенный анализ индексов,
но делает распределенный анализ индексов менее эффективным, если в подзапросах используются большие таблицы.

<div id="distributed_insert_skip_read_only_replicas">
  ## distributed\_insert\_skip\_read\_only\_replicas
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Если значение true, INSERT в Distributed будет пропускать реплики только для чтения"}]}]} />

Включает пропуск реплик только для чтения для запросов INSERT в Distributed.

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

* 0 — INSERT выполняется как обычно; если запрос попадет на реплику только для чтения, произойдет ошибка
* 1 — Инициатор будет пропускать реплики только для чтения перед отправкой данных в сегменты.

<div id="distributed_plan_default_reader_bucket_count">
  ## distributed\_plan\_default\_reader\_bucket\_count
</div>

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

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

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

<div id="distributed_plan_default_shuffle_join_bucket_count">
  ## distributed\_plan\_default\_shuffle\_join\_bucket\_count
</div>

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

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

Число бакетов по умолчанию для распределённого shuffle-hash-join.

<div id="distributed_plan_execute_locally">
  ## distributed\_plan\_execute\_locally
</div>

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

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

Выполнять локально все задачи распределённого плана запроса. Полезно для тестирования и отладки.

<div id="distributed_plan_force_exchange_kind">
  ## distributed\_plan\_force\_exchange\_kind
</div>

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

Принудительно задаёт указанный тип операторов Exchange между стадиями распределённого запроса.

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

* '' - не задавать принудительно какой-либо тип операторов Exchange, а предоставить выбор оптимизатору,
* 'Persisted' - использовать временные файлы в объектном хранилище,
* 'Streaming' - передавать данные Exchange по сети в потоковом режиме.

<div id="distributed_plan_force_shuffle_aggregation">
  ## distributed\_plan\_force\_shuffle\_aggregation
</div>

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

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

Использовать стратегию Shuffle aggregation вместо PartialAggregation + Merge в распределённом плане запроса.

<div id="distributed_plan_max_rows_to_broadcast">
  ## distributed\_plan\_max\_rows\_to\_broadcast
</div>

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

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

Максимальное количество строк для использования broadcast JOIN вместо shuffle JOIN в распределённом плане запроса.

<div id="distributed_plan_optimize_exchanges">
  ## distributed\_plan\_optimize\_exchanges
</div>

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

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

Убирает лишние операции exchange в распределённом плане запроса. Для отладки отключите эту настройку.

<div id="distributed_plan_prefer_replicas_over_workers">
  ## distributed\_plan\_prefer\_replicas\_over\_workers
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Новая настройка для сериализации распределенного плана запроса для выполнения на репликах"}]}]} />

Сериализует распределенный план запроса для выполнения на репликах.

<div id="distributed_product_mode">
  ## distributed\_product\_mode
</div>

<SettingsInfoBlock type="DistributedProductMode" default_value="deny" />

Изменяет поведение [распределённых подзапросов](/ru/reference/statements/in).

ClickHouse применяет эту настройку, когда запрос содержит произведение distributed таблиц, то есть когда запрос к distributed таблице содержит не-GLOBAL подзапрос для distributed таблицы.

Ограничения:

* Применяется только к подзапросам IN и JOIN.
* Только если в секции FROM используется distributed таблица, содержащая более одного сегмента.
* Если подзапрос относится к distributed таблице, содержащей более одного сегмента.
* Не используется для табличной функции [remote](/ru/reference/functions/table-functions/remote).

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

* `deny` — Значение по умолчанию. Запрещает использовать эти типы подзапросов (возвращает Исключение "Double-distributed in/JOIN subqueries is denied").
* `local` — Заменяет базу данных и таблицу в подзапросе на локальные для сервера пункта назначения (сегмента), оставляя обычный `IN`/`JOIN.`
* `global` — Заменяет запрос `IN`/`JOIN` на `GLOBAL IN`/`GLOBAL JOIN.`
* `allow` — Разрешает использование этих типов подзапросов.

<div id="distributed_push_down_limit">
  ## distributed\_push\_down\_limit
</div>

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

Включает или отключает применение [LIMIT](#limit) отдельно на каждом сегменте.

Это позволяет избежать:

* Передачи лишних строк по сети;
* Обработки на инициаторе строк, выходящих за пределы лимита.

Начиная с версии 21.9, получить неточные результаты больше нельзя, поскольку `distributed_push_down_limit` изменяет выполнение запроса только при выполнении хотя бы одного из следующих условий:

* [distributed\_group\_by\_no\_merge](#distributed_group_by_no_merge) > 0.
* Запрос **не содержит** `GROUP BY`/`DISTINCT`/`LIMIT BY`, но содержит `ORDER BY`/`LIMIT`.
* Запрос **содержит** `GROUP BY`/`DISTINCT`/`LIMIT BY` вместе с `ORDER BY`/`LIMIT`, и:
  * [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards) включен.
  * [optimize\_distributed\_group\_by\_sharding\_key](#optimize_distributed_group_by_sharding_key) включен.

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

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

См. также:

* [distributed\_group\_by\_no\_merge](#distributed_group_by_no_merge)
* [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards)
* [optimize\_distributed\_group\_by\_sharding\_key](#optimize_distributed_group_by_sharding_key)

<div id="distributed_replica_error_cap">
  ## distributed\_replica\_error\_cap
</div>

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

* Тип: unsigned int
* Значение по умолчанию: 1000

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

См. также:

* [load\_balancing](#load_balancing-round_robin)
* [движок таблиц Distributed](/ru/reference/engines/table-engines/special/distributed)
* [distributed\_replica\_error\_half\_life](#distributed_replica_error_half_life)
* [distributed\_replica\_max\_ignored\_errors](#distributed_replica_max_ignored_errors)

<div id="distributed_replica_error_half_life">
  ## distributed\_replica\_error\_half\_life
</div>

<SettingsInfoBlock type="Seconds" default_value="60" />

* Тип: секунды
* Значение по умолчанию: 60 секунд

Управляет скоростью обнуления ошибок в distributed таблицах. Если реплика некоторое время недоступна, накапливает 5 ошибок, а `distributed_replica_error_half_life` установлена в 1 секунду, то через 3 секунды после последней ошибки реплика снова считается нормальной.

См. также:

* [load\_balancing](#load_balancing-round_robin)
* [движок таблиц Distributed](/ru/reference/engines/table-engines/special/distributed)
* [distributed\_replica\_error\_cap](#distributed_replica_error_cap)
* [distributed\_replica\_max\_ignored\_errors](#distributed_replica_max_ignored_errors)

<div id="distributed_replica_max_ignored_errors">
  ## distributed\_replica\_max\_ignored\_errors
</div>

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

* Тип: беззнаковое целое число
* Значение по умолчанию: 0

Количество ошибок, которые игнорируются при выборе реплик (в соответствии с алгоритмом `load_balancing`).

См. также:

* [load\_balancing](#load_balancing-round_robin)
* [движок таблиц Distributed](/ru/reference/engines/table-engines/special/distributed)
* [distributed\_replica\_error\_cap](#distributed_replica_error_cap)
* [distributed\_replica\_error\_half\_life](#distributed_replica_error_half_life)

<div id="do_not_merge_across_partitions_select_final">
  ## do\_not\_merge\_across\_partitions\_select\_final
</div>

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

Повышает производительность запросов FINAL, избегая слияния между разными партициями.

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

<div id="dynamic_disk_allow_from_env">
  ## dynamic\_disk\_allow\_from\_env
</div>

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

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

Разрешает использовать подстановки `from_env` в конфигурации динамического диска (то есть в аргументах функции `disk()`).
По умолчанию отключена, чтобы пользователи не могли читать произвольные переменные окружения при определении хранилища таблицы.

<div id="dynamic_disk_allow_from_zk">
  ## dynamic\_disk\_allow\_from\_zk
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка, разрешающая использовать подстановки `from_zk` в конфигурации динамических дисков (в функции `disk()`). По умолчанию отключена."}]}]} />

Разрешает использовать подстановки `from_zk` в конфигурации динамических дисков (то есть в аргументах функции `disk()`).
По умолчанию отключена.

<div id="dynamic_disk_allow_include">
  ## dynamic\_disk\_allow\_include
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка, разрешающая использовать `include` в конфигурации динамического диска (в функции `disk()`). По умолчанию отключена."}]}]} />

Разрешает использовать `include` в конфигурации динамического диска (то есть в аргументах функции `disk()`).
По умолчанию отключено.

<div id="dynamic_throw_on_type_mismatch">
  ## dynamic\_throw\_on\_type\_mismatch
</div>

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

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

При применении функции к столбцу [Dynamic](/ru/reference/data-types/dynamic) со стандартной реализацией
эта настройка определяет, что происходит со строками, фактический тип которых несовместим с функцией:

* `true` (по умолчанию) — сгенерировать исключение.
* `false` — вместо этого вернуть `NULL` для таких строк.

<div id="empty_result_for_aggregation_by_constant_keys_on_empty_set">
  ## empty\_result\_for\_aggregation\_by\_constant\_keys\_on\_empty\_set
</div>

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

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

<div id="empty_result_for_aggregation_by_empty_set">
  ## empty\_result\_for\_aggregation\_by\_empty\_set
</div>

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

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

<div id="enable_adaptive_memory_spill_scheduler">
  ## enable\_adaptive\_memory\_spill\_scheduler
</div>

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

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

Активирует процессор для адаптивной выгрузки данных во внешнее хранилище. В настоящее время поддерживается только grace join.

<div id="enable_add_distinct_to_in_subqueries">
  ## enable\_add\_distinct\_to\_in\_subqueries
</div>

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

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

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

<div id="enable_automatic_decision_for_merging_across_partitions_for_final">
  ## enable\_automatic\_decision\_for\_merging\_across\_partitions\_for\_final
</div>

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

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

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

<div id="enable_blob_storage_log">
  ## enable\_blob\_storage\_log
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Записывать информацию об операциях blob-хранилища в таблицу system.blob_storage_log"}]}]} />

Записывать информацию об операциях blob-хранилища в таблицу system.blob\_storage\_log

<div id="enable_blob_storage_log_for_read_operations">
  ## enable\_blob\_storage\_log\_for\_read\_operations
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка для записи в system.blob_storage_log операций чтения из blob storage"}]}]} />

Записывает информацию об операциях чтения из blob storage в таблицу system.blob\_storage\_log.
Также требуется включить `enable_blob_storage_log`.

<div id="enable_early_constant_folding">
  ## enable\_early\_constant\_folding
</div>

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

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

<div id="enable_extended_results_for_datetime_functions">
  ## enable\_extended\_results\_for\_datetime\_functions
</div>

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

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

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

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

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

| Function                  | `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 />*Примечание: для значений вне диапазона 1970–2149 результаты могут быть некорректными* | Возвращает `DateTime` для входных типов `Date`/`DateTime`<br />Возвращает `DateTime64` для входных типов `Date32`/`DateTime64`                                 |
| `toStartOfHour`           | Возвращает `DateTime`<br />*Примечание: для значений вне диапазона 1970–2149 результаты будут некорректными*      | Возвращает `DateTime` для входных типов `Date`/`DateTime`<br />Возвращает `DateTime64` для входных типов `Date32`/`DateTime64`                                 |
| `toStartOfFifteenMinutes` | Возвращает `DateTime`<br />*Примечание: неверные результаты для значений за пределами диапазона 1970–2149*        | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64`                           |
| `toStartOfTenMinutes`     | Возвращает `DateTime`<br />*Примечание: для значений вне диапазона 1970–2149 возможны некорректные результаты*    | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64`                           |
| `toStartOfFiveMinutes`    | Возвращает `DateTime`<br />*Примечание: некорректные результаты для значений вне диапазона 1970–2149*             | Возвращает `DateTime` для входных значений `Date`/`DateTime`<br />Возвращает `DateTime64` для входных значений `Date32`/`DateTime64`                           |
| `toStartOfMinute`         | Возвращает `DateTime`<br />*Примечание: для значений вне диапазона 1970–2149 результаты будут неверными*          | Возвращает `DateTime` для аргументов `Date`/`DateTime`<br />Возвращает `DateTime64` для аргументов `Date32`/`DateTime64`                                       |
| `timeSlot`                | Возвращает `DateTime`<br />*Примечание: некорректные результаты для значений вне диапазона 1970–2149*             | Возвращает `DateTime` для значений типа `Date`/`DateTime`<br />Возвращает `DateTime64` для значений типа `Date32`/`DateTime64`                                 |

<div id="enable_filesystem_cache">
  ## enable\_filesystem\_cache
</div>

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

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

<div id="enable_filesystem_cache_log">
  ## enable\_filesystem\_cache\_log
</div>

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

Позволяет записывать журнал кэширования файловой системы для каждого запроса

<div id="enable_filesystem_cache_on_write_operations">
  ## enable\_filesystem\_cache\_on\_write\_operations
</div>

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

Включает или отключает кэш со сквозной записью (`write-through`). Если установлено значение `false`, кэш со сквозной записью отключается для операций записи. Если установлено значение `true`, кэш со сквозной записью включается, если параметр `cache_on_write_operations` включен в разделе конфигурации cache disk в config сервера.
Подробнее см. в разделе ["Использование локального кэша"](/ru/concepts/features/configuration/server-config/storing-data#using-local-cache).

Значение по умолчанию в Cloud: `1`.

<div id="enable_filesystem_read_prefetches_log">
  ## enable\_filesystem\_read\_prefetches\_log
</div>

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

Записывает данные в system.filesystem prefetch\_log во время выполнения запроса. Использовать только для тестирования или отладки; не рекомендуется включать по умолчанию

<div id="enable_full_text_index">
  ## enable\_full\_text\_index
</div>

**Псевдонимы**: `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, разрешается использование текстового индекса.

<div id="enable_global_with_statement">
  ## enable\_global\_with\_statement
</div>

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

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

Применять операторы WITH к запросам UNION и всем подзапросам

<div id="enable_hdfs_pread">
  ## enable\_hdfs\_pread
</div>

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

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

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

<div id="enable_http_compression">
  ## enable\_http\_compression
</div>

<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 — Включено.

<div id="enable_job_stack_trace">
  ## enable\_job\_stack\_trace
</div>

<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": "Включает сбор трассировок стека при планировании задачи. По умолчанию отключён, чтобы избежать снижения производительности."}]}]} />

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

<div id="enable_join_fixed_hash_table_conversion">
  ## enable\_join\_fixed\_hash\_table\_conversion
</div>

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

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

Включает преобразование хеш-таблицы в плоский массив для JOIN, если ключ — одно целое число с небольшим диапазоном значений.

<div id="enable_join_runtime_filters">
  ## enable\_join\_runtime\_filters
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Оптимизация включена"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Фильтрует левую часть по набору ключей JOIN, собранному из правой части во время выполнения.

<div id="enable_join_transitive_predicates">
  ## enable\_join\_transitive\_predicates
</div>

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

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

Выводит транзитивные предикаты эквисоединения на основе существующих условий JOIN.
Например, если заданы `A.x = B.x` и `B.x = C.x`, добавляется синтетический предикат `A.x = C.x`,
чтобы оптимизатор порядка JOIN мог учитывать прямые планы (A JOIN C).

<div id="enable_lazy_columns_replication">
  ## enable\_lazy\_columns\_replication
</div>

<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, что позволяет избежать лишнего многократного копирования одних и тех же строк в памяти.

<div id="enable_lightweight_delete">
  ## enable\_lightweight\_delete
</div>

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

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

Включает поддержку легковесных DELETE-мутаций для таблиц MergeTree.

<div id="enable_lightweight_update">
  ## enable\_lightweight\_update
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Легковесные обновления переведены в статус бета. Добавлен псевдоним для настройки 'allow_experimental_lightweight_update'."}]}]} />

Позволяет использовать легковесные обновления.

<div id="enable_materialized_cte">
  ## enable\_materialized\_cte
</div>

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

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

Включает материализованные общие табличные выражения; этот параметр имеет приоритет над enable\_global\_with\_statement

<div id="enable_memory_bound_merging_of_aggregation_results">
  ## enable\_memory\_bound\_merging\_of\_aggregation\_results
</div>

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

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

<div id="enable_multiple_prewhere_read_steps">
  ## enable\_multiple\_prewhere\_read\_steps
</div>

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

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

<div id="enable_named_columns_in_function_tuple">
  ## enable\_named\_columns\_in\_function\_tuple
</div>

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

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

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

<div id="enable_optimize_predicate_expression">
  ## enable\_optimize\_predicate\_expression
</div>

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

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

Включает pushdown предикатов в запросах `SELECT`.

Pushdown предикатов может значительно сократить сетевой трафик при распределенных запросах.

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

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

Использование

Рассмотрим следующие запросы:

1. `SELECT count() FROM test_table WHERE date = '2018-10-10'`
2. `SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'`

Если `enable_optimize_predicate_expression = 1`, время выполнения этих запросов будет одинаковым, потому что ClickHouse применяет `WHERE` к подзапросу во время его обработки.

Если `enable_optimize_predicate_expression = 0`, время выполнения второго запроса будет значительно больше, потому что условие `WHERE` применяется ко всем данным только после завершения подзапроса.

<div id="enable_optimize_predicate_expression_to_final_subquery">
  ## enable\_optimize\_predicate\_expression\_to\_final\_subquery
</div>

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

Разрешает проталкивание условия фильтрации в подзапрос с FINAL.

<div id="enable_order_by_all">
  ## enable\_order\_by\_all
</div>

<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; -- возвращает ошибку из-за неоднозначности ALL

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 │
└────┴────┴─────┘
```

<div id="enable_parallel_blocks_marshalling">
  ## enable\_parallel\_blocks\_marshalling
</div>

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

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

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

<div id="enable_parsing_to_custom_serialization">
  ## enable\_parsing\_to\_custom\_serialization
</div>

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

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

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

<div id="enable_positional_arguments">
  ## enable\_positional\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.7"},{"label": "1"},{"label": "По умолчанию включает поддержку позиционных аргументов"}]}]} />

Включает или отключает поддержку позиционных аргументов в операторах [GROUP BY](/ru/reference/statements/select/group-by), [LIMIT BY](/ru/reference/statements/select/limit-by), [ORDER BY](/ru/reference/statements/select/order-by).

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

* 0 — Позиционные аргументы не поддерживаются.
* 1 — Позиционные аргументы поддерживаются: вместо имён столбцов можно использовать их номера.

**Пример**

Запрос:

```sql theme={null}
CREATE TABLE positional_arguments(one Int, two Int, three Int) ENGINE=Memory();

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

SELECT * FROM positional_arguments ORDER BY 2,3;
```

Результат:

```text theme={null}
┌─one─┬─two─┬─three─┐
│  30 │  10 │   20  │
│  20 │  20 │   10  │
│  10 │  20 │   30  │
└─────┴─────┴───────┘
```

<div id="enable_positional_arguments_for_projections">
  ## enable\_positional\_arguments\_for\_projections
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Новая настройка для управления позиционными аргументами в проекциях."}]}, {"id": "row-2","items": [{"label": "25.11"},{"label": "0"},{"label": "Новая настройка для управления позиционными аргументами в проекциях."}]}, {"id": "row-3","items": [{"label": "25.10"},{"label": "0"},{"label": "Новая настройка для управления позиционными аргументами в проекциях."}]}]} />

Включает или отключает поддержку позиционных аргументов в определениях PROJECTION. См. также настройку [enable\_positional\_arguments](#enable_positional_arguments).

<Note>
  Это настройка экспертного уровня; не изменяйте её, если вы только начинаете работать с ClickHouse.
</Note>

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

* 0 — Позиционные аргументы не поддерживаются.
* 1 — Позиционные аргументы поддерживаются: вместо имён столбцов можно использовать номера столбцов.

<div id="enable_producing_buckets_out_of_order_in_aggregation">
  ## enable\_producing\_buckets\_out\_of\_order\_in\_aggregation
</div>

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

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

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

<div id="enable_reads_from_query_cache">
  ## enable\_reads\_from\_query\_cache
</div>

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

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

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

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

<div id="enable_s3_requests_logging">
  ## enable\_s3\_requests\_logging
</div>

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

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

<div id="enable_scalar_subquery_optimization">
  ## enable\_scalar\_subquery\_optimization
</div>

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

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

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

<div id="enable_scopes_for_with_statement">
  ## enable\_scopes\_for\_with\_statement
</div>

<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 будут иметь ту же область видимости, как если бы они были объявлены в текущей области видимости.

Обратите внимание: это параметр совместимости для анализатора, который позволяет выполнять некоторые некорректные запросы, поддерживавшиеся старым анализатором.

<div id="enable_shared_storage_snapshot_in_query">
  ## enable\_shared\_storage\_snapshot\_in\_query
</div>

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

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

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

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

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

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

<Note>
  Включение этого параметра отключает оптимизацию, которая удаляет из снимков ненужные части данных после завершения этапа планирования.
  В результате долго выполняющиеся запросы могут удерживать устаревшие части в течение всего времени выполнения, что задерживает их очистку и увеличивает нагрузку на хранилище.

  В настоящее время этот параметр применяется только к таблицам семейства MergeTree.
</Note>

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

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

<div id="enable_sharing_sets_for_mutations">
  ## enable\_sharing\_sets\_for\_mutations
</div>

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

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

<div id="enable_software_prefetch_in_aggregation">
  ## enable\_software\_prefetch\_in\_aggregation
</div>

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

Включает программную предварительную выборку при агрегации

<div id="enable_software_prefetch_in_join">
  ## enable\_software\_prefetch\_in\_join
</div>

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

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

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

<div id="enable_time_time64_type">
  ## enable\_time\_time64\_type
</div>

**Псевдонимы**: `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).

<div id="enable_unaligned_array_join">
  ## enable\_unaligned\_array\_join
</div>

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

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

<div id="enable_url_encoding">
  ## enable\_url\_encoding
</div>

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

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

<div id="enable_vertical_final">
  ## enable\_vertical\_final
</div>

<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 удаляются путём пометки строк как удалённых и их последующей фильтрации вместо слияния строк

<div id="enable_writes_to_query_cache">
  ## enable\_writes\_to\_query\_cache
</div>

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

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

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

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

<div id="enforce_strict_identifier_format">
  ## enforce\_strict\_identifier\_format
</div>

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

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

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

<div id="engine_file_allow_create_multiple_files">
  ## engine\_file\_allow\_create\_multiple\_files
</div>

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

Включает или отключает создание нового файла при каждой вставке в таблицах с движком File, если у формата есть суффикс (`JSON`, `ORC`, `Parquet` и т. д.). Если параметр включен, при каждой вставке будет создаваться новый файл с именем по следующему шаблону:

`data.Parquet` -> `data.1.Parquet` -> `data.2.Parquet` и т. д.

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

* 0 — запрос `INSERT` дописывает новые данные в конец файла.
* 1 — запрос `INSERT` создает новый файл.

<div id="engine_file_empty_if_not_exists">
  ## engine\_file\_empty\_if\_not\_exists
</div>

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

Позволяет выбирать данные из таблицы движка File, даже если файл отсутствует.

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

* 0 — `SELECT` генерирует исключение.
* 1 — `SELECT` возвращает пустой результат.

<div id="engine_file_skip_empty_files">
  ## engine\_file\_skip\_empty\_files
</div>

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

Включает или отключает пропуск пустых файлов в таблицах с движком [File](/ru/reference/engines/table-engines/special/file).

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

* 0 — `SELECT` генерирует исключение, если пустой файл несовместим с запрошенным форматом.
* 1 — `SELECT` возвращает пустой результат для пустого файла.

<div id="engine_file_truncate_on_insert">
  ## engine\_file\_truncate\_on\_insert
</div>

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

Включает или отключает усечение файла перед вставкой в таблицах с движком [File](/ru/reference/engines/table-engines/special/file).

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

* 0 — запрос `INSERT` дописывает новые данные в конец файла.
* 1 — запрос `INSERT` заменяет существующее содержимое файла новыми данными.

<div id="engine_url_skip_empty_files">
  ## engine\_url\_skip\_empty\_files
</div>

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

Включает или отключает пропуск пустых файлов в таблицах движка [URL](/ru/reference/engines/table-engines/special/url).

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

* 0 — `SELECT` генерирует исключение, если пустой файл несовместим с запрошенным форматом.
* 1 — `SELECT` возвращает пустой результат для пустого файла.

<div id="exact_rows_before_limit">
  ## exact\_rows\_before\_limit
</div>

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

Если включено, ClickHouse будет возвращать точное значение статистики rows\_before\_limit\_at\_least, но для этого потребуется полностью прочитать данные до лимита

<div id="except_default_mode">
  ## except\_default\_mode
</div>

<SettingsInfoBlock type="SetOperationMode" default_value="ALL" />

Устанавливает режим по умолчанию для запроса EXCEPT. Возможные значения: пустая строка, 'ALL', 'DISTINCT'. Если указана пустая строка, запрос без режима сгенерирует исключение.

<div id="exclude_materialize_skip_indexes_on_insert">
  ## exclude\_materialize\_skip\_indexes\_on\_insert
</div>

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

Исключает построение и сохранение указанных индексов пропуска данных при INSERT. Исключённые индексы пропуска данных всё равно будут построены и сохранены [при слияниях](/ru/reference/settings/merge-tree-settings#materialize_skip_indexes_on_merge) или явным
[запросом MATERIALIZE INDEX](/ru/reference/statements/alter/skipping-index#materialize-index).

Не имеет эффекта, если [materialize\_skip\_indexes\_on\_insert](#materialize_skip_indexes_on_insert) имеет значение false.

Пример:

```sql theme={null}
CREATE TABLE tab
(
    a UInt64,
    b UInt64,
    INDEX idx_a a TYPE minmax,
    INDEX idx_b b TYPE set(3)
)
ENGINE = MergeTree ORDER BY tuple();

SET exclude_materialize_skip_indexes_on_insert='idx_a'; -- idx_a не будет обновляться при вставке
--SET exclude_materialize_skip_indexes_on_insert='idx_a, idx_b'; -- ни один из индексов не будет обновляться при вставке

INSERT INTO tab SELECT number, number / 50 FROM numbers(100); -- обновляется только idx_b

-- поскольку это настройка сеанса, её можно задать на уровне отдельного запроса
INSERT INTO tab SELECT number, number / 50 FROM numbers(100, 100) SETTINGS exclude_materialize_skip_indexes_on_insert='idx_b';

ALTER TABLE tab MATERIALIZE INDEX idx_a; -- этот запрос позволяет явно материализовать индекс

SET exclude_materialize_skip_indexes_on_insert = DEFAULT; -- сброс настройки к значению по умолчанию
```

<div id="execute_exists_as_scalar_subquery">
  ## execute\_exists\_as\_scalar\_subquery
</div>

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

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

Выполнять некоррелированные подзапросы EXISTS как скалярные подзапросы. Как и для скалярных подзапросов, используется кэш, а к результату применяется свёртка констант.

Значение по умолчанию в Cloud: `0`.

<div id="external_storage_connect_timeout_sec">
  ## external\_storage\_connect\_timeout\_sec
</div>

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

Тайм-аут подключения в секундах. В настоящее время поддерживается только для MySQL

<div id="external_storage_max_read_bytes">
  ## external\_storage\_max\_read\_bytes
</div>

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

Ограничивает максимальное число байтов при сбросе исторических данных таблицей с внешним движком. Сейчас поддерживается только для движка таблицы MySQL, движка базы данных и словаря. Если равно 0, эта настройка отключена

<div id="external_storage_max_read_rows">
  ## external\_storage\_max\_read\_rows
</div>

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

Ограничивает максимальное число строк при сбросе данных истории таблицей с внешним движком. Сейчас поддерживается только для движка таблицы MySQL, движка базы данных и словаря. Если равно 0, эта настройка отключена

<div id="external_storage_rw_timeout_sec">
  ## external\_storage\_rw\_timeout\_sec
</div>

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

Тайм-аут чтения/записи в секундах. В настоящее время поддерживается только для MySQL

<div id="external_table_functions_use_nulls">
  ## external\_table\_functions\_use\_nulls
</div>

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

Определяет, как табличные функции [mysql](/ru/reference/functions/table-functions/mysql), [postgresql](/ru/reference/functions/table-functions/postgresql) и [odbc](/ru/reference/functions/table-functions/odbc) работают со столбцами с типом Nullable.

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

* 0 — Табличная функция явно использует столбцы с типом Nullable.
* 1 — Табличная функция неявно использует столбцы с типом Nullable.

**Использование**

Если для настройки установлено значение `0`, табличная функция не создаёт столбцы с типом Nullable и вставляет значения по умолчанию вместо NULL. Это также относится к значениям NULL внутри массивов.

<div id="external_table_strict_query">
  ## external\_table\_strict\_query
</div>

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

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

<div id="extract_key_value_pairs_max_pairs_per_row">
  ## extract\_key\_value\_pairs\_max\_pairs\_per\_row
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0"},{"label": "Максимальное число пар, которое может возвращать функция `extractKeyValuePairs`. Используется для защиты от чрезмерного потребления памяти."}]}]} />

Максимальное число пар, которое может возвращать функция `extractKeyValuePairs`. Используется для защиты от чрезмерного потребления памяти.

<div id="extremes">
  ## extremes
</div>

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

Определяет, следует ли учитывать экстремальные значения (минимумы и максимумы в столбцах результата запроса). Принимает значения 0 или 1. По умолчанию — 0 (отключено).
Дополнительные сведения см. в разделе «Экстремальные значения».

<div id="fallback_to_stale_replicas_for_distributed_queries">
  ## fallback\_to\_stale\_replicas\_for\_distributed\_queries
</div>

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

Принудительно направляет запрос к устаревшей реплике, если обновлённые данные недоступны. См. [репликацию](/ru/reference/engines/table-engines/mergetree-family/replication).

ClickHouse выбирает наиболее подходящую из устаревших реплик таблицы.

Используется при выполнении `SELECT` из distributed таблицы, указывающей на реплицируемые таблицы.

По умолчанию — 1 (включено).

<div id="filesystem_cache_allow_background_download">
  ## filesystem\_cache\_allow\_background\_download
</div>

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

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

Разрешает файловому кэшу ставить в очередь фоновые загрузки данных, читаемых из удалённого хранилища. Отключите этот параметр, чтобы загрузки выполнялись в рамках текущего запроса/сеанса, а не в фоновом режиме.

<div id="filesystem_cache_boundary_alignment">
  ## filesystem\_cache\_boundary\_alignment
</div>

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

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

Выравнивание границ файлового кэша. Эта настройка применяется только при чтении не с диска (например, для кэша удалённых движков таблиц / табличных функций, но не для конфигурации хранилища таблиц MergeTree). Значение 0 означает, что выравнивание не используется.

<div id="filesystem_cache_enable_background_download_during_fetch">
  ## filesystem\_cache\_enable\_background\_download\_during\_fetch
</div>

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

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

Действует только в ClickHouse Cloud. Время ожидания при блокировке кэша для резервирования места в файловом кэше

<div id="filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage">
  ## filesystem\_cache\_enable\_background\_download\_for\_metadata\_files\_in\_packed\_storage
</div>

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

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

Действует только в ClickHouse Cloud. Время ожидания блокировки кэша для резервирования места в файловом кэше

<div id="filesystem_cache_max_download_size">
  ## filesystem\_cache\_max\_download\_size
</div>

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

Максимальный размер файлового кэша удалённой файловой системы, который можно загрузить в рамках одного запроса

<div id="filesystem_cache_name">
  ## filesystem\_cache\_name
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": ""},{"label": "Имя файлового кэша, используемое для движков таблиц без состояния или озёр данных"}]}]} />

Имя файлового кэша, используемое для движков таблиц без состояния или озёр данных

<div id="filesystem_cache_prefer_bigger_buffer_size">
  ## filesystem\_cache\_prefer\_bigger\_buffer\_size
</div>

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

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

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

<div id="filesystem_cache_reserve_space_wait_lock_timeout_milliseconds">
  ## filesystem\_cache\_reserve\_space\_wait\_lock\_timeout\_milliseconds
</div>

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

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

Время ожидания при блокировке кэша для резервирования места в файловом кэше

<div id="filesystem_cache_segments_batch_size">
  ## filesystem\_cache\_segments\_batch\_size
</div>

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

Ограничение на размер одного батча сегментов файла, который буфер чтения может запрашивать из кэша. Слишком низкое значение приведёт к избыточному количеству запросов к кэшу, слишком большое может замедлить вытеснение из кэша.

<div id="filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit">
  ## filesystem\_cache\_skip\_download\_if\_exceeds\_per\_query\_cache\_write\_limit
</div>

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Переименование настройки skip_download_if_exceeds_query_cache_limit"}]}]} />

Пропускать загрузку из удалённой файловой системы, если размер загрузки превышает размер кэша запросов

<div id="filesystem_prefetch_max_memory_usage">
  ## filesystem\_prefetch\_max\_memory\_usage
</div>

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

Максимальный объём памяти для операций предварительного чтения.

Значение по умолчанию в Cloud: 10% от общего объёма памяти.

<div id="filesystem_prefetch_step_bytes">
  ## filesystem\_prefetch\_step\_bytes
</div>

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

Шаг предварительного чтения в байтах. Ноль означает `auto` — приблизительно оптимальный шаг предварительного чтения будет определён автоматически, но он может оказаться не на 100% оптимальным. Фактическое значение может отличаться из-за настройки filesystem\_prefetch\_min\_bytes\_for\_single\_read\_task

<div id="filesystem_prefetch_step_marks">
  ## filesystem\_prefetch\_step\_marks
</div>

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

Шаг предварительного чтения в marks. Ноль означает `auto` — приблизительно оптимальный шаг предварительного чтения будет определён автоматически, но он может оказаться не на 100% оптимальным. Фактическое значение может отличаться из-за настройки filesystem\_prefetch\_min\_bytes\_for\_single\_read\_task

<div id="filesystem_prefetches_limit">
  ## filesystem\_prefetches\_limit
</div>

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

Максимальное количество операций предварительного чтения. Ноль означает отсутствие ограничений. Если нужно ограничить количество операций предварительного чтения, рекомендуется использовать настройку `filesystem_prefetches_max_memory_usage`

<div id="final">
  ## final
</div>

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

Автоматически применяет модификатор [FINAL](/ru/reference/statements/select/from#final-modifier) ко всем таблицам в запросе, к которым применим [FINAL](/ru/reference/statements/select/from#final-modifier), включая таблицы, участвующие в JOIN, таблицы в подзапросах и
distributed таблицы.

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

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

Пример:

```sql theme={null}
CREATE TABLE test
(
    key Int64,
    some String
)
ENGINE = ReplacingMergeTree
ORDER BY key;

INSERT INTO test FORMAT Values (1, 'first');
INSERT INTO test FORMAT Values (1, 'second');

SELECT * FROM test;
┌─key─┬─some───┐
│   1 │ second │
└─────┴────────┘
┌─key─┬─some──┐
│   1 │ first │
└─────┴───────┘

SELECT * FROM test SETTINGS final = 1;
┌─key─┬─some───┐
│   1 │ second │
└─────┴────────┘

SET final = 1;
SELECT * FROM test;
┌─key─┬─some───┐
│   1 │ second │
└─────┴────────┘
```

<div id="finalize_projection_parts_synchronously">
  ## finalize\_projection\_parts\_synchronously
</div>

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

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

Если параметр включен, части проекций финализируются синхронно во время INSERT, что снижает пиковое потребление памяти ценой уменьшения параллелизма загрузки в S3. По умолчанию выходной поток каждой проекции остается активным, пока не будет финализирована вся часть (включая все проекции), что позволяет выполнять параллельно перекрывающиеся загрузки в S3, но увеличивает пиковое потребление памяти пропорционально числу проекций. Эта настройка влияет только на INSERT; операции merge и mutation уже финализируют проекции синхронно.

<div id="flatten_nested">
  ## flatten\_nested
</div>

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

Задаёт формат данных для столбцов [nested](/ru/reference/data-types/nested-data-structures).

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

* 1 — вложенный столбец разворачивается в отдельные массивы.
* 0 — вложенный столбец остаётся одним массивом кортежей.

**Использование**

Если для настройки установлено значение `0`, можно использовать произвольный уровень вложенности.

**Примеры**

Запрос:

```sql theme={null}
SET flatten_nested = 1;
CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();

SHOW CREATE TABLE t_nest;
```

Результат:

```text theme={null}
┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
    `n.a` Array(UInt32),
    `n.b` Array(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

Запрос:

```sql theme={null}
SET flatten_nested = 0;

CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();

SHOW CREATE TABLE t_nest;
```

Результат:

```text theme={null}
┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
    `n` Nested(a UInt32, b UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="force_aggregate_partitions_independently">
  ## force\_aggregate\_partitions\_independently
</div>

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

Принудительно включает эту оптимизацию, когда она применима, даже если эвристики решили её не использовать

<div id="force_aggregation_in_order">
  ## force\_aggregation\_in\_order
</div>

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

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

<div id="force_data_skipping_indices">
  ## force\_data\_skipping\_indices
</div>

Отключает выполнение запроса, если указанные индексы пропуска данных не использовались.

Рассмотрим следующий пример:

```sql theme={null}
CREATE TABLE data
(
    key Int,
    d1 Int,
    d1_null Nullable(Int),
    INDEX d1_idx d1 TYPE minmax GRANULARITY 1,
    INDEX d1_null_idx assumeNotNull(d1_null) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;

SELECT * FROM data_01515;
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices=''; -- запрос вернёт ошибку CANNOT_PARSE_TEXT.
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices='d1_idx'; -- запрос вернёт ошибку INDEX_NOT_USED.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='d1_idx'; -- Ок.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`'; -- Ок (пример использования полнофункционального парсера).
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- запрос вернёт ошибку INDEX_NOT_USED, так как d1_null_idx не используется.
SELECT * FROM data_01515 WHERE d1 = 0 AND assumeNotNull(d1_null) = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- Ок.
```

<div id="force_grouping_standard_compatibility">
  ## force\_grouping\_standard\_compatibility
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.9"},{"label": "1"},{"label": "Приводит результат функции GROUPING в соответствие со стандартом SQL и другими СУБД"}]}]} />

Функция GROUPING возвращает 1, если аргумент не используется в качестве ключа агрегации

<div id="force_index_by_date">
  ## force\_index\_by\_date
</div>

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

Отключает выполнение запроса, если индекс по дате нельзя использовать.

Работает с таблицами семейства MergeTree.

Если `force_index_by_date=1`, ClickHouse проверяет, есть ли в запросе условие по ключу даты, которое можно использовать для ограничения диапазонов данных. Если подходящего условия нет, генерируется исключение. Однако ClickHouse не проверяет, уменьшает ли это условие объём читаемых данных. Например, условие `Date != ' 2000-01-01 '` допустимо, даже если ему соответствуют все данные в таблице (то есть для выполнения запроса потребуется полное сканирование). Дополнительные сведения о диапазонах данных в таблицах MergeTree см. в разделе [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree).

<div id="force_optimize_projection">
  ## force\_optimize\_projection
</div>

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

Включает или отключает обязательное использование [проекций](/ru/reference/engines/table-engines/mergetree-family/mergetree#projections) в запросах `SELECT`, если включена оптимизация проекций (см. настройку [optimize\_use\_projections](#optimize_use_projections)).

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

* 0 — Использование оптимизации проекций не является обязательным.
* 1 — Использование оптимизации проекций является обязательным.

<div id="force_optimize_projection_name">
  ## force\_optimize\_projection\_name
</div>

Если задана непустая строка, проверяется, что эта проекция используется в запросе хотя бы один раз.

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

* строка: имя проекции, используемой в запросе

<div id="force_optimize_skip_unused_shards">
  ## force\_optimize\_skip\_unused\_shards
</div>

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

Включает или отключает выполнение запроса, если параметр [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards) включен, но пропуск неиспользуемых сегментов невозможен. Если пропуск невозможен и этот параметр включен, будет сгенерировано исключение.

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

* 0 — Отключено. ClickHouse не генерирует исключение.
* 1 — Включено. Выполнение запроса отключается, только если у таблицы есть ключ сегментирования.
* 2 — Включено. Выполнение запроса отключается независимо от того, определен ли для таблицы ключ сегментирования.

<div id="force_optimize_skip_unused_shards_nesting">
  ## force\_optimize\_skip\_unused\_shards\_nesting
</div>

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

Управляет [`force_optimize_skip_unused_shards`](#force_optimize_skip_unused_shards) в зависимости от уровня вложенности распределённого запроса (при этом по-прежнему требует [`force_optimize_skip_unused_shards`](#force_optimize_skip_unused_shards)). Речь идёт о случае, когда у вас есть таблица `Distributed`, обращающаяся к другой таблице `Distributed`.

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

* 0 - Отключено, `force_optimize_skip_unused_shards` работает всегда.
* 1 — Включает `force_optimize_skip_unused_shards` только для первого уровня.
* 2 — Включает `force_optimize_skip_unused_shards` до второго уровня.

<div id="force_primary_key">
  ## force\_primary\_key
</div>

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

Отключает выполнение запроса, если использование индекса по первичному ключу невозможно.

Работает с таблицами семейства MergeTree.

Если `force_primary_key=1`, ClickHouse проверяет, есть ли в запросе условие по первичному ключу, которое можно использовать для ограничения диапазонов данных. Если подходящего условия нет, генерируется исключение. Однако не проверяется, уменьшает ли это условие объём данных, которые нужно прочитать. Дополнительные сведения о диапазонах данных в таблицах MergeTree см. в разделе [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree).

<div id="force_remove_data_recursively_on_drop">
  ## force\_remove\_data\_recursively\_on\_drop
</div>

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

Рекурсивно удаляет данные при выполнении запроса DROP. Позволяет избежать ошибки «Directory not empty», но может незаметно удалить отсоединённые данные

<div id="formatdatetime_e_with_space_padding">
  ## formatdatetime\_e\_with\_space\_padding
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Улучшена совместимость с MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

Форматтер '%e' в функции 'formatDateTime' выводит дни месяца с одной цифрой с ведущим пробелом, например ' 2' вместо '2'.

<div id="formatdatetime_f_prints_scale_number_of_digits">
  ## formatdatetime\_f\_prints\_scale\_number\_of\_digits
</div>

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

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

Форматтер '%f' в функции 'formatDateTime' для DateTime64 выводит только число цифр, соответствующее scale, а не фиксированные 6 цифр.

<div id="formatdatetime_f_prints_single_zero">
  ## formatdatetime\_f\_выводит\_один\_ноль
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "0"},{"label": "Повышена совместимость с MySQL DATE_FORMAT()/STR_TO_DATE()"}]}]} />

Форматтер «%f» в функции «formatDateTime» выводит один ноль вместо шести, если форматируемое значение не содержит дробной части секунды.

<div id="formatdatetime_format_without_leading_zeros">
  ## formatdatetime\_format\_without\_leading\_zeros
</div>

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

Форматтеры '%c', '%l' и '%k' в функции 'formatDateTime' выводят месяцы и часы без начальных нулей.

<div id="formatdatetime_parsedatetime_m_is_month_name">
  ## formatdatetime\_parsedatetime\_m\_is\_month\_name
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "1"},{"label": "Улучшена совместимость с MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

Форматтер '%M' в функциях 'formatDateTime' и 'parseDateTime' выводит/разбирает название месяца, а не минуты.

<div id="fsync_metadata">
  ## fsync\_metadata
</div>

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

Включает или отключает [fsync](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html) при записи файлов `.sql`. По умолчанию включено.

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

<div id="function_date_trunc_return_type_behavior">
  ## function\_date\_trunc\_return\_type\_behavior
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "Добавлена новая настройка для сохранения прежнего поведения функции dateTrunc"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Изменён тип результата функции dateTrunc для аргументов DateTime64/Date32 на DateTime64/Date32 независимо от единицы времени, чтобы обеспечить корректный результат для отрицательных значений"}]}]} />

Позволяет изменить поведение типа результата функции `dateTrunc`.

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

* 0 - Если второй аргумент — `DateTime64/Date32`, возвращаемый тип будет `DateTime64/Date32` независимо от единицы времени в первом аргументе.
* 1 - Для `Date32` результатом всегда будет `Date`. Для `DateTime64` результатом будет `DateTime` для единиц времени `second` и больше.

<div id="function_implementation">
  ## function\_implementation
</div>

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

<div id="function_json_value_return_type_allow_complex">
  ## function\_json\_value\_return\_type\_allow\_complex
</div>

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

Определяет, разрешён ли для функции json\_value возврат сложного типа (например, struct, array, map).

```sql theme={null}
SELECT JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true

┌─JSON_VALUE('{"hello":{"world":"!"}}', '$.hello')─┐
│ {"world":"!"}                                    │
└──────────────────────────────────────────────────┘

1 row in set. Elapsed: 0.001 sec.
```

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

* true — Разрешить.
* false — Запретить.

<div id="function_json_value_return_type_allow_nullable">
  ## function\_json\_value\_return\_type\_allow\_nullable
</div>

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

Управляет тем, разрешён ли возврат `NULL`, если для функции JSON\_VALUE значение отсутствует.

```sql theme={null}
SELECT JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;

┌─JSON_VALUE('{"hello":"world"}', '$.b')─┐
│ ᴺᵁᴸᴸ                                   │
└────────────────────────────────────────┘

1 row in set. Elapsed: 0.001 sec.
```

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

* true — Разрешено.
* false — Запрещено.

<div id="function_locate_has_mysql_compatible_argument_order">
  ## function\_locate\_has\_mysql\_compatible\_argument\_order
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Улучшена совместимость с функцией locate в MySQL."}]}]} />

Определяет порядок аргументов функции [locate](/ru/reference/functions/regular-functions/string-search-functions#locate).

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

* 0 — Функция `locate` принимает аргументы `(haystack, needle[, start_pos])`.
* 1 — Функция `locate` принимает аргументы `(needle, haystack, [, start_pos])` (поведение, совместимое с MySQL)

<div id="function_range_max_elements_in_block">
  ## function\_range\_max\_elements\_in\_block
</div>

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

Устанавливает защитный порог для объема данных, генерируемого функцией [range](/ru/reference/functions/regular-functions/array-functions#range). Определяет максимальное количество значений, которые функция может сгенерировать в одном блоке данных (сумма размеров массивов для каждой строки в блоке).

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

* Положительное целое число.

**См. также**

* [`max_block_size`](#max_block_size)
* [`min_insert_block_size_rows`](#min_insert_block_size_rows)

<div id="function_sleep_max_microseconds_per_block">
  ## function\_sleep\_max\_microseconds\_per\_block
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.7"},{"label": "3000000"},{"label": "В предыдущих версиях максимальная длительность сна в 3 секунды применялась только к `sleep`, но не к функции `sleepEachRow`. В новой версии мы вводим эту настройку. Если установить совместимость с предыдущими версиями, это ограничение будет полностью отключено."}]}]} />

Максимальное число микросекунд, на которое функции `sleep` разрешено приостанавливать выполнение для каждого блока. Если пользователь вызовет её с бо́льшим значением, будет сгенерировано исключение. Это защитный порог.

<div id="function_visible_width_behavior">
  ## function\_visible\_width\_behavior
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "Мы изменили поведение `visibleWidth` по умолчанию, чтобы повысить точность"}]}]} />

Версия поведения `visibleWidth`. 0 — учитывать только количество кодовых точек; 1 — корректно учитывать символы нулевой ширины и комбинируемые символы, считать полноширинные символы за два, оценивать ширину табуляции, учитывать символы удаления.

<div id="functions_h3_default_if_invalid">
  ## functions\_h3\_default\_if\_invalid
</div>

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

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

Если false, функции h3, например h3CellAreaM2, сгенерируют исключение, если входные данные недопустимы. Если true, они возвращают 0 или значение по умолчанию.

<div id="geo_distance_returns_float64_on_float64_arguments">
  ## geo\_distance\_returns\_float64\_on\_float64\_arguments
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Повышена точность по умолчанию."}]}]} />

Если все четыре аргумента функций `geoDistance`, `greatCircleDistance` и `greatCircleAngle` имеют тип Float64, возвращаемое значение также будет Float64, а для внутренних вычислений будет использоваться двойная точность. В предыдущих версиях ClickHouse эти функции всегда возвращали Float32.

<div id="geotoh3_argument_order">
  ## geotoh3\_argument\_order
</div>

<SettingsInfoBlock type="GeoToH3ArgumentOrder" default_value="lat_lon" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "lat_lon"},{"label": "Новая настройка для сохранения прежнего поведения, которая задаёт порядок аргументов lon и lat"}]}]} />

Функция `geoToH3` принимает (lon, lat), если установлено значение `lon_lat`, и (lat, lon), если установлено значение `lat_lon`.

<div id="glob_expansion_max_elements">
  ## glob\_expansion\_max\_elements
</div>

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

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

<div id="grace_hash_join_initial_buckets">
  ## grace\_hash\_join\_initial\_buckets
</div>

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

Начальное количество бакетов для grace hash join

<div id="grace_hash_join_max_buckets">
  ## grace\_hash\_join\_max\_buckets
</div>

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

Ограничение на количество бакетов в grace hash join

<div id="group_by_overflow_mode">
  ## group\_by\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowModeGroupBy" default_value="throw" />

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

* `throw`: сгенерировать исключение
* `break`: остановить выполнение запроса и вернуть частичный результат
* `any`: продолжить агрегацию по ключам, которые попали в набор, но не добавлять в набор новые ключи.

Использование значения `any` позволяет выполнять приближённый GROUP BY. Качество
этого приближения зависит от статистической природы данных.

<div id="group_by_two_level_threshold">
  ## group\_by\_two\_level\_threshold
</div>

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

При каком количестве ключей начинается двухуровневая агрегация. 0 — порог не задан.

<div id="group_by_two_level_threshold_bytes">
  ## group\_by\_two\_level\_threshold\_bytes
</div>

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

При каком размере состояния агрегации в байтах начинает использоваться двухуровневая агрегация. 0 — порог не задан. Двухуровневая агрегация используется, когда срабатывает хотя бы один из порогов.

<div id="group_by_use_nulls">
  ## group\_by\_use\_nulls
</div>

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

Изменяет способ, которым [секция GROUP BY](/ru/reference/statements/select/group-by) обрабатывает типы ключей агрегации.
При использовании спецификаторов `ROLLUP`, `CUBE` или `GROUPING SETS` некоторые ключи агрегации могут не участвовать в формировании отдельных строк результата.
В соответствующих строках столбцы для этих ключей заполняются либо значением по умолчанию, либо `NULL` — в зависимости от этой настройки.

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

* 0 — Для подстановки отсутствующих значений используется значение по умолчанию для типа ключа агрегации.
* 1 — ClickHouse выполняет `GROUP BY` так, как это определено стандартом SQL. Типы ключей агрегации преобразуются в [Nullable](/ru/reference/data-types/nullable). В строках, где соответствующие ключи агрегации не используются, их столбцы заполняются значением [NULL](/ru/reference/syntax#null).

См. также:

* [секция GROUP BY](/ru/reference/statements/select/group-by)

<div id="h3togeo_lon_lat_result_order">
  ## h3togeo\_lon\_lat\_result\_order
</div>

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

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

Функция `h3ToGeo` возвращает (lon, lat), если значение равно true, в противном случае — (lat, lon).

<div id="handshake_timeout_ms">
  ## handshake\_timeout\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="10000" />

Тайм-аут в миллисекундах на получение пакета Hello от реплик при рукопожатии.

<div id="hdfs_create_new_file_on_insert">
  ## hdfs\_create\_new\_file\_on\_insert
</div>

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

Включает или отключает создание нового файла при каждой вставке в таблицы с движком HDFS. Если параметр включен, при каждой вставке будет создаваться новый файл в HDFS с именем по следующему шаблону:

изначально: `data.Parquet.gz` -> `data.1.Parquet.gz` -> `data.2.Parquet.gz` и т. д.

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

* 0 — запрос `INSERT` дописывает новые данные в конец файла.
* 1 — запрос `INSERT` создает новый файл.

<div id="hdfs_ignore_file_doesnt_exist">
  ## hdfs\_ignore\_file\_doesnt\_exist
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Разрешить возвращать 0 строк, если запрошенные файлы не существуют, вместо того чтобы генерировать исключение в движке таблицы HDFS"}]}]} />

Игнорировать отсутствие файла при чтении по определённым ключам, если файл не существует.

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

* 1 — `SELECT` возвращает пустой результат.
* 0 — `SELECT` генерирует исключение.

<div id="hdfs_replication">
  ## hdfs\_replication
</div>

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

Фактическое количество реплик можно указать при создании файла в HDFS.

<div id="hdfs_skip_empty_files">
  ## hdfs\_skip\_empty\_files
</div>

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

Включает или отключает пропуск пустых файлов в таблицах с движком [HDFS](/ru/reference/engines/table-engines/integrations/hdfs).

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

* 0 — `SELECT` генерирует исключение, если пустой файл несовместим с запрошенным форматом.
* 1 — `SELECT` возвращает пустой результат для пустого файла.

<div id="hdfs_throw_on_zero_files_match">
  ## hdfs\_throw\_on\_zero\_files\_match
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Позволяет генерировать ошибку, если запрос ListObjects не находит ни одного файла в движке HDFS, вместо возврата пустого результата запроса"}]}]} />

Генерировать ошибку, если по правилам раскрытия glob не найдено ни одного файла.

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

* 1 — `SELECT` генерирует исключение.
* 0 — `SELECT` возвращает пустой результат.

<div id="hdfs_truncate_on_insert">
  ## hdfs\_truncate\_on\_insert
</div>

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

Включает или отключает усечение файла перед вставкой в таблицах движка HDFS. Если параметр отключен, при попытке вставки в уже существующий файл в HDFS будет сгенерировано исключение.

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

* 0 — запрос `INSERT` добавляет новые данные в конец файла.
* 1 — запрос `INSERT` заменяет существующее содержимое файла новыми данными.

<div id="hedged_connection_timeout_ms">
  ## hedged\_connection\_timeout\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.4"},{"label": "50"},{"label": "Начинать новое соединение в hedged-запросах через 50 мс вместо 100, чтобы оно соответствовало предыдущему тайм-ауту подключения"}]}]} />

Тайм-аут при установлении соединения с репликой для hedged-запросов

<div id="highlight_max_matches_per_row">
  ## highlight\_max\_matches\_per\_row
</div>

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

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

Задаёт максимальное количество выделяемых совпадений в строке в функции [highlight](/ru/reference/functions/regular-functions/string-search-functions#highlight). Используйте её для защиты от чрезмерного использования памяти при выделении сильно повторяющихся шаблонов в больших текстах.

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

* Положительное целое число.

<div id="hnsw_candidate_list_size_for_search">
  ## hnsw\_candidate\_list\_size\_for\_search
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "256"},{"label": "Новая настройка. Ранее значение при необходимости указывалось в CREATE INDEX, а по умолчанию составляло 64."}]}]} />

Размер динамического списка кандидатов при поиске в индексе векторного сходства, также известный как 'ef\_search'.

<div id="hsts_max_age">
  ## hsts\_max\_age
</div>

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

Срок действия HSTS. Значение 0 отключает HSTS.

<div id="http_connection_timeout">
  ## http\_connection\_timeout
</div>

<SettingsInfoBlock type="Секунды" default_value="1" />

Тайм-аут HTTP-соединения (в секундах).

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

* Любое положительное целое число.
* 0 — отключено (бесконечный тайм-аут).

<div id="http_headers_progress_interval_ms">
  ## http\_headers\_progress\_interval\_ms
</div>

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

Не отправляйте HTTP-заголовки X-ClickHouse-Progress чаще, чем через указанный интервал.

<div id="http_headers_read_timeout">
  ## http\_headers\_read\_timeout
</div>

<SettingsInfoBlock type="Секунды" default_value="30" />

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

Максимальное время в секундах, отведенное на чтение всех заголовков HTTP-запроса. Это общий предельный срок для всего этапа разбора заголовков, а не тайм-аут отдельной операции чтения. Защищает от атак типа slowloris, при которых клиент медленно передает данные заголовков, чтобы удерживать соединения открытыми.

<div id="http_make_head_request">
  ## http\_make\_head\_request
</div>

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

Настройка `http_make_head_request` позволяет выполнять запрос `HEAD` при чтении данных по HTTP, чтобы получить информацию о файле, например его размер. Поскольку она включена по умолчанию, в случаях, когда сервер не поддерживает запросы `HEAD`, может быть целесообразно отключить эту настройку.

<div id="http_max_field_name_size">
  ## http\_max\_field\_name\_size
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "4096"},{"label": "Значение по умолчанию уменьшено, чтобы ограничить использование памяти HTTP-соединениями до аутентификации."}]}]} />

Максимальная длина имени поля в HTTP-заголовке

<div id="http_max_field_value_size">
  ## http\_max\_field\_value\_size
</div>

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

Максимальная длина значения поля HTTP-заголовка

<div id="http_max_fields">
  ## http\_max\_fields
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000"},{"label": "Значение по умолчанию уменьшено, чтобы ограничить использование памяти HTTP-соединениями до прохождения аутентификации."}]}]} />

Максимальное количество полей в HTTP-заголовке

<div id="http_max_multipart_form_data_size">
  ## http\_max\_multipart\_form\_data\_size
</div>

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

Ограничение на размер содержимого multipart/form-data. Этот параметр нельзя задать через параметры URL, его следует задавать в профиле пользователя. Обратите внимание, что содержимое разбирается, а внешние таблицы создаются в памяти до начала выполнения запроса. Это единственное ограничение, которое действует на этом этапе (ограничения на максимальное использование памяти и максимальное время выполнения не действуют при чтении данных HTTP-формы).

<div id="http_max_request_header_size">
  ## http\_max\_request\_header\_size
</div>

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

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

Максимальный суммарный размер всех заголовков HTTP-запроса (включая имена и значения) в байтах.

<div id="http_max_request_param_data_size">
  ## http\_max\_request\_param\_data\_size
</div>

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

Ограничение на размер данных запроса, используемых как параметр запроса в предопределённых HTTP-запросах.

<div id="http_max_tries">
  ## http\_max\_tries
</div>

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

Максимальное число попыток чтения по HTTP.

<div id="http_max_uri_size">
  ## http\_max\_uri\_size
</div>

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

Задаёт максимальную длину URI HTTP-запроса.

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

* Положительное целое число.

<div id="http_native_compression_disable_checksumming_on_decompress">
  ## http\_native\_compression\_disable\_checksumming\_on\_decompress
</div>

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

Включает или отключает проверку контрольной суммы при распаковке данных HTTP POST, полученных от клиента. Используется только для native-формата сжатия ClickHouse (не применяется с `gzip` или `deflate`).

Подробнее см. [описание HTTP-интерфейса](/ru/concepts/features/interfaces/http).

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

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

<div id="http_receive_timeout">
  ## http\_receive\_timeout
</div>

<SettingsInfoBlock type="Секунды" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.6"},{"label": "30"},{"label": "См. http_send_timeout."}]}]} />

Тайм-аут получения данных по HTTP (в секундах).

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

* Любое положительное целое число.
* 0 — отключено (бесконечный тайм-аут).

<div id="http_response_buffer_size">
  ## http\_response\_buffer\_size
</div>

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

Количество байтов, буферизуемых в памяти сервера перед отправкой HTTP-ответа клиенту или записью на диск (если включён параметр http\_wait\_end\_of\_query).

<div id="http_response_headers">
  ## http\_response\_headers
</div>

<SettingsInfoBlock type="Map" default_value="{}" />

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

Позволяет добавлять или переопределять HTTP-заголовки, которые сервер возвращает в ответе на успешно выполненный запрос.
Это влияет только на HTTP-интерфейс.

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

Эта настройка позволяет задать заголовок с фиксированным значением. В настоящее время задать заголовок с динамически вычисляемым значением нельзя.

Ни имена, ни значения не могут содержать управляющие символы ASCII.

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

Пример: `SET http_response_headers = '{"Content-Type": "image/png"}'`

<div id="http_retry_initial_backoff_ms">
  ## http\_retry\_initial\_backoff\_ms
</div>

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

Минимальная задержка в миллисекундах перед повторной попыткой чтения через http

<div id="http_retry_max_backoff_ms">
  ## http\_retry\_max\_backoff\_ms
</div>

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

Максимальная задержка в миллисекундах при повторных попытках чтения через http

<div id="http_send_timeout">
  ## http\_send\_timeout
</div>

<SettingsInfoBlock type="Секунды" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.6"},{"label": "30"},{"label": "3 минуты — это слишком много. Обратите внимание: это тайм-аут для одного вызова записи в сеть, а не для всей операции загрузки."}]}]} />

Тайм-аут отправки по HTTP (в секундах).

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

* Любое положительное целое число.
* 0 — отключено (бесконечный тайм-аут).

<Note>
  Применимо только к профилю по умолчанию. Чтобы изменения вступили в силу, требуется перезагрузка сервера.
</Note>

<div id="http_skip_not_found_url_for_globs">
  ## http\_skip\_not\_found\_url\_for\_globs
</div>

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

Пропускать URL-адреса для глоб-шаблонов при ошибке HTTP\_NOT\_FOUND

<div id="http_wait_end_of_query">
  ## http\_wait\_end\_of\_query
</div>

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

Включает буферизацию HTTP-ответов на стороне сервера.

<div id="http_write_exception_in_output_format">
  ## http\_write\_exception\_in\_output\_format
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "Изменено для единообразия между форматами"}]}, {"id": "row-2","items": [{"label": "23.9"},{"label": "1"},{"label": "Выводить корректный JSON/XML при Исключении в потоковой передаче по HTTP."}]}]} />

Записывает Исключение в выходной формат, чтобы обеспечить корректный вывод. Работает с форматами JSON и XML.

<div id="http_zlib_compression_level">
  ## http\_zlib\_compression\_level
</div>

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

Задаёт уровень сжатия данных в ответе на HTTP-запрос, если [enable\_http\_compression = 1](#enable_http_compression).

Возможные значения: числа от 1 до 9.

<div id="iceberg_compaction_data_cleanup">
  ## iceberg\_compaction\_data\_cleanup
</div>

<SettingsInfoBlock type="Секунды" default_value="10800" />

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

Время, по истечении которого данные удаляются.

<div id="iceberg_compaction_delay_bias">
  ## iceberg\_compaction\_delay\_bias
</div>

<SettingsInfoBlock type="Секунды" default_value="10800" />

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

Минимальное время задержки между двумя фоновыми операциями компакции.

<div id="iceberg_data_file_size_lower_threshold_compaction">
  ## iceberg\_data\_file\_size\_lower\_threshold\_compaction
</div>

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

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

Нижний порог размера файлов данных для compaction в Iceberg.

<div id="iceberg_data_file_size_upper_threshold_compaction">
  ## iceberg\_data\_file\_size\_upper\_threshold\_compaction
</div>

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

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

Порог для compaction файлов данных в Iceberg.

<div id="iceberg_delete_data_on_drop">
  ## iceberg\_delete\_data\_on\_drop
</div>

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

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

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

<div id="iceberg_expire_default_max_ref_age_ms">
  ## iceberg\_expire\_default\_max\_ref\_age\_ms
</div>

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

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

Значение по умолчанию для свойства `history.expire.max-ref-age-ms` таблицы Iceberg, которое используется функцией `expire_snapshots`, если это свойство отсутствует.

<div id="iceberg_expire_default_max_snapshot_age_ms">
  ## iceberg\_expire\_default\_max\_snapshot\_age\_ms
</div>

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

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

Значение по умолчанию для свойства Iceberg table `history.expire.max-snapshot-age-ms`, которое `expire_snapshots` использует, если это свойство отсутствует.

<div id="iceberg_expire_default_min_snapshots_to_keep">
  ## iceberg\_expire\_default\_min\_snapshots\_to\_keep
</div>

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

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

Значение по умолчанию для свойства таблицы Iceberg `history.expire.min-snapshots-to-keep`, которое использует `expire_snapshots`, если это свойство отсутствует.

<div id="iceberg_insert_max_bytes_in_data_file">
  ## iceberg\_insert\_max\_bytes\_in\_data\_file
</div>

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

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

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

<div id="iceberg_insert_max_partitions">
  ## iceberg\_insert\_max\_partitions
</div>

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

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

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

<div id="iceberg_insert_max_rows_in_data_file">
  ## iceberg\_insert\_max\_rows\_in\_data\_file
</div>

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

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

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

<div id="iceberg_max_number_datafiles_to_compact">
  ## iceberg\_max\_number\_datafiles\_to\_compact
</div>

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

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

Пороговое значение для компакции файлов данных в Iceberg.

<div id="iceberg_metadata_compression_method">
  ## iceberg\_metadata\_compression\_method
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": ""},{"label": "Новая настройка"}]}]} />

Метод сжатия файла `.metadata.json`.

<div id="iceberg_metadata_log_level">
  ## iceberg\_metadata\_log\_level
</div>

<SettingsInfoBlock type="IcebergMetadataLogLevel" default_value="none" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "none"},{"label": "Новая настройка"}]}]} />

Управляет уровнем журналирования метаданных для Iceberg-таблиц в таблицу system.iceberg\_metadata\_log.
Обычно эту настройку изменяют в целях отладки.

Возможные значения:

* none - Без журнала метаданных.
* metadata - Корневой файл metadata.json.
* manifest\_list\_metadata - Всё вышеперечисленное + метаданные из avro manifest list, соответствующего снимку.
* manifest\_list\_entry - Всё вышеперечисленное + записи avro manifest list.
* manifest\_file\_metadata - Всё вышеперечисленное + метаданные из просмотренных avro manifest files.
* manifest\_file\_entry - Всё вышеперечисленное + записи просмотренных avro manifest files.

<div id="iceberg_metadata_staleness_ms">
  ## iceberg\_metadata\_staleness\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Новая настройка, позволяющая использовать кэшированный снимок метаданных при операциях READ, чтобы не запрашивать данные из удалённого каталога"}]}]} />

Если значение не равно нулю, получение метаданных Iceberg из удалённого каталога пропускается, если существует кэшированный снимок метаданных новее заданного окна устаревания. Ноль означает, что последняя версия метаданных всегда запрашивается из удалённого каталога. Ненулевое значение этой настройки означает компромисс: допустимое устаревание в обмен на меньшую задержку операций чтения.

<div id="iceberg_orphan_files_older_than_seconds">
  ## iceberg\_orphan\_files\_older\_than\_seconds
</div>

<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 дня).

<div id="iceberg_snapshot_id">
  ## iceberg\_snapshot\_id
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Выполняет запрос к таблице Iceberg с использованием указанного идентификатора снимка.

<div id="iceberg_timestamp_ms">
  ## iceberg\_timestamp\_ms
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Выполняет запрос к таблице Iceberg, используя снимок, который был актуален на указанную временную метку.

<div id="idle_connection_timeout">
  ## idle\_connection\_timeout
</div>

<SettingsInfoBlock type="UInt64" default_value="3600" />

Тайм-аут закрытия бездействующих TCP-соединений по истечении указанного количества секунд.

Возможные значения:

* Положительное целое число (0 — закрыть немедленно, через 0 секунд).

<div id="ignore_cold_parts_seconds">
  ## ignore\_cold\_parts\_seconds
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

Действует только в ClickHouse Cloud. Исключает новые части данных из SELECT-запросов, пока они не будут предварительно прогреты (см. [cache\_populated\_by\_fetch](/ru/reference/settings/merge-tree-settings#cache_populated_by_fetch)) или не достигнут указанного возраста в секундах. Только для Replicated-/SharedMergeTree.

<div id="ignore_data_skipping_indices">
  ## ignore\_data\_skipping\_indices
</div>

Игнорирует указанные индексы пропуска данных, если они используются в запросе.

Рассмотрим следующий пример:

```sql theme={null}
CREATE TABLE data
(
    key Int,
    x Int,
    y Int,
    INDEX x_idx x TYPE minmax GRANULARITY 1,
    INDEX y_idx y TYPE minmax GRANULARITY 1,
    INDEX xy_idx (x,y) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;

INSERT INTO data VALUES (1, 2, 3);

SELECT * FROM data;
SELECT * FROM data SETTINGS ignore_data_skipping_indices=''; -- запрос вернёт ошибку CANNOT_PARSE_TEXT.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='x_idx'; -- Ok.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='na_idx'; -- Ok.

SELECT * FROM data WHERE x = 1 AND y = 1 SETTINGS ignore_data_skipping_indices='xy_idx',force_data_skipping_indices='xy_idx' ; -- запрос вернёт ошибку INDEX_NOT_USED, так как xy_idx явно игнорируется.
SELECT * FROM data WHERE x = 1 AND y = 2 SETTINGS ignore_data_skipping_indices='xy_idx';
```

Запрос без игнорирования индексов:

```sql theme={null}
EXPLAIN indexes = 1 SELECT * FROM data WHERE x = 1 AND y = 2;

Expression ((Projection + Before ORDER BY))
  Filter (WHERE)
    ReadFromMergeTree (default.data)
    Indexes:
      PrimaryKey
        Condition: true
        Parts: 1/1
        Granules: 1/1
      Skip
        Name: x_idx
        Description: minmax GRANULARITY 1
        Parts: 0/1
        Granules: 0/1
      Skip
        Name: y_idx
        Description: minmax GRANULARITY 1
        Parts: 0/0
        Granules: 0/0
      Skip
        Name: xy_idx
        Description: minmax GRANULARITY 1
        Parts: 0/0
        Granules: 0/0
```

Игнорирование индекса `xy_idx`:

```sql theme={null}
EXPLAIN indexes = 1 SELECT * FROM data WHERE x = 1 AND y = 2 SETTINGS ignore_data_skipping_indices='xy_idx';

Expression ((Projection + Before ORDER BY))
  Filter (WHERE)
    ReadFromMergeTree (default.data)
    Indexes:
      PrimaryKey
        Condition: true
        Parts: 1/1
        Granules: 1/1
      Skip
        Name: x_idx
        Description: minmax GRANULARITY 1
        Parts: 0/1
        Granules: 0/1
      Skip
        Name: y_idx
        Description: minmax GRANULARITY 1
        Parts: 0/0
        Granules: 0/0
```

Работает с таблицами семейства MergeTree.

<div id="ignore_drop_queries_probability">
  ## ignore\_drop\_queries\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "0"},{"label": "Позволяет с указанной вероятностью игнорировать запросы DROP на сервере в целях тестирования"}]}]} />

Если включено, сервер будет с указанной вероятностью игнорировать все запросы DROP TABLE (для движков Memory и JOIN он заменит DROP на TRUNCATE). Используется в целях тестирования

<div id="ignore_format_null_for_explain">
  ## ignore\_format\_null\_for\_explain
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "FORMAT Null теперь по умолчанию игнорируется для запросов EXPLAIN"}]}]} />

Если включено, `FORMAT Null` будет игнорироваться в запросах `EXPLAIN`, и вместо него будет использоваться формат вывода по умолчанию.
Если отключено, запросы `EXPLAIN` с `FORMAT Null` не будут выводить результат (поведение для обратной совместимости).

<div id="ignore_materialized_views_with_dropped_target_table">
  ## ignore\_materialized\_views\_with\_dropped\_target\_table
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "Добавлена новая настройка, позволяющая игнорировать materialized view с удалённой целевой таблицей"}]}]} />

Игнорировать MV с удалённой целевой таблицей при передаче данных в представления

<div id="ignore_on_cluster_for_replicated_access_entities_queries">
  ## ignore\_on\_cluster\_for\_replicated\_access\_entities\_queries
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Игнорировать предложение ON CLUSTER в запросах управления реплицируемыми сущностями доступа.

<div id="ignore_on_cluster_for_replicated_database">
  ## ignore\_on\_cluster\_for\_replicated\_database
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Добавить новую настройку, чтобы игнорировать предложение ON CLUSTER для DDL-запросов с базой данных Replicated."}]}]} />

Всегда игнорировать предложение ON CLUSTER для DDL-запросов с базами данных Replicated.

<div id="ignore_on_cluster_for_replicated_named_collections_queries">
  ## ignore\_on\_cluster\_for\_replicated\_named\_collections\_queries
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Игнорировать предложение ON CLUSTER в запросах управления реплицируемыми именованными коллекциями."}]}]} />

Игнорировать предложение ON CLUSTER в запросах управления реплицируемыми именованными коллекциями.

<div id="ignore_on_cluster_for_replicated_udf_queries">
  ## ignore\_on\_cluster\_for\_replicated\_udf\_queries
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Игнорировать предложение ON CLUSTER в запросах управления реплицируемыми UDF.

<div id="implicit_select">
  ## implicit\_select
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Разрешает писать простые запросы SELECT без ключевого слова SELECT в начале, что удобно при использовании в качестве калькулятора: например, `1 + 2` становится допустимым запросом.

В `clickhouse-local` эта возможность включена по умолчанию, но её можно явно отключить.

<div id="implicit_table_at_top_level">
  ## implicit\_table\_at\_top\_level
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": ""},{"label": "Новая настройка, используется в clickhouse-local"}]}]} />

Если значение не пустое, запросы без FROM на верхнем уровне будут читать данные из этой таблицы вместо system.one.

Это используется в clickhouse-local для обработки входных данных.
Параметр можно явно задать пользователю, но он не предназначен для такого использования.

Подзапросы этим параметром не затрагиваются (ни скалярные, ни подзапросы в FROM, ни подзапросы в IN).
SELECT на верхнем уровне цепочек UNION, INTERSECT и EXCEPT обрабатываются единообразно и подпадают под действие этого параметра независимо от их группировки скобками.
Не определено, как этот параметр влияет на представления и распределённые запросы.

Параметр принимает имя таблицы (в этом случае таблица определяется в текущей базе данных) или полное имя в формате 'database.table'.
Имена базы данных и таблицы должны быть без кавычек — допускаются только простые идентификаторы.

<div id="implicit_transaction">
  ## implicit\_transaction
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Если параметр включен и запрос еще не выполняется внутри транзакции, запрос оборачивается в полную транзакцию (begin + commit или rollback)

<div id="inject_random_order_for_select_without_order_by">
  ## inject\_random\_order\_for\_select\_without\_order\_by
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "новая настройка"}]}]} />

Если включено, добавляет 'ORDER BY rand()' в SELECT-запросы без предложения ORDER BY.
Применяется только при глубине подзапросов = 0. Подзапросы и INSERT INTO ... SELECT не затрагиваются.
Если конструкцией верхнего уровня является UNION, 'ORDER BY rand()' добавляется в каждый дочерний элемент независимо.
Полезно только для тестирования и разработки (отсутствие ORDER BY приводит к недетерминированным результатам запроса).

<div id="insert_allow_materialized_columns">
  ## insert\_allow\_materialized\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Если настройка включена, разрешается вставка в материализованные столбцы.

<div id="insert_deduplicate">
  ## insert\_deduplicate
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает дедупликацию блоков для `INSERT` (для таблиц Replicated\*).

Возможные значения:

* 0 — отключено.
* 1 — включено.

По умолчанию блоки, вставляемые в реплицируемые таблицы оператором `INSERT`, подвергаются дедупликации (см. [репликация данных](/ru/reference/engines/table-engines/mergetree-family/replication)).
Для реплицируемых таблиц по умолчанию дедуплицируются только 100 последних блоков для каждой партиции (см. [replicated\_deduplication\_window](/ru/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/ru/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Для нереплицируемых таблиц см. [non\_replicated\_deduplication\_window](/ru/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<div id="insert_deduplication_token">
  ## insert\_deduplication\_token
</div>

Эта настройка позволяет пользователю задать собственную логику дедупликации в MergeTree/ReplicatedMergeTree.
Например, если указывать уникальное значение этой настройки в каждом операторе INSERT,
можно избежать дедупликации одних и тех же вставленных данных.

Возможные значения:

* Любая строка

`insert_deduplication_token` используется для дедупликации *только* если он не пуст.

Для реплицируемых таблиц по умолчанию дедуплицируются только 100 последних вставок для каждой партиции (см. [replicated\_deduplication\_window](/ru/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/ru/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Для нереплицируемых таблиц см. [non\_replicated\_deduplication\_window](/ru/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<Note>
  `insert_deduplication_token` работает на уровне партиции (как и контрольная сумма `insert_deduplication`). Несколько партиций могут иметь одинаковый `insert_deduplication_token`.
</Note>

Пример:

```sql theme={null}
CREATE TABLE test_table
( A Int64 )
ENGINE = MergeTree
ORDER BY A
SETTINGS non_replicated_deduplication_window = 100;

INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (1);

-- следующая вставка не будет дедуплицирована, так как insert_deduplication_token отличается
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test1' VALUES (1);

-- следующая вставка будет дедуплицирована, так как insert_deduplication_token
-- совпадает с одним из предыдущих
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (2);

SELECT * FROM test_table

┌─A─┐
│ 1 │
└───┘
┌─A─┐
│ 1 │
└───┘
```

<div id="insert_keeper_fault_injection_probability">
  ## insert\_keeper\_fault\_injection\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

Приблизительная вероятность сбоя запроса к Keeper во время вставки. Допустимое значение находится в диапазоне \[0.0f, 1.0f]

<div id="insert_keeper_fault_injection_seed">
  ## insert\_keeper\_fault\_injection\_seed
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

0 — начальное значение генератора случайных чисел, иначе — значение настройки

<div id="insert_keeper_max_retries">
  ## insert\_keeper\_max\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="20" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "20"},{"label": "Включает повторные подключения к Keeper при INSERT, повышая надежность"}]}]} />

Этот параметр задает максимальное количество повторных попыток для запросов к ClickHouse Keeper (или ZooKeeper) во время вставки в реплицируемый MergeTree. Повторно выполняются только те запросы к Keeper, которые завершились из-за сетевой ошибки, тайм-аута сеанса Keeper или тайм-аута запроса.

Возможные значения:

* Положительное целое число.
* 0 — повторные попытки отключены

Значение по умолчанию в Cloud: `20`.

Повторные попытки запросов к Keeper выполняются после некоторой задержки. Эта задержка регулируется следующими параметрами: `insert_keeper_retry_initial_backoff_ms`, `insert_keeper_retry_max_backoff_ms`.
Первая повторная попытка выполняется после задержки `insert_keeper_retry_initial_backoff_ms`. Последующие задержки вычисляются следующим образом:

```
timeout = min(insert_keeper_retry_max_backoff_ms, latest_timeout * 2)
```

Например, если `insert_keeper_retry_initial_backoff_ms=100`, `insert_keeper_retry_max_backoff_ms=10000` и `insert_keeper_max_retries=8`, то тайм-ауты будут равны `100, 200, 400, 800, 1600, 3200, 6400, 10000`.

Помимо отказоустойчивости, повторные попытки также улучшают пользовательский опыт: например, они позволяют избежать возврата ошибки при выполнении INSERT, если Keeper перезапускается из-за обновления.

<div id="insert_keeper_retry_initial_backoff_ms">
  ## insert\_keeper\_retry\_initial\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="100" />

Начальная задержка (в миллисекундах) перед повторной попыткой неудачного запроса к Keeper при выполнении INSERT-запроса

Возможные значения:

* Положительное целое число.
* 0 — без задержки

<div id="insert_keeper_retry_max_backoff_ms">
  ## insert\_keeper\_retry\_max\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

Максимальный тайм-аут (в миллисекундах) перед повторной попыткой выполнить неудачный запрос к Keeper во время выполнения INSERT-запроса

Возможные значения:

* Положительное целое число.
* 0 — максимальный тайм-аут не ограничен

<div id="insert_null_as_default">
  ## insert\_null\_as\_default
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает вставку [значений по умолчанию](/ru/reference/statements/create/table#default_values) вместо [NULL](/ru/reference/syntax#null) в столбцы с типом данных, не являющимся [Nullable](/ru/reference/data-types/nullable).
Если тип столбца не Nullable и эта настройка отключена, вставка `NULL` вызывает исключение. Если тип столбца Nullable, значения `NULL` вставляются как есть независимо от этой настройки.

Эта настройка применима к запросам [INSERT ... SELECT](/ru/reference/statements/insert-into#inserting-the-results-of-select). Обратите внимание, что подзапросы `SELECT` могут быть объединены оператором `UNION ALL`.

Возможные значения:

* 0 — Вставка `NULL` в столбец, не являющийся Nullable, вызывает исключение.
* 1 — Вместо `NULL` вставляется значение столбца по умолчанию.

<div id="insert_quorum">
  ## insert\_quorum
</div>

<SettingsInfoBlock type="UInt64Auto" default_value="0" />

<Note>
  Этот параметр не применяется к SharedMergeTree; подробнее см. в разделе [SharedMergeTree consistency](/ru/products/cloud/features/infrastructure/shared-merge-tree#consistency).
</Note>

Включает запись с кворумом.

* Если `insert_quorum < 2`, запись с кворумом отключена.
* Если `insert_quorum >= 2`, запись с кворумом включена.
* Если `insert_quorum = 'auto'`, в качестве размера кворума используется большинство (`number_of_replicas / 2 + 1`).

Запись с кворумом

`INSERT` считается успешным, только если ClickHouse удается корректно записать данные на `insert_quorum` реплик в течение `insert_quorum_timeout`. Если по какой-либо причине число реплик с успешной записью не достигает `insert_quorum`, запись считается неуспешной, и ClickHouse удалит вставленный блок со всех реплик, на которые данные уже были записаны.

Когда `insert_quorum_parallel` отключен, все реплики в кворуме согласованы, то есть содержат данные из всех предыдущих запросов `INSERT` (последовательность `INSERT` линеаризована). При чтении данных, записанных с использованием `insert_quorum`, если `insert_quorum_parallel` отключен, можно включить последовательную согласованность для запросов `SELECT` с помощью [select\_sequential\_consistency](#select_sequential_consistency).

ClickHouse генерирует исключение:

* Если число доступных реплик на момент выполнения запроса меньше `insert_quorum`.
* Когда `insert_quorum_parallel` отключен и предпринимается попытка записать данные, хотя предыдущий блок еще не был вставлен на `insert_quorum` реплик. Такая ситуация может возникнуть, если пользователь пытается выполнить еще один запрос `INSERT` в ту же таблицу до завершения предыдущего запроса с `insert_quorum`.

См. также:

* [insert\_quorum\_timeout](#insert_quorum_timeout)
* [insert\_quorum\_parallel](#insert_quorum_parallel)
* [select\_sequential\_consistency](#select_sequential_consistency)

<div id="insert_quorum_parallel">
  ## insert\_quorum\_parallel
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "По умолчанию использовать параллельные вставки с quorum. Это значительно удобнее, чем использовать последовательные вставки с quorum"}]}]} />

<Note>
  Этот параметр не применяется к SharedMergeTree; подробнее см. в разделе [консистентность SharedMergeTree](/ru/products/cloud/features/infrastructure/shared-merge-tree#consistency).
</Note>

Включает или отключает параллельное выполнение запросов `INSERT` с quorum. Если параметр включен, дополнительные запросы `INSERT` можно отправлять, пока предыдущие еще не завершились. Если параметр отключен, дополнительные записи в ту же таблицу будут отклонены.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

См. также:

* [insert\_quorum](#insert_quorum)
* [insert\_quorum\_timeout](#insert_quorum_timeout)
* [select\_sequential\_consistency](#select_sequential_consistency)

<div id="insert_quorum_timeout">
  ## insert\_quorum\_timeout
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="600000" />

Тайм-аут записи в кворум в миллисекундах. Если тайм-аут истёк и запись ещё не была выполнена, ClickHouse сгенерирует исключение, и клиент должен повторить запрос, чтобы записать тот же блок в ту же или любую другую реплику.

См. также:

* [insert\_quorum](#insert_quorum)
* [insert\_quorum\_parallel](#insert_quorum_parallel)
* [select\_sequential\_consistency](#select_sequential_consistency)

<div id="insert_shard_id">
  ## insert\_shard\_id
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Если значение не равно `0`, задаёт сегмент таблицы [Distributed](/ru/reference/engines/table-engines/special/distributed), в который данные будут вставляться синхронно.

Если значение `insert_shard_id` некорректно, сервер сгенерирует исключение.

Чтобы узнать количество сегментов в `requested_cluster`, проверьте конфигурацию сервера или используйте этот запрос:

```sql theme={null}
SELECT uniq(shard_num) FROM system.clusters WHERE cluster = 'requested_cluster';
```

Возможные значения:

* 0 — отключено.
* Любое число от `1` до `shards_num` для соответствующей таблицы [Distributed](/ru/reference/engines/table-engines/special/distributed).

**Пример**

Запрос:

```sql theme={null}
CREATE TABLE x AS system.numbers ENGINE = MergeTree ORDER BY number;
CREATE TABLE x_dist AS x ENGINE = Distributed('test_cluster_two_shards_localhost', currentDatabase(), x);
INSERT INTO x_dist SELECT * FROM numbers(5) SETTINGS insert_shard_id = 1;
SELECT * FROM x_dist ORDER BY number ASC;
```

Результат:

```text theme={null}
┌─number─┐
│      0 │
│      0 │
│      1 │
│      1 │
│      2 │
│      2 │
│      3 │
│      3 │
│      4 │
│      4 │
└────────┘
```

<div id="interactive_delay">
  ## interactive\_delay
</div>

<SettingsInfoBlock type="UInt64" default_value="100000" />

Интервал в микросекундах для проверки того, была ли отменена обработка запроса, и отправки информации о прогрессе.

<div id="intersect_default_mode">
  ## intersect\_default\_mode
</div>

<SettingsInfoBlock type="SetOperationMode" default_value="ALL" />

Устанавливает режим INTERSECT по умолчанию. Возможные значения: пустая строка, 'ALL', 'DISTINCT'. Если указана пустая строка, запрос без режима сгенерирует исключение.

<div id="jemalloc_collect_profile_samples_in_trace_log">
  ## jemalloc\_collect\_profile\_samples\_in\_trace\_log
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "новая настройка"}]}]} />

Собирать в trace log образцы выделения и освобождения памяти jemalloc.

<div id="jemalloc_enable_profiler">
  ## jemalloc\_enable\_profiler
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "новая настройка"}]}]} />

Включает профилировщик jemalloc для запроса. Jemalloc будет собирать выборку выделений памяти и всех освобождений памяти для попавших в выборку выделений.
Профили можно сбрасывать на диск с помощью SYSTEM JEMALLOC FLUSH PROFILE, а затем использовать для анализа выделений памяти.
Образцы также можно сохранять в system.trace\_log с помощью параметра конфигурации jemalloc\_collect\_global\_profile\_samples\_in\_trace\_log или настройки запроса jemalloc\_collect\_profile\_samples\_in\_trace\_log.
См. [Профилирование выделений памяти](/ru/concepts/features/performance/allocation-profiling)

<div id="jemalloc_profile_text_collapsed_use_count">
  ## jemalloc\_profile\_text\_collapsed\_use\_count
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Новая настройка для агрегации по числу выделений вместо байтов в формате collapsed профиля кучи jemalloc"}]}]} />

При использовании выходного формата `collapsed` для профиля кучи jemalloc агрегация выполняется по числу выделений, а не по байтам. Если false (по умолчанию), каждый стек взвешивается по объёму используемых байтов; если true — по числу используемых выделений.

<div id="jemalloc_profile_text_output_format">
  ## jemalloc\_profile\_text\_output\_format
</div>

<SettingsInfoBlock type="JemallocProfileFormat" default_value="collapsed" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "collapsed"},{"label": "Новая настройка для управления форматом вывода таблицы system.jemalloc_profile_text. Возможные значения: 'raw', 'symbolized', 'collapsed'"}]}]} />

Формат вывода профиля кучи jemalloc в таблице system.jemalloc\_profile\_text. Может принимать значения: 'raw' (необработанный профиль), 'symbolized' (формат jeprof с символами) или 'collapsed' (формат флеймграфа).

<div id="jemalloc_profile_text_symbolize_with_inline">
  ## jemalloc\_profile\_text\_symbolize\_with\_inline
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Новая настройка, определяющая, нужно ли включать инлайн-фреймы при символизации профиля кучи jemalloc. Если настройка включена, инлайн-фреймы добавляются ценой более медленной символизации; если отключена, они пропускаются для более быстрого вывода"}]}]} />

Определяет, нужно ли включать инлайн-фреймы при символизации профиля кучи jemalloc. Если настройка включена, инлайн-фреймы добавляются, что может существенно замедлить процесс символизации; если отключена, они пропускаются. Влияет только на форматы вывода 'symbolized' и 'collapsed'.

<div id="join_algorithm">
  ## join\_algorithm
</div>

<SettingsInfoBlock type="JoinAlgorithm" default_value="direct,parallel_hash,hash" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "direct,parallel_hash,hash"},{"label": "значение 'default' объявлено устаревшим в пользу явно указанных алгоритмов JOIN; кроме того, теперь parallel_hash предпочтительнее hash"}]}]} />

Указывает, какой алгоритм [JOIN](/ru/reference/statements/select/join) используется.

Можно указать несколько алгоритмов; для конкретного запроса будет выбран подходящий в зависимости от kind/strictness и движка таблицы.

Возможные значения:

* grace\_hash

Используется [Grace hash join](https://en.wikipedia.org/wiki/Hash_join#Grace_hash_join). Grace hash — это вариант алгоритма, который обеспечивает производительное выполнение сложных JOIN при ограниченном потреблении памяти.

На первом этапе grace join считывает правую таблицу и разбивает её на N бакетов в зависимости от хеш-значения столбцов ключа (изначально N равно `grace_hash_join_initial_buckets`). Это делается так, чтобы каждый бакет можно было обрабатывать независимо. Строки из первого бакета добавляются в хеш-таблицу в оперативной памяти, а остальные сохраняются на диск. Если хеш-таблица превышает лимит памяти (например, заданный в [`max_bytes_in_join`](/ru/reference/settings/session-settings#max_bytes_in_join)), количество бакетов увеличивается, и для каждой строки заново определяется назначенный бакет. Все строки, которые не относятся к текущему бакету, сбрасываются на диск и перераспределяются.

Поддерживает `INNER/LEFT/RIGHT/FULL ALL/ANY JOIN`.

* hash

Используется [алгоритм hash join](https://en.wikipedia.org/wiki/Hash_join). Это наиболее универсальная реализация, которая поддерживает все комбинации kind и strictness, а также несколько ключей JOIN, объединённых с помощью `OR` в секции `JOIN ON`.

При использовании алгоритма `hash` правая часть `JOIN` загружается в оперативную память.

* parallel\_hash

Вариант `hash` join, который разбивает данные на бакеты и параллельно строит несколько хеш-таблиц вместо одной, чтобы ускорить этот процесс.

При использовании алгоритма `parallel_hash` правая часть `JOIN` загружается в оперативную память.

* partial\_merge

Вариант [алгоритма sort-merge](https://en.wikipedia.org/wiki/Sort-merge_join), в котором полностью сортируется только правая таблица.

`RIGHT JOIN` и `FULL JOIN` поддерживаются только со strictness `ALL` (`SEMI`, `ANTI`, `ANY` и `ASOF` не поддерживаются).

При использовании алгоритма `partial_merge` ClickHouse сортирует данные и выгружает их на диск. Алгоритм `partial_merge` в ClickHouse немного отличается от классической реализации. Сначала ClickHouse сортирует правую таблицу по ключам JOIN блоками и создаёт min-max индекс для отсортированных блоков. Затем он сортирует части левой таблицы по `join key` и выполняет JOIN с правой таблицей. Min-max индекс также используется для пропуска ненужных блоков правой таблицы.

* direct

Алгоритм `direct` (также известный как nested loop) выполняет lookup в правой таблице, используя строки из левой таблицы в качестве ключей.
Он поддерживается специальными хранилищами, такими как [Dictionary](/ru/reference/engines/table-engines/special/dictionary), [EmbeddedRocksDB](/ru/reference/engines/table-engines/integrations/embedded-rocksdb) и таблицы [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree).

Для таблиц MergeTree алгоритм передаёт фильтры по ключу JOIN напрямую на уровень хранения. Это может быть эффективнее, если по ключу можно выполнять lookup с использованием индекса primary key таблицы; в противном случае для каждого блока левой таблицы выполняется полное сканирование правой таблицы.

Поддерживает `INNER` и `LEFT` JOIN, а также только одно-столбцовые ключи join по равенству без дополнительных условий.

* auto

Если установлено значение `auto`, сначала используется `hash` join, а затем алгоритм на лету переключается на другой, если превышается лимит памяти.

* full\_sorting\_merge

[Алгоритм sort-merge](https://en.wikipedia.org/wiki/Sort-merge_join) с полной сортировкой соединяемых таблиц перед выполнением JOIN.

* prefer\_partial\_merge

ClickHouse всегда пытается использовать `partial_merge` join, если это возможно; в противном случае используется `hash`. *Устарело*, то же самое, что `partial_merge,hash`.

* default (устарело)

Устаревшее значение, больше не используйте его.
То же самое, что `direct,hash`, то есть сначала выполняется попытка использовать direct join, затем hash join (в таком порядке).

<div id="join_any_take_last_row">
  ## join\_any\_take\_last\_row
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Изменяет поведение операций JOIN со строгостью `ANY`.

<Note>
  Этот параметр применяется только к операциям `JOIN` с таблицами, использующими движок [Join](/ru/reference/engines/table-engines/special/join).
</Note>

Возможные значения:

* 0 — Если в правой таблице есть несколько совпадающих строк, JOIN выполняется только с первой найденной.
* 1 — Если в правой таблице есть несколько совпадающих строк, JOIN выполняется только с последней найденной.

См. также:

* [оператор JOIN](/ru/reference/statements/select/join)
* [движок таблицы Join](/ru/reference/engines/table-engines/special/join)
* [join\_default\_strictness](#join_default_strictness)

<div id="join_default_strictness">
  ## join\_default\_strictness
</div>

<SettingsInfoBlock type="JoinStrictness" default_value="ALL" />

Устанавливает строгость по умолчанию для [секций JOIN](/ru/reference/statements/select/join).

Возможные значения:

* `ALL` — Если в правой таблице есть несколько совпадающих строк, ClickHouse создаёт [декартово произведение](https://en.wikipedia.org/wiki/Cartesian_product) из совпадающих строк. Это стандартное поведение `JOIN` в SQL.
* `ANY` — Если в правой таблице есть несколько совпадающих строк, присоединяется только первая найденная. Если в правой таблице есть только одна совпадающая строка, результаты `ANY` и `ALL` совпадают.
* `ASOF` — Для соединения последовательностей при неточном совпадении.
* `Пустая строка` — Если в запросе не указаны `ALL` или `ANY`, ClickHouse генерирует исключение.

<div id="join_on_disk_max_files_to_merge">
  ## join\_on\_disk\_max\_files\_to\_merge
</div>

<SettingsInfoBlock type="UInt64" default_value="64" />

Ограничивает количество файлов, допускаемых для параллельной сортировки в операциях MergeJoin при их выполнении на диске.

Чем больше значение настройки, тем больше используется оперативной памяти и тем меньше требуется дискового ввода-вывода.

Возможные значения:

* Любое положительное целое число, начиная с 2.

<div id="join_output_by_rowlist_perkey_rows_threshold">
  ## join\_output\_by\_rowlist\_perkey\_rows\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "5"},{"label": "Нижняя граница среднего числа строк для каждого ключа в правой таблице, которая определяет, следует ли в hash JOIN выводить результат в виде списка строк."}]}]} />

Нижняя граница среднего числа строк для каждого ключа в правой таблице, которая определяет, следует ли в hash JOIN выводить результат в виде списка строк.

<div id="join_overflow_mode">
  ## join\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Определяет, какое действие выполняет ClickHouse при достижении любого из следующих ограничений JOIN:

* [max\_bytes\_in\_join](/ru/reference/settings/session-settings#max_bytes_in_join)
* [max\_rows\_in\_join](/ru/reference/settings/session-settings#max_rows_in_join)

Возможные значения:

* `THROW` — ClickHouse генерирует исключение и прерывает выполнение.
* `BREAK` — ClickHouse прерывает выполнение и не генерирует исключение.

Значение по умолчанию: `THROW`.

**См. также**

* [оператор JOIN](/ru/reference/statements/select/join)
* [движок таблицы Join](/ru/reference/engines/table-engines/special/join)

<div id="join_runtime_bloom_filter_bytes">
  ## join\_runtime\_bloom\_filter\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="524288" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "524288"},{"label": "Новая настройка"}]}]} />

Размер в байтах фильтра Блума, используемого в качестве runtime-фильтра для JOIN (см. настройку enable\_join\_runtime\_filters).

<div id="join_runtime_bloom_filter_hash_functions">
  ## join\_runtime\_bloom\_filter\_hash\_functions
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "3"},{"label": "новая настройка"}]}]} />

Количество хеш-функций в фильтре Блума, используемом в качестве runtime-фильтра для JOIN (см. настройку enable\_join\_runtime\_filters).

<div id="join_runtime_bloom_filter_max_ratio_of_set_bits">
  ## join\_runtime\_bloom\_filter\_max\_ratio\_of\_set\_bits
</div>

<SettingsInfoBlock type="Double" default_value="0.7" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0.7"},{"label": "Новая настройка"}]}]} />

Если доля установленных битов в runtime-фильтре Блума превышает этот порог, фильтр полностью отключается, чтобы уменьшить накладные расходы.

<div id="join_runtime_filter_blocks_to_skip_before_reenabling">
  ## join\_runtime\_filter\_blocks\_to\_skip\_before\_reenabling
</div>

<SettingsInfoBlock type="UInt64" default_value="30" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "30"},{"label": "новая настройка"}]}]} />

Количество блоков, пропускаемых перед попыткой динамически повторно включить runtime-фильтр, который ранее был отключён из-за низкой эффективности фильтрации.

<div id="join_runtime_filter_exact_values_limit">
  ## join\_runtime\_filter\_exact\_values\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "10000"},{"label": "Новая настройка"}]}]} />

Максимальное количество элементов runtime filter, которые хранятся в множестве в исходном виде; при превышении этого порога используется фильтр Блума.

<div id="join_runtime_filter_pass_ratio_threshold_for_disabling">
  ## join\_runtime\_filter\_pass\_ratio\_threshold\_for\_disabling
</div>

<SettingsInfoBlock type="Double" default_value="0.7" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0.7"},{"label": "новая настройка"}]}]} />

Если отношение числа прошедших строк к числу проверенных строк превышает этот порог, runtime-фильтр считается недостаточно эффективным и отключается на следующие `join_runtime_filter_blocks_to_skip_before_reenabling` блоков, чтобы уменьшить накладные расходы.

<div id="join_to_sort_maximum_table_rows">
  ## join\_to\_sort\_maximum\_table\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "10000"},{"label": "Максимальное количество строк в правой таблице, при котором определяется, следует ли переупорядочить правую таблицу по ключу в LEFT JOIN или INNER JOIN"}]}]} />

Максимальное количество строк в правой таблице, при котором определяется, следует ли переупорядочить правую таблицу по ключу в LEFT JOIN или INNER JOIN.

<div id="join_to_sort_minimum_perkey_rows">
  ## join\_to\_sort\_minimum\_perkey\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="40" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "40"},{"label": "Нижний порог среднего числа строк на ключ в правой таблице, определяющий, нужно ли переупорядочить правую таблицу по ключу в LEFT или INNER JOIN. Эта настройка гарантирует, что оптимизация не будет применяться для разреженных ключей таблицы"}]}]} />

Нижний порог среднего числа строк на ключ в правой таблице, определяющий, нужно ли переупорядочить правую таблицу по ключу в LEFT или INNER JOIN. Эта настройка гарантирует, что оптимизация не будет применяться для разреженных ключей таблицы

<div id="join_use_nulls">
  ## join\_use\_nulls
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Определяет поведение [JOIN](/ru/reference/statements/select/join). При слиянии таблиц могут появляться пустые ячейки. ClickHouse заполняет их по-разному в зависимости от этой настройки.

Возможные значения:

* 0 — Пустые ячейки заполняются значением по умолчанию для типа соответствующего поля.
* 1 — `JOIN` ведёт себя так же, как в стандартном SQL. Тип соответствующего поля преобразуется в [Nullable](/ru/reference/data-types/nullable), а пустые ячейки заполняются [NULL](/ru/reference/syntax).

<div id="joined_block_split_single_row">
  ## joined\_block\_split\_single\_row
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "новая настройка"}]}]} />

Разрешает разбивать результат hash join на фрагменты по строкам, соответствующим одной строке левой таблицы.
Это может уменьшить использование памяти в случае строки с большим количеством совпадений в правой таблице, но может увеличить загрузку CPU.
Обратите внимание, что для вступления этой настройки в силу необходимо, чтобы `max_joined_block_size_rows != 0`.
Параметр `max_joined_block_size_bytes` в сочетании с этой настройкой помогает избежать чрезмерного использования памяти в случае перекошенных данных, когда некоторые большие строки имеют множество совпадений в правой таблице.

<div id="joined_subquery_requires_alias">
  ## joined\_subquery\_requires\_alias
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Требует, чтобы JOIN-подзапросы и табличные функции имели псевдонимы для корректной квалификации имён.

<div id="kafka_disable_num_consumers_limit">
  ## kafka\_disable\_num\_consumers\_limit
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Отключает ограничение на `kafka_num_consumers`, зависящее от количества доступных ядер CPU.

<div id="kafka_max_wait_ms">
  ## kafka\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="5000" />

Время ожидания в миллисекундах при чтении сообщений из [Kafka](/ru/reference/engines/table-engines/integrations/kafka) до повторной попытки.

Возможные значения:

* Положительное целое число.
* 0 — бесконечный тайм-аут.

См. также:

* [Apache Kafka](https://kafka.apache.org/)

<div id="keeper_map_strict_mode">
  ## keeper\_map\_strict\_mode
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает дополнительные проверки при операциях с KeeperMap. Например, позволяет сгенерировать исключение при вставке ключа, который уже существует

<div id="keeper_max_retries">
  ## keeper\_max\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "10"},{"label": "Максимальное количество повторных попыток для обычных операций Keeper"}]}]} />

Максимальное количество повторных попыток для обычных операций Keeper

<div id="keeper_retry_initial_backoff_ms">
  ## keeper\_retry\_initial\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="100" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "100"},{"label": "Начальная задержка для общих операций Keeper"}]}]} />

Начальная задержка для общих операций Keeper

<div id="keeper_retry_max_backoff_ms">
  ## keeper\_retry\_max\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="5000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "5000"},{"label": "Максимальный тайм-аут задержки перед повторной попыткой для общих операций Keeper"}]}]} />

Максимальный тайм-аут задержки перед повторной попыткой для общих операций Keeper

<div id="least_greatest_legacy_null_behavior">
  ## least\_greatest\_legacy\_null\_behavior
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "новая настройка"}]}]} />

Если включено, функции 'least' и 'greatest' возвращают NULL, если один из аргументов равен NULL.

<div id="legacy_column_name_of_tuple_literal">
  ## legacy\_column\_name\_of\_tuple\_literal
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.7"},{"label": "0"},{"label": "Этот параметр добавлен только из соображений совместимости. Его имеет смысл установить в 'true' при выполнении rolling update кластера с версии ниже 21.7 на более высокую"}]}]} />

Использует в именах столбцов больших литералов Tuple имена всех их элементов вместо hash. Этот параметр существует только из соображений совместимости. Его имеет смысл установить в 'true' при выполнении rolling update кластера с версии ниже 21.7 на более высокую.

<div id="lightweight_delete_mode">
  ## lightweight\_delete\_mode
</div>

<SettingsInfoBlock type="LightweightDeleteMode" default_value="alter_update" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "alter_update"},{"label": "Новая настройка"}]}]} />

Режим внутреннего запроса обновления, выполняемого в рамках легковесного удаления.

Возможные значения:

* `alter_update` - выполнить запрос `ALTER UPDATE`, который создаёт тяжёлую мутацию.
* `lightweight_update` - выполнить легковесное обновление, если это возможно; в противном случае выполнить `ALTER UPDATE`.
* `lightweight_update_force` - выполнить легковесное обновление, если это возможно; в противном случае сгенерировать исключение.

<div id="lightweight_deletes_sync">
  ## lightweight\_deletes\_sync
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "2"},{"label": "То же, что и 'mutation_sync', но управляет только выполнением легковесных удалений"}]}]} />

То же, что и [`mutations_sync`](#mutations_sync), но управляет только выполнением легковесных удалений.

Возможные значения:

| Value | Description                                                                                                                                                                                     |
| ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `0`   | Мутации выполняются асинхронно.                                                                                                                                                                 |
| `1`   | Запрос ожидает завершения легковесных удалений на текущем сервере.                                                                                                                              |
| `2`   | Запрос ожидает завершения легковесных удалений на всех репликах (если они есть).                                                                                                                |
| `3`   | Запрос ожидает завершения легковесных удалений только на активных репликах. Поддерживается только для `SharedMergeTree`. Для `ReplicatedMergeTree` ведет себя так же, как `mutations_sync = 2`. |

**См. также**

* [Синхронность ALTER-запросов](/ru/reference/statements/alter#synchronicity-of-alter-queries)
* [Мутации](/ru/reference/statements/alter#mutations)

Значение по умолчанию в Cloud: `1`.

<div id="limit">
  ## limit
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Устанавливает максимальное количество строк в результате запроса. Это значение корректирует ограничение, заданное оператором [LIMIT](/ru/reference/statements/select/limit), так что ограничение, указанное в запросе, не может превышать ограничение, заданное этой настройкой.

Возможные значения:

* 0 — количество строк не ограничено.
* Положительное целое число.

<div id="load_balancing">
  ## load\_balancing
</div>

<SettingsInfoBlock type="LoadBalancing" default_value="random" />

Задаёт алгоритм выбора реплик, используемый при распределённой обработке запросов.

ClickHouse поддерживает следующие алгоритмы выбора реплик:

* [Random](#load_balancing-random) (по умолчанию)
* [Nearest hostname](#load_balancing-nearest_hostname)
* [Hostname levenshtein distance](#load_balancing-hostname_levenshtein_distance)
* [In order](#load_balancing-in_order)
* [First or random](#load_balancing-first_or_random)
* [Round robin](#load_balancing-round_robin)

См. также:

* [distributed\_replica\_max\_ignored\_errors](#distributed_replica_max_ignored_errors)

<div id="load_balancing-random">
  ### Random (по умолчанию)
</div>

```sql theme={null}
load_balancing = random
```

Количество ошибок подсчитывается для каждой реплики. Запрос отправляется на реплику с наименьшим числом ошибок, а если таких реплик несколько — на любую из них.
Недостатки: близость сервера не учитывается; если у реплик разные данные, вы также получите разные данные.

<div id="load_balancing-nearest_hostname">
  ### Ближайшее имя хоста
</div>

```sql theme={null}
load_balancing = nearest_hostname
```

Количество ошибок подсчитывается для каждой реплики. Каждые 5 минут количество ошибок делится на 2 с округлением вниз. Таким образом, количество ошибок для недавнего периода рассчитывается с экспоненциальным сглаживанием. Если есть одна реплика с минимальным количеством ошибок (то есть на других репликах ошибки возникали недавно), запрос отправляется на неё. Если есть несколько реплик с одинаковым минимальным количеством ошибок, запрос отправляется на реплику, имя хоста которой наиболее похоже на имя хоста сервера в файле config (по числу различающихся символов в одинаковых позициях, до минимальной длины обоих имён хостов).

Например, example01-01-1 и example01-01-2 отличаются в одной позиции, а example01-01-1 и example01-02-2 — в двух.
Этот метод может показаться примитивным, но он не требует внешних данных о топологии сети и не сравнивает IP-адреса, что было бы сложно в случае наших IPv6-адресов.

Таким образом, если есть равноценные реплики, предпочтение отдаётся ближайшей по имени.
Можно также предположить, что при отправке запроса на один и тот же сервер при отсутствии сбоев распределённый запрос тоже будет направляться на те же серверы. Поэтому даже если на репликах размещены разные данные, запрос в основном будет возвращать одинаковые результаты.

<div id="load_balancing-hostname_levenshtein_distance">
  ### Расстояние Левенштейна по имени хоста
</div>

```sql theme={null}
load_balancing = hostname_levenshtein_distance
```

Как и `nearest_hostname`, но сравнивает имена хостов по [расстоянию Левенштейна](https://en.wikipedia.org/wiki/Levenshtein_distance). Например:

```text theme={null}
example-clickhouse-0-0 ample-clickhouse-0-0
1

example-clickhouse-0-0 example-clickhouse-1-10
2

example-clickhouse-0-0 example-clickhouse-12-0
3
```

<div id="load_balancing-in_order">
  ### По порядку
</div>

```sql theme={null}
load_balancing = in_order
```

К репликам с одинаковым количеством ошибок обращаются в том же порядке, в котором они указаны в конфигурации.
Этот метод подходит, если вы точно знаете, какая реплика предпочтительнее.

<div id="load_balancing-first_or_random">
  ### Первый или случайный
</div>

```sql theme={null}
load_balancing = first_or_random
```

Этот алгоритм выбирает первую реплику из набора или случайную реплику, если первая недоступна. Он эффективен в топологиях с кросс-репликацией, но бесполезен в других конфигурациях.

Алгоритм `first_or_random` решает проблему алгоритма `in_order`. При использовании `in_order`, если одна реплика выходит из строя, следующая получает двойную нагрузку, тогда как остальные реплики обрабатывают обычный объём трафика. При использовании алгоритма `first_or_random` нагрузка равномерно распределяется между репликами, которые всё ещё доступны.

Можно явно указать, какая реплика считается первой, с помощью настройки `load_balancing_first_offset`. Это позволяет точнее перебалансировать нагрузку запросов между репликами.

<div id="load_balancing-round_robin">
  ### Round Robin
</div>

```sql theme={null}
load_balancing = round_robin
```

Этот алгоритм использует политику round-robin для реплик с одинаковым количеством ошибок (учитываются только запросы с политикой `round_robin`).

<div id="load_balancing_first_offset">
  ## load\_balancing\_first\_offset
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Указывает, какой реплике следует отдавать предпочтение при отправке запроса, если используется стратегия балансировки нагрузки FIRST\_OR\_RANDOM.

<div id="load_marks_asynchronously">
  ## load\_marks\_asynchronously
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Асинхронно загружает метки MergeTree

Значение по умолчанию в Cloud: `1`.

<div id="local_filesystem_read_method">
  ## local\_filesystem\_read\_method
</div>

<SettingsInfoBlock type="String" default_value="pread_threadpool" />

Метод чтения данных из локальной файловой системы; одно из следующих значений: read, pread, mmap, io\_uring, pread\_threadpool.

Метод 'io\_uring' является экспериментальным и не работает для Log, TinyLog, StripeLog, File, Set и Join, а также других таблиц с файлами, допускающими дозапись, при одновременном чтении и записи.
Если вы читали в Интернете разные статьи об 'io\_uring', не стоит принимать их на веру. Это не лучший метод чтения файлов, кроме случаев с большим количеством мелких IO-запросов, что для ClickHouse нехарактерно. Нет причин включать 'io\_uring'.

<div id="local_filesystem_read_prefetch">
  ## local\_filesystem\_read\_prefetch
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Использовать предвыборку при чтении данных из локальной файловой системы.

<div id="lock_acquire_timeout">
  ## lock\_acquire\_timeout
</div>

<SettingsInfoBlock type="Seconds" default_value="120" />

Определяет, сколько секунд запрос на блокировку будет ожидать перед завершением с ошибкой.

Тайм-аут блокировки используется для защиты от взаимных блокировок при выполнении операций чтения/записи с таблицами. Когда тайм-аут истекает и запрос на блокировку завершается ошибкой, сервер ClickHouse генерирует исключение "Locking attempt timed out! Possible deadlock avoided. Client should retry." с кодом ошибки `DEADLOCK_AVOIDED`.

Возможные значения:

* Положительное целое число (в секундах).
* 0 — без тайм-аута блокировки.

<div id="log_comment">
  ## log\_comment
</div>

Задаёт значение для поля `log_comment` таблицы [system.query\_log](/ru/reference/system-tables/query_log) и текст комментария для серверного журнала.

Используется для повышения читаемости серверных журналов. Кроме того, помогает выбирать из `system.query_log` запросы, относящиеся к тесту, после запуска [clickhouse-test](/ru/resources/develop-contribute/contribute/tests).

Возможные значения:

* Любая строка длиной не более [max\_query\_size](#max_query_size). Если значение max\_query\_size превышено, сервер генерирует исключение.

**Пример**

Запрос:

```sql theme={null}
SET log_comment = 'log_comment test', log_queries = 1;
SELECT 1;
SYSTEM FLUSH LOGS;
SELECT type, query FROM system.query_log WHERE log_comment = 'log_comment test' AND event_date >= yesterday() ORDER BY event_time DESC LIMIT 2;
```

Результат:

```text theme={null}
┌─type────────┬─query─────┐
│ QueryStart  │ SELECT 1; │
│ QueryFinish │ SELECT 1; │
└─────────────┴───────────┘
```

<div id="log_formatted_queries">
  ## log\_formatted\_queries
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Позволяет записывать отформатированные запросы в системную таблицу [system.query\_log](/ru/reference/system-tables/query_log) (заполняет столбец `formatted_query` в [system.query\_log](/ru/reference/system-tables/query_log)).

Возможные значения:

* 0 — Отформатированные запросы не записываются в системную таблицу.
* 1 — Отформатированные запросы записываются в системную таблицу.

<div id="log_processors_profiles">
  ## log\_processors\_profiles
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Включено по умолчанию"}]}]} />

Записывает в таблицу `system.processors_profile_log` время, которое процессор потратил на выполнение и ожидание данных.

См. также:

* [`system.processors_profile_log`](/ru/reference/system-tables/processors_profile_log)
* [`EXPLAIN PIPELINE`](/ru/reference/statements/explain#explain-pipeline)

<div id="log_profile_events">
  ## log\_profile\_events
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Записывает статистику производительности выполнения запросов в query\_log, query\_thread\_log и query\_views\_log.

<div id="log_queries">
  ## log\_queries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Настройка логирования запросов.

Запросы, отправленные в ClickHouse при включении этой настройки, записываются в соответствии с правилами параметра конфигурации сервера [query\_log](/ru/reference/settings/server-settings/settings#query_log).

Пример:

```text theme={null}
log_queries=1
```

<div id="log_queries_cut_to_length">
  ## log\_queries\_cut\_to\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="100000" />

Если длина запроса превышает указанный порог (в байтах), запрос обрезается при записи в журнал запросов. Также ограничивается длина запроса, выводимого в обычный текстовый журнал.

<div id="log_queries_min_query_duration_ms">
  ## log\_queries\_min\_query\_duration\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="0" />

Если включено (ненулевое значение), запросы, выполняющиеся быстрее значения этой настройки, не будут записываться в журнал (это можно рассматривать как `long_query_time` для [MySQL Slow Query Log](https://dev.mysql.com/doc/refman/5.7/slow-query-log.html)); по сути это означает, что вы не найдете их в следующих таблицах:

* `system.query_log`
* `system.query_thread_log`

В журнал будут попадать только запросы следующих типов:

* `QUERY_FINISH`

* `EXCEPTION_WHILE_PROCESSING`

* Тип: миллисекунды

* Значение по умолчанию: 0 (любой запрос)

<div id="log_queries_min_type">
  ## log\_queries\_min\_type
</div>

<SettingsInfoBlock type="LogQueriesType" default_value="QUERY_START" />

Минимальный тип записи в `query_log`.

Возможные значения:

* `QUERY_START` (`=1`)
* `QUERY_FINISH` (`=2`)
* `EXCEPTION_BEFORE_START` (`=3`)
* `EXCEPTION_WHILE_PROCESSING` (`=4`)

Можно использовать, чтобы ограничить, какие сущности будут попадать в `query_log`; например, если вас интересуют только ошибки, можно использовать `EXCEPTION_WHILE_PROCESSING`:

```text theme={null}
log_queries_min_type='EXCEPTION_WHILE_PROCESSING'
```

<div id="log_queries_probability">
  ## log\_queries\_probability
</div>

<SettingsInfoBlock type="Float" default_value="1" />

Позволяет пользователю записывать в системные таблицы [query\_log](/ru/reference/system-tables/query_log), [query\_thread\_log](/ru/reference/system-tables/query_thread_log) и [query\_views\_log](/ru/reference/system-tables/query_views_log) только случайную выборку запросов, отобранных с указанной вероятностью. Это помогает снизить нагрузку при большом количестве запросов в секунду.

Возможные значения:

* 0 — Запросы не записываются в системные таблицы.
* Положительное число с плавающей точкой в диапазоне \[0..1]. Например, если значение настройки равно `0.5`, в системные таблицы записывается примерно половина запросов.
* 1 — Все запросы записываются в системные таблицы.

<div id="log_query_settings">
  ## log\_query\_settings
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Записывать настройки запроса в query\_log и журнал спанов OpenTelemetry.

<div id="log_query_threads">
  ## log\_query\_threads
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает логирование потоков запросов.

Потоки запросов записываются в таблицу [system.query\_thread\_log](/ru/reference/system-tables/query_thread_log). Этот параметр действует только в том случае, если [log\_queries](#log_queries) имеет значение true. Потоки запросов, выполняемых ClickHouse при включенной этой настройке, записываются в соответствии с правилами параметра конфигурации сервера [query\_thread\_log](/ru/reference/settings/server-settings/settings#query_thread_log).

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

**Пример**

```text theme={null}
log_query_threads=1
```

<div id="log_query_views">
  ## log\_query\_views
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает журналирование представлений запросов.

Если у запроса, выполняемого ClickHouse при включенной этой настройке, есть связанные представления (materialized views или live views), сведения о них записываются в лог, заданный параметром конфигурации сервера [query\_views\_log](/ru/reference/settings/server-settings/settings#query_views_log).

Пример:

```text theme={null}
log_query_views=1
```

<div id="low_cardinality_allow_in_native_format">
  ## low\_cardinality\_allow\_in\_native\_format
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Разрешает или ограничивает использование типа данных [LowCardinality](/ru/reference/data-types/lowcardinality) в формате [Native](/ru/reference/formats/Native).

Если использование `LowCardinality` ограничено, сервер ClickHouse преобразует столбцы `LowCardinality` в обычные для запросов `SELECT`, а обычные столбцы — в столбцы `LowCardinality` для запросов `INSERT`.

Эта настройка в основном нужна для сторонних клиентов, которые не поддерживают тип данных `LowCardinality`.

Возможные значения:

* 1 — использование `LowCardinality` не ограничено.
* 0 — использование `LowCardinality` ограничено.

<div id="low_cardinality_max_dictionary_size">
  ## low\_cardinality\_max\_dictionary\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="8192" />

Задаёт максимальный размер в строках для общего глобального словаря типа данных [LowCardinality](/ru/reference/data-types/lowcardinality), который может быть записан в файловую систему хранилища. Эта настройка предотвращает проблемы с оперативной памятью в случае неограниченного роста словаря. Все данные, которые не удаётся закодировать из-за ограничения на максимальный размер словаря, ClickHouse записывает обычным способом.

Возможные значения:

* Любое положительное целое число.

<div id="low_cardinality_use_single_dictionary_for_part">
  ## low\_cardinality\_use\_single\_dictionary\_for\_part
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает использование одного словаря для части данных.

По умолчанию сервер ClickHouse отслеживает размер словарей, и, если словарь переполняется, сервер начинает записывать следующий. Чтобы запретить создание нескольких словарей, установите `low_cardinality_use_single_dictionary_for_part = 1`.

Возможные значения:

* 1 — Создание нескольких словарей для части данных запрещено.
* 0 — Создание нескольких словарей для части данных не запрещено.

<div id="low_priority_query_wait_time_ms">
  ## low\_priority\_query\_wait\_time\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1000"},{"label": "Новая настройка"}]}]} />

Когда используется механизм приоритизации запросов (см. настройку `priority`), низкоприоритетные запросы ждут завершения запросов с более высоким приоритетом. Эта настройка определяет время ожидания.

<div id="make_distributed_plan">
  ## make\_distributed\_plan
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Новая экспериментальная настройка."}]}]} />

Строить распределённый план запроса.

<div id="materialize_skip_indexes_on_insert">
  ## materialize\_skip\_indexes\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Добавлена новая настройка, позволяющая отключить материализацию индексов пропуска данных при вставке"}]}]} />

Определяет, будут ли при INSERT строиться и сохраняться индексы пропуска данных. Если настройка отключена, индексы пропуска данных будут строиться и сохраняться только [во время слияний](/ru/reference/settings/merge-tree-settings#materialize_skip_indexes_on_merge) или явной командой [MATERIALIZE INDEX](/ru/reference/statements/alter/skipping-index#materialize-index).

См. также [exclude\_materialize\_skip\_indexes\_on\_insert](#exclude_materialize_skip_indexes_on_insert).

<div id="materialize_statistics_on_insert">
  ## materialize\_statistics\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "По умолчанию построение статистики при INSERT отключено; вместо этого используются слияния"}]}, {"id": "row-2","items": [{"label": "24.6"},{"label": "1"},{"label": "Добавлена новая настройка, позволяющая отключить материализацию статистики при вставке"}]}]} />

Определяет, создаётся ли статистика при INSERT и вставляется ли она. Если отключено, статистика будет создаваться и сохраняться во время слияний или с помощью явной команды MATERIALIZE STATISTICS

<div id="materialize_ttl_after_modify">
  ## materialize\_ttl\_after\_modify
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Применять TTL к старым данным после выполнения запроса ALTER MODIFY TTL

<div id="materialized_views_ignore_errors">
  ## materialized\_views\_ignore\_errors
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Позволяет игнорировать ошибки для MATERIALIZED VIEW и передавать исходный блок в таблицу независимо от materialized view

<div id="materialized_views_squash_parallel_inserts">
  ## materialized\_views\_squash\_parallel\_inserts
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "Добавлена настройка, позволяющая при необходимости сохранить прежнее поведение."}]}]} />

Объединяет параллельные вставки из одного запроса INSERT в целевую таблицу materialized view, чтобы уменьшить количество создаваемых частей.
Если установлено значение false и включен `parallel_view_processing`, запрос INSERT будет создавать в целевой таблице по одной части для каждого `max_insert_thread`.

<div id="max_analyze_depth">
  ## max\_analyze\_depth
</div>

<SettingsInfoBlock type="UInt64" default_value="5000" />

Максимальное число анализов, выполняемых интерпретатором.

<div id="max_ast_depth">
  ## max\_ast\_depth
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

Максимальная глубина вложенности синтаксического дерева запроса. При превышении этого значения генерируется исключение.

<Note>
  В настоящий момент это не проверяется при синтаксическом разборе, а только после разбора запроса.
  Это означает, что при синтаксическом разборе может быть создано слишком глубокое синтаксическое дерево,
  но запрос завершится ошибкой.
</Note>

<div id="max_ast_elements">
  ## max\_ast\_elements
</div>

<SettingsInfoBlock type="UInt64" default_value="50000" />

Максимальное количество элементов в синтаксическом дереве запроса. При превышении этого значения будет генерироваться исключение.

<Note>
  В настоящее время это не проверяется во время разбора, а только после разбора запроса.
  Это означает, что во время разбора может быть создано слишком глубокое синтаксическое дерево,
  но запрос завершится с ошибкой.
</Note>

<div id="max_autoincrement_series">
  ## max\_autoincrement\_series
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "новая настройка"}]}]} />

Ограничение на количество серий, создаваемых функцией `generateSerialID`.

Поскольку каждая серия представляет собой узел в Keeper, рекомендуется не создавать более нескольких миллионов таких серий.

<div id="max_backup_bandwidth">
  ## max\_backup\_bandwidth
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальная скорость чтения для конкретной резервной копии на сервере, в байтах в секунду. Ноль означает отсутствие ограничений.

<div id="max_block_size">
  ## max\_block\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="65409" />

В ClickHouse данные обрабатываются блоками, которые представляют собой наборы частей столбцов. Внутренние циклы обработки отдельного блока эффективны, но обработка каждого блока связана с заметными накладными расходами.

Настройка `max_block_size` задаёт рекомендуемое максимальное число строк в одном блоке при загрузке данных из таблиц. Блоки размером `max_block_size` не всегда загружаются из таблицы: если ClickHouse определяет, что нужно извлечь меньше данных, обрабатывается блок меньшего размера.

Размер блока не должен быть слишком маленьким, чтобы избежать заметных накладных расходов при обработке каждого блока. В то же время он не должен быть слишком большим, чтобы запросы с оператором LIMIT выполнялись быстро после обработки первого блока. При настройке `max_block_size` следует стремиться к тому, чтобы не расходовать слишком много памяти при извлечении большого числа столбцов в нескольких потоках и сохранять хотя бы некоторую локальность кэша.

<div id="max_bytes_before_external_group_by">
  ## max\_bytes\_before\_external\_group\_by
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Значение по умолчанию в Cloud: половина объема памяти на одну реплику.

Включает или отключает выполнение `GROUP BY` с использованием внешней памяти.
(См. [GROUP BY с использованием внешней памяти](/ru/reference/statements/select/group-by#group-by-in-external-memory))

Возможные значения:

* Максимальный объем оперативной памяти (в байтах), который может использовать одна операция [GROUP BY](/ru/reference/statements/select/group-by).
* `0` — `GROUP BY` с использованием внешней памяти отключен.

<Note>
  Если при выполнении операций GROUP BY использование памяти превышает этот порог,
  включается режим «внешняя агрегация» (сброс данных на диск).

  Рекомендуемое значение — половина доступной системной памяти.
</Note>

<div id="max_bytes_before_external_join">
  ## max\_bytes\_before\_external\_join
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Новая настройка для управления автоматической выгрузкой hash JOIN’ов на диск. Ненулевое значение включает выгрузку и задаёт порог в байтах."}]}]} />

Если задано ненулевое значение и `join_algorithm` имеет значение `hash`, `parallel_hash`, `default` или `auto`, hash JOIN будет автоматически преобразован в grace hash join, чтобы включить выгрузку на диск, когда объём данных с правой стороны превысит указанное количество байт. Если задано значение 0 (по умолчанию), этот абсолютный порог в байтах отключён, но автоматическая выгрузка всё равно может происходить через `max_bytes_ratio_before_external_join` (по умолчанию `0.5`); задайте для обоих значение `0`, чтобы полностью отключить автоматическую выгрузку. Это предотвращает оптимизацию чтения in order через JOIN.

<div id="max_bytes_before_external_sort">
  ## max\_bytes\_before\_external\_sort
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Значение по умолчанию в Cloud: половина объема памяти на реплику.

Включает или отключает выполнение `ORDER BY` с использованием внешней памяти. См. [Подробности реализации ORDER BY](/ru/reference/statements/select/order-by#implementation-details)
Если во время операции ORDER BY использование памяти превышает этот порог в байтах, включается режим «внешней сортировки» (сброс данных на диск).

Возможные значения:

* Максимальный объем оперативной памяти (в байтах), который может использовать одна операция [ORDER BY](/ru/reference/statements/select/order-by).
  Рекомендуемое значение — половина доступной системной памяти
* `0` — `ORDER BY` с использованием внешней памяти отключен.

<div id="max_bytes_before_remerge_sort">
  ## max\_bytes\_before\_remerge\_sort
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000" />

В случае ORDER BY с LIMIT, если использование памяти превышает указанный порог, перед финальным слиянием выполняются дополнительные этапы слияния блоков, чтобы сохранить только первые LIMIT строк.

<div id="max_bytes_for_lazy_final">
  ## max\_bytes\_for\_lazy\_final
</div>

<SettingsInfoBlock type="UInt64" default_value="256000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "256000000"},{"label": "Новая настройка, задающая максимальное количество байтов в наборе для оптимизации lazy FINAL"}]}]} />

Максимальное количество байтов в наборе для оптимизации lazy FINAL. При превышении этого значения используется обычный FINAL.

<div id="max_bytes_in_distinct">
  ## max\_bytes\_in\_distinct
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальный размер состояния в памяти (в несжатых байтах),
используемого хеш-таблицей при применении DISTINCT.

<div id="max_bytes_in_join">
  ## max\_bytes\_in\_join
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальный размер хеш-таблицы, используемой при JOIN таблиц, в байтах.

Эта настройка применяется к операциям [SELECT ... JOIN](/ru/reference/statements/select/join)
и к [движку таблицы Join](/ru/reference/engines/table-engines/special/join).

Если запрос содержит JOIN, ClickHouse проверяет эту настройку для каждого промежуточного результата.

Когда лимит достигнут, ClickHouse может выполнить разные действия. Используйте
настройку [join\_overflow\_mode](/ru/reference/settings/session-settings#join_overflow_mode), чтобы выбрать нужное действие.

Возможные значения:

* Положительное целое число.
* 0 — контроль памяти отключён.

<div id="max_bytes_in_set">
  ## max\_bytes\_in\_set
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество байтов (несжатых данных), используемых набором в выражении IN,
созданном из подзапроса.

<div id="max_bytes_ratio_before_external_group_by">
  ## max\_bytes\_ratio\_before\_external\_group\_by
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "По умолчанию включён автоматический сброс на диск."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Доля доступной памяти, которую разрешено использовать для `GROUP BY`. После достижения
этого значения для агрегации будет использоваться внешняя память.

Например, если задано значение `0.6`, `GROUP BY` позволит использовать 60% доступной памяти
(для server/user/merges) в начале выполнения, после чего
начнёт использовать внешнюю агрегацию.

<div id="max_bytes_ratio_before_external_join">
  ## max\_bytes\_ratio\_before\_external\_join
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0.5"},{"label": "Новая настройка: доля доступной памяти, используемая в качестве порога spilling для hash join. По умолчанию включена со значением `0.5`, по аналогии с `max_bytes_ratio_before_external_group_by` и `max_bytes_ratio_before_external_sort`. Используется вместе с абсолютной настройкой `max_bytes_before_external_join` (применяется меньшее из двух значений)."}]}]} />

Доля доступной памяти, которую разрешено использовать для `JOIN`. При достижении этого значения hash join будет преобразован в grace hash join, чтобы выгружать данные с правой стороны на диск.

Например, если задано `0.6`, `JOIN` позволит использовать `60%` доступной памяти (для server/user/merges) для хеш-таблицы правой стороны в начале выполнения; после этого начнется выгрузка на диск.

Если заданы и `max_bytes_before_external_join`, и `max_bytes_ratio_before_external_join`, используется меньший из получившихся порогов. Если доля равна `0`, применяется только абсолютная настройка.

Действует только в случае, если `join_algorithm` имеет значение `hash`, `parallel_hash`, `default` или `auto` и настроен путь для временных данных.

<div id="max_bytes_ratio_before_external_sort">
  ## max\_bytes\_ratio\_before\_external\_sort
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "Включён автоматический сброс на диск по умолчанию."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Доля доступной памяти, которую можно использовать для `ORDER BY`. После достижения этого порога применяется внешняя сортировка.

Например, если установлено значение `0.6`, `ORDER BY` позволит использовать `60%` доступной памяти (для server/user/merges) в начале выполнения, после чего начнёт использовать внешнюю сортировку.

Обратите внимание: значение `max_bytes_before_external_sort` по-прежнему учитывается; сброс на диск выполняется только в том случае, если блок сортировки больше `max_bytes_before_external_sort`.

<div id="max_bytes_to_read">
  ## max\_bytes\_to\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество байтов (несжатых данных), которое можно прочитать из таблицы при выполнении запроса.
Ограничение проверяется для каждого обрабатываемого фрагмента данных, применяется только к
самому глубокому табличному выражению и при чтении с удалённого сервера проверяется только на
удалённом сервере.

<div id="max_bytes_to_read_leaf">
  ## max\_bytes\_to\_read\_leaf
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество байтов (несжатых данных), которое можно прочитать из локальной
таблицы на листовом узле при выполнении распределённого запроса. Хотя распределённые запросы
могут отправлять по несколько подзапросов на каждый сегмент (листовой узел), это ограничение
проверяется только на этапе чтения на листовых узлах и игнорируется на этапе
слияния результатов на корневом узле.

Например, кластер состоит из 2 сегментов, и каждый сегмент содержит таблицу со
100 байтами данных. Распределённый запрос, который должен прочитать все данные
из обеих таблиц с настройкой `max_bytes_to_read=150`, завершится ошибкой, поскольку
общий объём составит 200 байт. Запрос с `max_bytes_to_read_leaf=150` выполнится успешно,
поскольку листовые узлы прочитают не более 100 байт.

Ограничение проверяется для каждого обрабатываемого фрагмента данных.

<Note>
  Этот параметр работает нестабильно при `prefer_localhost_replica=1`.
</Note>

<div id="max_bytes_to_sort">
  ## max\_bytes\_to\_sort
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество байт до начала сортировки. Если для операции ORDER BY
требуется обработать больше указанного количества
несжатых байт, поведение будет
определяться параметром `sort_overflow_mode`, который по умолчанию имеет значение `throw`.

<div id="max_bytes_to_transfer">
  ## max\_bytes\_to\_transfer
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество байтов (несжатых данных), которое можно передать на удалённый
сервер или сохранить во временной таблице при выполнении секции GLOBAL IN/JOIN.

<div id="max_columns_to_read">
  ## max\_columns\_to\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество столбцов, которое можно прочитать из таблицы в рамках одного запроса.
Если для выполнения запроса требуется прочитать больше столбцов, чем указано, генерируется исключение.

<Tip>
  Эта настройка помогает предотвратить чрезмерно сложные запросы.
</Tip>

Значение `0` означает отсутствие ограничений.

<div id="max_compress_block_size">
  ## max\_compress\_block\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

Максимальный размер блоков несжатых данных перед их сжатием для записи в таблицу. По умолчанию — 1 048 576 (1 MiB). Указание меньшего размера блока обычно приводит к небольшому снижению коэффициента сжатия; при этом скорость сжатия и распаковки немного возрастает благодаря локальности кэша, а потребление памяти уменьшается.

<Note>
  Это настройка экспертного уровня, и вам не следует её изменять, если вы только начинаете работать с ClickHouse.
</Note>

Не путайте блоки для сжатия (фрагмент памяти, состоящий из байтов) с блоками для обработки запросов (набор строк из таблицы).

<div id="max_concurrent_queries_for_all_users">
  ## max\_concurrent\_queries\_for\_all\_users
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Генерирует исключение, если значение этой настройки меньше или равно текущему числу одновременно обрабатываемых запросов.

Пример: `max_concurrent_queries_for_all_users` можно установить в значение 99 для всех пользователей, а администратор базы данных может установить для себя значение 100, чтобы выполнять запросы для расследования даже при перегрузке сервера.

Изменение этой настройки для одного запроса или пользователя не влияет на другие запросы.

Возможные значения:

* Положительное целое число.
* 0 — Без ограничений.

**Пример**

```xml theme={null}
<max_concurrent_queries_for_all_users>99</max_concurrent_queries_for_all_users>
```

**См. также**

* [max\_concurrent\_queries](/ru/reference/settings/server-settings/settings#max_concurrent_queries)

Значение по умолчанию в Cloud: `1000`.

<div id="max_concurrent_queries_for_user">
  ## max\_concurrent\_queries\_for\_user
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество одновременно выполняемых запросов для одного пользователя.

Возможные значения:

* Положительное целое число.
* 0 — без ограничений.

**Пример**

```xml theme={null}
<max_concurrent_queries_for_user>5</max_concurrent_queries_for_user>
```

<div id="max_consume_snapshots">
  ## max\_consume\_snapshots
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Максимальное число снимков Paimon, обрабатываемых за одно инкрементальное чтение. 0 означает отсутствие ограничений.

<div id="max_distributed_connections">
  ## max\_distributed\_connections
</div>

<SettingsInfoBlock type="UInt64" default_value="1024" />

Максимальное количество одновременных соединений с удалёнными серверами для распределённой обработки одного запроса к одной таблице Distributed. Мы рекомендуем задавать значение не меньше количества серверов в кластере.

Следующие параметры используются только при создании таблиц Distributed (и при запуске сервера), поэтому нет причин изменять их во время работы.

<div id="max_distributed_depth">
  ## max\_distributed\_depth
</div>

<SettingsInfoBlock type="UInt64" default_value="5" />

Ограничивает максимальную глубину рекурсивных запросов к таблицам [Distributed](/ru/reference/engines/table-engines/special/distributed).

Если это значение превышено, сервер генерирует исключение.

Возможные значения:

* Положительное целое число.
* 0 — неограниченная глубина.

<div id="max_download_buffer_size">
  ## max\_download\_buffer\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="10485760" />

Максимальный размер буфера для параллельной загрузки (например, для движка URL) на каждый поток.

<div id="max_download_threads">
  ## max\_download\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="4" />

Максимальное количество потоков для загрузки данных (например, для URL engine).

<div id="max_estimated_execution_time">
  ## max\_estimated\_execution\_time
</div>

<SettingsInfoBlock type="Секунды" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "Разделены max_execution_time и max_estimated_execution_time"}]}]} />

Максимальная оценка времени выполнения запроса в секундах. Проверяется для каждого блока данных
после истечения [`timeout_before_checking_execution_speed`](/ru/reference/settings/session-settings#timeout_before_checking_execution_speed).

<div id="max_execution_speed">
  ## max\_execution\_speed
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество строк, обрабатываемых в секунду. Проверяется на каждом блоке данных, когда
[`timeout_before_checking_execution_speed`](/ru/reference/settings/session-settings#timeout_before_checking_execution_speed)
истекает. Если скорость выполнения слишком высокая, она будет снижена.

<div id="max_execution_speed_bytes">
  ## max\_execution\_speed\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество байт, обрабатываемых в секунду при выполнении запроса. Проверяется на каждом блоке данных по истечении
[`timeout_before_checking_execution_speed`](/ru/reference/settings/session-settings#timeout_before_checking_execution_speed).
Если скорость выполнения слишком высока, она будет снижена.

<div id="max_execution_time">
  ## max\_execution\_time
</div>

<SettingsInfoBlock type="Seconds" default_value="0" />

Максимальное время выполнения запроса в секундах.

Параметр `max_execution_time` может быть не сразу понятен.
Он работает на основе интерполяции относительно текущей скорости выполнения запроса
(это поведение контролируется параметром [`timeout_before_checking_execution_speed`](/ru/reference/settings/session-settings#timeout_before_checking_execution_speed)).

ClickHouse прервёт запрос, если прогнозируемое время выполнения превысит
указанное значение `max_execution_time`. По умолчанию `timeout_before_checking_execution_speed`
установлен в 10 секунд. Это означает, что через 10 секунд после начала выполнения запроса ClickHouse
начнёт оценивать общее время выполнения. Например, если `max_execution_time`
установлен в 3600 секунд (1 час), ClickHouse завершит запрос, если расчётное
время превысит этот лимит в 3600 секунд. Если установить `timeout_before_checking_execution_speed`
в 0, ClickHouse будет использовать для `max_execution_time` фактическое время по часам.

Если время выполнения запроса превышает указанное количество секунд, поведение будет
определяться параметром `timeout_overflow_mode`, который по умолчанию установлен в `throw`.

<Note>
  Тайм-аут проверяется, и запрос может быть остановлен только в определённых местах во время обработки данных.
  Сейчас его нельзя остановить во время слияния состояний агрегации или во время анализа запроса,
  поэтому фактическое время выполнения будет больше, чем значение этой настройки.
</Note>

<div id="max_execution_time_leaf">
  ## max\_execution\_time\_leaf
</div>

<SettingsInfoBlock type="Seconds" default_value="0" />

По смыслу похоже на [`max_execution_time`](#max_execution_time), но
применяется только на листовых узлах для распределённых или удалённых запросов.

Например, если мы хотим ограничить время выполнения на листовом узле до `10s`, но
не устанавливать ограничение на инициирующем узле, то вместо использования `max_execution_time` в
настройках вложенного подзапроса:

```sql theme={null}
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t SETTINGS max_execution_time = 10));
```

Мы можем использовать `max_execution_time_leaf` в качестве настройки запроса:

```sql theme={null}
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;
```

<div id="max_expanded_ast_elements">
  ## max\_expanded\_ast\_elements
</div>

<SettingsInfoBlock type="UInt64" default_value="500000" />

Максимальный размер синтаксического дерева запроса в количестве узлов после раскрытия псевдонимов и звёздочки.

<div id="max_fetch_partition_retries_count">
  ## max\_fetch\_partition\_retries\_count
</div>

<SettingsInfoBlock type="UInt64" default_value="5" />

Количество повторных попыток при получении партиции с другого узла.

<div id="max_final_threads">
  ## max\_final\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="'auto(N)'" />

Устанавливает максимальное количество параллельных потоков на этапе чтения данных для запроса `SELECT` с модификатором [FINAL](/ru/reference/statements/select/from#final-modifier).

Возможные значения:

* Положительное целое число.
* 0 или 1 — отключено. Запросы `SELECT` выполняются в одном потоке.

<div id="max_http_get_redirects">
  ## max\_http\_get\_redirects
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимально допустимое количество переходов при перенаправлениях HTTP GET. Обеспечивает дополнительные меры безопасности, предотвращая перенаправление ваших запросов вредоносным сервером к неожиданным сервисам.\n\nЭто может произойти, когда внешний сервер перенаправляет на другой адрес, но этот адрес оказывается внутренним для инфраструктуры компании. В таком случае, отправив HTTP-запрос на внутренний сервер, вы можете обратиться к внутреннему API из внутренней сети, обойдя аутентификацию, или даже выполнять запросы к другим сервисам, таким как Redis или Memcached. Если у вас нет внутренней инфраструктуры (включая что-либо, работающее на вашем localhost) или вы доверяете серверу, перенаправления можно безопасно разрешить. Однако имейте в виду: если URL использует HTTP вместо HTTPS, вам придется доверять не только удаленному серверу, но и своему интернет-провайдеру, а также всем сетям между вами и сервером.

Значение по умолчанию в Cloud: `10`.

<div id="max_hyperscan_regexp_length">
  ## max\_hyperscan\_regexp\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Определяет максимальную длину каждого регулярного выражения в [функциях hyperscan multi-match](/ru/reference/functions/regular-functions/string-search-functions#multiMatchAny).

Возможные значения:

* Положительное целое число.
* 0 — длина не ограничена.

**Пример**

Запрос:

```sql theme={null}
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 3;
```

Результат:

```text theme={null}
┌─multiMatchAny('abcd', ['ab', 'bcd', 'c', 'd'])─┐
│                                              1 │
└────────────────────────────────────────────────┘
```

Запрос:

```sql theme={null}
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 2;
```

Результат:

```text theme={null}
Exception: Regexp length too large.
```

**См. также**

* [max\_hyperscan\_regexp\_total\_length](#max_hyperscan_regexp_total_length)

<div id="max_hyperscan_regexp_total_length">
  ## max\_hyperscan\_regexp\_total\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Задаёт максимальную суммарную длину всех регулярных выражений в каждой [функции hyperscan для множественного сопоставления](/ru/reference/functions/regular-functions/string-search-functions#multiMatchAny).

Возможные значения:

* Положительное целое число.
* 0 — длина не ограничена.

**Пример**

Запрос:

```sql theme={null}
SELECT multiMatchAny('abcd', ['a','b','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
```

Результат:

```text theme={null}
┌─multiMatchAny('abcd', ['a', 'b', 'c', 'd'])─┐
│                                           1 │
└─────────────────────────────────────────────┘
```

Запрос:

```sql theme={null}
SELECT multiMatchAny('abcd', ['ab','bc','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
```

Результат:

```text theme={null}
Exception: Total regexp lengths too large.
```

**См. также**

* [max\_hyperscan\_regexp\_length](#max_hyperscan_regexp_length)

<div id="max_insert_block_size">
  ## max\_insert\_block\_size
</div>

**Псевдонимы**: `max_insert_block_size_rows`

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048449" />

Максимальный размер блоков (по числу строк), формируемых для вставки в таблицу.

Этот параметр управляет формированием блоков в двух контекстах:

1. Разбор форматов: когда сервер разбирает построчные входные форматы (CSV, TSV, JSONEachRow и т. д.) через любой интерфейс (HTTP, clickhouse-client со встроенными данными, gRPC, по протоколу PostgreSQL), блоки формируются, когда:

   * достигнуты оба порога: min\_insert\_block\_size\_rows И min\_insert\_block\_size\_bytes, ИЛИ
   * достигнут любой из максимальных порогов: max\_insert\_block\_size\_rows ИЛИ max\_insert\_block\_size\_bytes

   Примечание: при использовании clickhouse-client или clickhouse-local для чтения из файла данные разбирает сам клиент, и этот параметр применяется на стороне клиента.

2. Операции INSERT: во время запросов INSERT и при прохождении данных через materialized views поведение этого параметра зависит от `use_strict_insert_block_limits`:

   * Если включен: блоки формируются, когда:
     * Минимальные пороги (И): достигнуты оба порога min\_insert\_block\_size\_rows И min\_insert\_block\_size\_bytes
     * Максимальные пороги (ИЛИ): достигнут любой из порогов max\_insert\_block\_size\_rows ИЛИ max\_insert\_block\_size\_bytes

   * Если отключен: блоки формируются, когда достигнут min\_insert\_block\_size\_rows ИЛИ min\_insert\_block\_size\_bytes. Параметры max\_insert\_block\_size не применяются.

Возможные значения:

* Положительное целое число.

<div id="max_insert_block_size_bytes">
  ## max\_insert\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Новая настройка, позволяющая управлять размером блоков в байтах при разборе данных в формате Row Input Format."}]}]} />

Максимальный размер блоков (в байтах), формируемых для вставки в таблицу.

Эта настройка работает вместе с max\_insert\_block\_size\_rows и управляет формированием блоков в том же контексте. Подробную информацию о том, когда и как применяются эти настройки, см. в описании max\_insert\_block\_size\_rows.

Возможные значения:

* Положительное целое число.
* 0 — настройка не участвует в формировании блоков.

<div id="max_insert_delayed_streams_for_parallel_write">
  ## max\_insert\_delayed\_streams\_for\_parallel\_write
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество потоков (столбцов), для которых откладывается окончательный сброс части. По умолчанию — auto (100, если нижележащее хранилище поддерживает параллельную запись, например S3, и отключено в противном случае)

Значение по умолчанию в Cloud: `50`.

<div id="max_insert_threads">
  ## max\_insert\_threads
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество потоков для выполнения запроса `INSERT SELECT`.

Возможные значения:

* 0 (или 1) — для `INSERT SELECT` параллельное выполнение не используется.
* Положительное целое число больше 1.

Значение по умолчанию в Cloud:

* `1` для узлов с 8 GiB памяти
* `2` для узлов с 16 GiB памяти
* `4` для более крупных узлов

Параллельное выполнение `INSERT SELECT` имеет эффект только в том случае, если часть `SELECT` также выполняется параллельно, см. настройку [`max_threads`](#max_threads).
Более высокие значения приводят к большему использованию памяти.

<div id="max_insert_threads_min_free_memory_per_thread">
  ## max\_insert\_threads\_min\_free\_memory\_per\_thread
</div>

<SettingsInfoBlock type="UInt64" default_value="4294967296" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "4294967296"},{"label": "Новая настройка для ограничения количества потоков вставки в зависимости от объема доступной свободной памяти"}]}]} />

То же, что и `max_threads_min_free_memory_per_thread`, но применяется к `max_insert_threads`, а не к `max_threads`. Значение по умолчанию выше, поскольку конвейеры вставки обычно используют более крупные буферы на поток (части MergeTree, блоки сжатия), чем конвейеры чтения.

Если объем свободной памяти меньше значения `max_insert_threads`, умноженного на это значение, `max_insert_threads` уменьшается до допустимого уровня, но не ниже `1`.

Установите `0`, чтобы отключить это ограничение.

<div id="max_joined_block_size_bytes">
  ## max\_joined\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="4194304" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "4194304"},{"label": "Новая настройка"}]}]} />

Максимальный размер блока в байтах для результата JOIN (если алгоритм JOIN поддерживает это). 0 означает без ограничений.

<div id="max_joined_block_size_rows">
  ## max\_joined\_block\_size\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="65409" />

Максимальный размер блока для результата JOIN (если алгоритм JOIN поддерживает это). 0 означает отсутствие ограничений.

<div id="max_limit_for_vector_search_queries">
  ## max\_limit\_for\_vector\_search\_queries
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1000"},{"label": "новая настройка"}]}]} />

SELECT-запросы с LIMIT, превышающим это значение, не могут использовать индексы векторного сходства. Это помогает предотвратить переполнение памяти при использовании индексов векторного сходства.

<div id="max_local_read_bandwidth">
  ## max\_local\_read\_bandwidth
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальная скорость локального чтения в байтах в секунду.

<div id="max_local_write_bandwidth">
  ## max\_local\_write\_bandwidth
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальная скорость локальной записи в байтах в секунду.

<div id="max_memory_usage">
  ## max\_memory\_usage
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Значение по умолчанию в Cloud: зависит от объема оперативной памяти на реплике.

Максимальный объем оперативной памяти, используемой для выполнения запроса на одном сервере.
Значение `0` означает отсутствие ограничений.

Этот параметр не учитывает объем доступной памяти или общий объем
памяти на машине. Ограничение применяется к одному запросу на
одном сервере.

Вы можете использовать `SHOW PROCESSLIST`, чтобы увидеть текущее потребление памяти для каждого запроса.
Пиковое потребление памяти отслеживается для каждого запроса и записывается в лог.

Использование памяти отслеживается не полностью для состояний следующих агрегатных функций
с аргументами `String` и `Array`:

* `min`
* `max`
* `any`
* `anyLast`
* `argMin`
* `argMax`

Потребление памяти также ограничивается параметрами [`max_memory_usage_for_user`](/ru/reference/settings/session-settings#max_memory_usage_for_user)
и [`max_server_memory_usage`](/ru/reference/settings/server-settings/settings#max_server_memory_usage).

<div id="max_memory_usage_for_user">
  ## max\_memory\_usage\_for\_user
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальный объём оперативной памяти, который может использоваться для выполнения запросов пользователя на одном сервере. Ноль означает отсутствие ограничений.

По умолчанию это значение не ограничено (`max_memory_usage_for_user = 0`).

Также см. описание [`max_memory_usage`](/ru/reference/settings/session-settings#max_memory_usage).

Например, если вы хотите установить для пользователя с именем `clickhouse_read` значение `max_memory_usage_for_user`, равное 1000 байт, можно использовать оператор

```sql theme={null}
ALTER USER clickhouse_read SETTINGS max_memory_usage_for_user = 1000;
```

Вы можете проверить, что всё сработало: выйдите из клиента, войдите снова, а затем используйте функцию `getSetting`:

```sql theme={null}
SELECT getSetting('max_memory_usage_for_user');
```

<div id="max_network_bandwidth">
  ## max\_network\_bandwidth
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничивает скорость передачи данных по сети в байтах в секунду. Эта настройка применяется к каждому запросу.

Возможные значения:

* Положительное целое число.
* 0 — ограничение пропускной способности отключено.

<div id="max_network_bandwidth_for_all_users">
  ## max\_network\_bandwidth\_for\_all\_users
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничивает скорость передачи данных по сети в байтах в секунду. Эта настройка применяется ко всем одновременно выполняющимся запросам на сервере.

Возможные значения:

* Положительное целое число.
* 0 — ограничение скорости передачи данных отключено.

<div id="max_network_bandwidth_for_user">
  ## max\_network\_bandwidth\_for\_user
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничивает скорость обмена данными по сети в байтах в секунду. Эта настройка применяется ко всем запросам, одновременно выполняемым одним пользователем.

Возможные значения:

* Положительное целое число.
* 0 — ограничение скорости передачи данных отключено.

<div id="max_network_bytes">
  ## max\_network\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничивает объём данных (в байтах), получаемых или передаваемых по сети при выполнении запроса. Этот параметр применяется к каждому отдельному запросу.

Возможные значения:

* Положительное целое число.
* 0 — ограничение объёма данных отключено.

<div id="max_number_of_partitions_for_independent_aggregation">
  ## max\_number\_of\_partitions\_for\_independent\_aggregation
</div>

<SettingsInfoBlock type="UInt64" default_value="128" />

Максимальное число партиций в таблице, к которым применяется оптимизация

<div id="max_os_cpu_wait_time_ratio_to_throw">
  ## max\_os\_cpu\_wait\_time\_ratio\_to\_throw
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Значения настройки были изменены и бэкпортированы в 25.4"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "новая настройка"}]}]} />

Максимальное соотношение между временем ожидания CPU ОС (метрика OSCPUWaitMicroseconds) и временем занятости (метрика OSCPUVirtualTimeMicroseconds), при котором запросы могут отклоняться. Для расчёта вероятности используется линейная интерполяция между минимальным и максимальным соотношением; в этой точке вероятность равна 1.

<div id="max_parallel_replicas">
  ## max\_parallel\_replicas
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "По умолчанию используется до 1000 параллельных реплик."}]}]} />

Максимальное количество реплик для каждого сегмента при выполнении запроса.

Возможные значения:

* Положительное целое число.

**Дополнительная информация**

Этот параметр может давать разные результаты в зависимости от используемых настроек.

<div id="parallel-processing-using-sample-key">
  ### Параллельная обработка с использованием ключа `SAMPLE`
</div>

Запрос может выполняться быстрее, если он обрабатывается параллельно на нескольких серверах. Однако производительность запроса может ухудшиться в следующих случаях:

* Положение ключа выборки в ключе партиционирования не позволяет эффективно выполнять диапазонное сканирование.
* Добавление ключа выборки в таблицу снижает эффективность фильтрации по другим столбцам.
* Ключ выборки представляет собой выражение, вычисление которого требует значительных затрат.
* Распределение задержек в кластере имеет длинный хвост, поэтому выполнение запроса на большем числе серверов увеличивает его общую задержку.

<div id="parallel-processing-using-parallel_replicas_custom_keyparallel_replicas_custom_key">
  ### Параллельная обработка с использованием [parallel\_replicas\_custom\_key](#parallel_replicas_custom_key)
</div>

Эта настройка полезна для любой реплицируемой таблицы.

<div id="max_parser_backtracks">
  ## max\_parser\_backtracks
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1000000"},{"label": "Ограничение сложности разбора"}]}]} />

Максимальное количество возвратов парсера (сколько раз он пробует разные альтернативы в процессе рекурсивного нисходящего разбора).

<div id="max_parser_depth">
  ## max\_parser\_depth
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

Ограничивает максимальную глубину рекурсии в рекурсивном нисходящем анализаторе. Позволяет управлять размером стека.

Возможные значения:

* Положительное целое число.
* 0 — глубина рекурсии не ограничена.

<div id="max_parsing_threads">
  ## max\_parsing\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="'auto(N)'" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "0"},{"label": "Добавлена отдельная настройка для управления количеством потоков при параллельном разборе данных из файлов"}]}]} />

Максимальное количество потоков для разбора данных во входных форматах, поддерживающих параллельный разбор. По умолчанию определяется автоматически.

<div id="max_partition_size_to_drop">
  ## max\_partition\_size\_to\_drop
</div>

<SettingsInfoBlock type="UInt64" default_value="50000000000" />

Ограничение на удаление партиций на этапе выполнения запроса. Значение `0` означает, что партиции можно удалять без каких-либо ограничений.

Значение по умолчанию в Cloud: 1 TB.

<Note>
  Эта настройка запроса переопределяет соответствующую настройку сервера, см. [max\_partition\_size\_to\_drop](/ru/reference/settings/server-settings/settings#max_partition_size_to_drop)
</Note>

<div id="max_partitions_per_insert_block">
  ## max\_partitions\_per\_insert\_block
</div>

<SettingsInfoBlock type="UInt64" default_value="100" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.5"},{"label": "100"},{"label": "Добавлено ограничение на количество партиций в одном блоке"}]}]} />

Ограничивает максимальное количество партиций в одном вставляемом блоке.
Если блок содержит слишком много партиций, генерируется исключение.

* Положительное целое число.
* `0` — Неограниченное количество партиций.

**Подробности**

При вставке данных ClickHouse вычисляет количество партиций во
вставляемом блоке. Если количество партиций превышает
`max_partitions_per_insert_block`, ClickHouse либо записывает предупреждение в журнал, либо генерирует
исключение в зависимости от `throw_on_max_partitions_per_insert_block`. Текст исключения
следующий:

> "Слишком много партиций для одного блока INSERT (`partitions_count` партиций, предел — " + toString(max\_partitions) + ").
> Этот предел задается настройкой 'max\_partitions\_per\_insert\_block'.
> Большое количество партиций — распространенное заблуждение. Это приведет к
> серьезному снижению производительности, включая медленный запуск сервера, медленные запросы INSERT
> и медленные запросы SELECT. Рекомендуемое общее количество партиций для таблицы —
> менее 1000..10000. Обратите внимание, что партиционирование не предназначено для ускорения
> запросов SELECT (ключа ORDER BY достаточно, чтобы диапазонные запросы выполнялись быстро).
> Партиции предназначены для манипуляций с данными (DROP PARTITION и т. д.)."

<Note>
  Эта настройка является защитным порогом, поскольку использование большого количества партиций — распространенное заблуждение.
</Note>

<div id="max_partitions_to_read">
  ## max\_partitions\_to\_read
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

Ограничивает максимальное количество партиций, к которым можно получить доступ в рамках одного запроса.

Значение настройки, заданное при создании таблицы, можно переопределить настройкой на уровне запроса.

Возможные значения:

* Положительное целое число
* `-1` — без ограничений (по умолчанию)

<Note>
  Настройку MergeTree [`max_partitions_to_read`](/ru/reference/settings/session-settings#max_partitions_to_read) также можно указать в настройках таблицы.
</Note>

<div id="max_parts_to_move">
  ## max\_parts\_to\_move
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1000"},{"label": "Новая настройка"}]}]} />

Ограничивает число частей, которые можно переместить за один запрос. Ноль означает отсутствие ограничений.

<div id="max_projection_rows_to_use_projection_index">
  ## max\_projection\_rows\_to\_use\_projection\_index
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1000000"},{"label": "новая настройка"}]}]} />

Если количество строк, которые нужно прочитать из индекса проекции, меньше или равно этому порогу, ClickHouse попытается использовать индекс проекции при выполнении запроса.

<div id="max_query_size">
  ## max\_query\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="262144" />

Максимальное количество байтов в строке запроса, разбираемой SQL-парсером.
Данные в секции VALUES запросов INSERT обрабатываются отдельным потоковым парсером (который потребляет O(1) оперативной памяти) и не подпадают под это ограничение.

<Note>
  `max_query_size` нельзя задать внутри SQL-запроса (например, `SELECT now() SETTINGS max_query_size=10000`), поскольку ClickHouse должен выделить буфер для разбора запроса, а размер этого буфера определяется настройкой `max_query_size`, которая должна быть задана до выполнения запроса.
</Note>

<div id="max_rand_distribution_parameter">
  ## max\_rand\_distribution\_parameter
</div>

<SettingsInfoBlock type="Float" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000"},{"label": "Новая настройка, ограничивающая параметры формы в функциях случайных распределений и предотвращающая зависания при экстремальных входных данных."}]}]} />

Максимальное значение параметров формы распределения в функциях случайных распределений, таких как `randChiSquared`, `randStudentT` и `randFisherF`. Это предотвращает чрезмерно долгое время вычислений при экстремальных значениях параметров.

<div id="max_rand_distribution_trials">
  ## max\_rand\_distribution\_trials
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000000"},{"label": "Новая настройка, ограничивающая количество испытаний в функциях случайных распределений и предотвращающая зависания при экстремальных входных данных."}]}]} />

Максимальное количество испытаний, допустимое для функций случайных распределений, таких как `randBinomial` и `randNegativeBinomial`. Это предотвращает чрезмерно долгие вычисления при большом числе испытаний.

<div id="max_read_buffer_size">
  ## max\_read\_buffer\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048576" />

Максимальный размер буфера для чтения из файловой системы.

<div id="max_read_buffer_size_local_fs">
  ## max\_read\_buffer\_size\_local\_fs
</div>

<SettingsInfoBlock type="UInt64" default_value="131072" />

Максимальный размер буфера для чтения из локальной файловой системы. Если задано значение 0, используется max\_read\_buffer\_size.

<div id="max_read_buffer_size_remote_fs">
  ## max\_read\_buffer\_size\_remote\_fs
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальный размер буфера для чтения из удалённой файловой системы. Если установлено значение 0, используется max\_read\_buffer\_size.

<div id="max_recursive_cte_evaluation_depth">
  ## max\_recursive\_cte\_evaluation\_depth
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1000"},{"label": "Максимальная глубина вычисления рекурсивного CTE"}]}]} />

Максимальная глубина вычисления рекурсивного CTE

<div id="max_remote_read_network_bandwidth">
  ## max\_remote\_read\_network\_bandwidth
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальная скорость чтения по сети в байтах в секунду.

<div id="max_remote_write_network_bandwidth">
  ## max\_remote\_write\_network\_bandwidth
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальная скорость сетевого обмена данными при записи в байтах в секунду.

<div id="max_replica_delay_for_distributed_queries">
  ## max\_replica\_delay\_for\_distributed\_queries
</div>

<SettingsInfoBlock type="UInt64" default_value="300" />

Отключает отстающие реплики для распределённых запросов. См. [Репликация](/ru/reference/engines/table-engines/mergetree-family/replication).

Задаёт время в секундах. Если отставание реплики больше или равно заданному значению, эта реплика не используется.

Возможные значения:

* Положительное целое число.
* 0 — отставание реплик не проверяется.

Чтобы исключить использование любой реплики с ненулевым отставанием, установите этот параметр в 1.

Используется при выполнении `SELECT` из distributed таблицы, которая указывает на реплицированные таблицы.

<div id="max_result_bytes">
  ## max\_result\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничивает размер результата в байтах (в несжатом виде). Запрос остановится после обработки блока данных, если порог достигнут,
но последний блок результата обрезан не будет, поэтому размер результата может превысить порог.

**Ограничения**

Для этого порога учитывается размер результата в памяти.
Даже если сам результат небольшой, он может ссылаться на более крупные структуры данных в памяти,
такие как словари для столбцов LowCardinality и Arena для столбцов AggregateFunction,
поэтому порог может быть превышен, несмотря на небольшой размер результата.

<Warning>
  Этот параметр является довольно низкоуровневым и должен использоваться с осторожностью
</Warning>

<div id="max_result_rows">
  ## max\_result\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Значение по умолчанию в Cloud: `0`.

Ограничивает количество строк в результате. Проверяется также для подзапросов и на удалённых серверах при выполнении частей распределённого запроса.
Если значение равно `0`, ограничение не применяется.

Запрос остановится после обработки блока данных, если порог достигнут, но
последний блок результата обрезан не будет, поэтому размер результата может
превышать порог.

<div id="max_reverse_dictionary_lookup_cache_size_bytes">
  ## max\_reverse\_dictionary\_lookup\_cache\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="104857600" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "104857600"},{"label": "Новая настройка. Максимальный размер в байтах кэша обратного поиска в словаре для одного запроса, используемого функцией `dictGetKeys`. Кэш хранит сериализованные кортежи ключей для каждого значения атрибута, чтобы избежать повторного сканирования словаря в рамках одного и того же запроса."}]}]} />

Максимальный размер в байтах кэша обратного поиска в словаре для одного запроса, используемого функцией `dictGetKeys`. Кэш хранит сериализованные кортежи ключей для каждого значения атрибута, чтобы избежать повторного сканирования словаря в рамках одного и того же запроса. При достижении лимита записи кэша вытесняются по алгоритму LRU. Установите 0, чтобы отключить кэширование.

<div id="max_rows_for_lazy_final">
  ## max\_rows\_for\_lazy\_final
</div>

<SettingsInfoBlock type="UInt64" default_value="10000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "10000000"},{"label": "Новая настройка для максимального количества строк в наборе для ленивой оптимизации FINAL"}]}]} />

Максимальное количество строк в наборе для ленивой оптимизации FINAL. При превышении этого значения используется обычный FINAL.

<div id="max_rows_in_distinct">
  ## max\_rows\_in\_distinct
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество различных строк при использовании DISTINCT.

<div id="max_rows_in_join">
  ## max\_rows\_in\_join
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничивает количество строк в хеш-таблице, используемой при объединении таблиц.

Этот параметр применяется к операциям [SELECT ... JOIN](/ru/reference/statements/select/join)
и движку таблицы [Join](/ru/reference/engines/table-engines/special/join).

Если запрос содержит несколько JOIN, ClickHouse проверяет этот параметр для каждого промежуточного результата.

При достижении лимита ClickHouse может выполнять разные действия. Используйте
параметр [`join_overflow_mode`](/ru/reference/settings/session-settings#join_overflow_mode), чтобы выбрать нужное действие.

Возможные значения:

* Положительное целое число.
* `0` — Неограниченное количество строк.

<div id="max_rows_in_set">
  ## max\_rows\_in\_set
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество строк в наборе данных для оператора IN, созданного из подзапроса.

<div id="max_rows_in_set_to_optimize_join">
  ## max\_rows\_in\_set\_to\_optimize\_join
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "Отключает оптимизацию JOIN, так как она препятствует оптимизации чтения по порядку"}]}]} />

Максимальный размер множества, используемого для фильтрации объединяемых таблиц по множествам строк друг друга перед выполнением JOIN.

Возможные значения:

* 0 — Отключить.
* Любое положительное целое число.

<div id="max_rows_to_group_by">
  ## max\_rows\_to\_group\_by
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество уникальных ключей, полученных при агрегации. Этот параметр позволяет
ограничить потребление памяти при агрегации.

Если во время GROUP BY агрегация создаёт больше строк
(уникальных ключей GROUP BY), чем указано, поведение будет определяться
параметром 'group\_by\_overflow\_mode', который по умолчанию имеет значение `throw`, но его также можно переключить
в приблизительный режим GROUP BY.

<div id="max_rows_to_read">
  ## max\_rows\_to\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество строк, которое можно прочитать из таблицы при выполнении запроса.
Ограничение проверяется для каждого обрабатываемого фрагмента данных, применяется только к
наиболее глубокому табличному выражению, а при чтении с удалённого сервера проверяется только на
удалённом сервере.

<div id="max_rows_to_read_leaf">
  ## max\_rows\_to\_read\_leaf
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество строк, которое можно прочитать из локальной таблицы на листовом узле при
выполнении распределённого запроса. Хотя распределённые запросы могут отправлять несколько подзапросов
к каждому сегменту (листовому узлу), это ограничение проверяется только на этапе чтения на
листовых узлах и игнорируется на этапе слияния результатов на корневом узле.

Например, кластер состоит из 2 сегментов, и каждый сегмент содержит таблицу со
100 строками. Распределённый запрос, который должен прочитать все данные из обеих
таблиц с настройкой `max_rows_to_read=150`, завершится ошибкой, так как всего будет
200 строк. Запрос с `max_rows_to_read_leaf=150` выполнится успешно, поскольку листовые узлы
прочитают не более 100 строк.

Ограничение проверяется для каждого обрабатываемого фрагмента данных.

<Note>
  Эта настройка работает нестабильно при `prefer_localhost_replica=1`.
</Note>

<div id="max_rows_to_sort">
  ## max\_rows\_to\_sort
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество строк перед сортировкой. Это позволяет ограничить потребление памяти при сортировке.
Если для операции ORDER BY требуется обработать больше записей, чем указано,
поведение будет определяться параметром `sort_overflow_mode`, который по умолчанию имеет значение `throw`.

<div id="max_rows_to_transfer">
  ## max\_rows\_to\_transfer
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество строк, которое может быть передано на удалённый сервер или сохранено
во временной таблице при выполнении секции GLOBAL IN/JOIN.

<div id="max_sessions_for_user">
  ## max\_sessions\_for\_user
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество одновременных сеансов для каждого аутентифицированного пользователя ClickHouse server.

Пример:

```xml theme={null}
<profiles>
    <single_session_profile>
        <max_sessions_for_user>1</max_sessions_for_user>
    </single_session_profile>
    <two_sessions_profile>
        <max_sessions_for_user>2</max_sessions_for_user>
    </two_sessions_profile>
    <unlimited_sessions_profile>
        <max_sessions_for_user>0</max_sessions_for_user>
    </unlimited_sessions_profile>
</profiles>
<users>
    <!-- Пользователь Alice может подключаться к серверу ClickHouse не более одного раза одновременно. -->
    <Alice>
        <profile>single_session_user</profile>
    </Alice>
    <!-- Пользователь Bob может использовать 2 одновременных сеанса. -->
    <Bob>
        <profile>two_sessions_profile</profile>
    </Bob>
    <!-- Пользователь Charles может использовать неограниченное количество одновременных сеансов. -->
    <Charles>
        <profile>unlimited_sessions_profile</profile>
    </Charles>
</users>
```

Возможные значения:

* Положительное целое число
* `0` — неограниченное число одновременных сеансов (по умолчанию)

<div id="max_size_to_preallocate_for_aggregation">
  ## max\_size\_to\_preallocate\_for\_aggregation
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1000000000000"},{"label": "Включает оптимизацию для более крупных таблиц."}]}, {"id": "row-2","items": [{"label": "22.12"},{"label": "100000000"},{"label": "Оптимизирует производительность"}]}]} />

Для какого количества элементов разрешено суммарно заранее выделять место во всех хеш-таблицах перед aggregatio

<div id="max_size_to_preallocate_for_joins">
  ## max\_size\_to\_preallocate\_for\_joins
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "100000000"},{"label": "Новая настройка"}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "1000000000000"},{"label": "Включена оптимизация для более крупных таблиц."}]}]} />

Для какого количества элементов разрешено заранее выделять место во всех хеш-таблицах в сумме перед joi

<div id="max_skip_unavailable_shards_num">
  ## max\_skip\_unavailable\_shards\_num
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Новая настройка для ограничения количества сегментов, которые можно пропустить без ошибки, когда включен `skip_unavailable_shards`."}]}]} />

Когда `skip_unavailable_shards` включен, ограничивает максимальное количество сегментов, которые можно пропустить без ошибки.
Если количество недоступных сегментов превышает это значение, вместо пропуска без ошибки генерируется исключение.

Значение 0 означает отсутствие ограничения (поведение по умолчанию — можно пропустить все недоступные сегменты).

<div id="max_skip_unavailable_shards_ratio">
  ## max\_skip\_unavailable\_shards\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Новая настройка для ограничения доли сегментов, которые можно без уведомления пропустить, когда включен skip_unavailable_shards."}]}]} />

Когда `skip_unavailable_shards` включен, ограничивает максимальную долю (от 0 до 1) сегментов, которые можно пропустить без уведомления.
Если доля недоступных сегментов от общего числа сегментов превышает это значение, вместо пропуска без уведомления будет сгенерировано исключение.

Значение 0 означает отсутствие ограничения (поведение по умолчанию — можно пропустить все недоступные сегменты).

<div id="max_streams_for_files_processing_in_cluster_functions">
  ## max\_streams\_for\_files\_processing\_in\_cluster\_functions
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Добавлена новая настройка, позволяющая ограничить количество потоков для обработки файлов в *кластерных табличных функциях"}]}]} />

Если значение не равно нулю, ограничивает количество потоков, читающих данные из файлов в \*кластерных табличных функциях.

<div id="max_streams_for_merge_tree_reading">
  ## max\_streams\_for\_merge\_tree\_reading
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Если значение не равно нулю, ограничивает число потоков чтения для таблицы MergeTree.

<div id="max_streams_for_union_step">
  ## max\_streams\_for\_union\_step
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка, ограничивающая количество одновременно активных потоков данных на шаге UNION для снижения пикового потребления памяти."}]}]} />

Ограничивает количество одновременно активных потоков данных на шаге `UNION` (применяется как к `UNION ALL`, так и к `UNION DISTINCT`, поскольку `UNION DISTINCT` реализуется как шаг `UNION ALL`, за которым следует шаг `DISTINCT`). Когда запрос `UNION` содержит много подзапросов, все они одновременно открывают свои буферы чтения, из-за чего использование памяти становится пропорциональным количеству подзапросов. Эта настройка добавляет процессоры `Concat`, чтобы сузить конвейер и гарантировать, что одновременно активно не более указанного числа потоков, что значительно снижает пиковое потребление памяти. Фактическое ограничение — минимум из этого значения и `max_threads * max_streams_for_union_step_to_max_threads_ratio` (если любое из них равно 0, оно не учитывается). Если оба значения равны 0, сужение не применяется.

<div id="max_streams_for_union_step_to_max_threads_ratio">
  ## max\_streams\_for\_union\_step\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "8"},{"label": "Новая настройка: ограничение на число одновременно активных потоков на шаге UNION вычисляется как min(max_streams_for_union_step, max_threads * max_streams_for_union_step_to_max_threads_ratio); если любое из значений равно 0, соответствующее ограничение отключается."}]}]} />

Это соотношение, умноженное на `max_threads`, задаёт ограничение на число одновременно активных потоков на шаге `UNION` (применяется как к `UNION ALL`, так и к `UNION DISTINCT`). Фактическое ограничение — минимум из этого вычисленного значения и `max_streams_for_union_step` (если любое из них равно 0, оно игнорируется). Например, при `max_threads = 8` и значении этого соотношения 1 одновременно будет активно не более 8 потоков. Установите 0, чтобы отключить это ограничение, зависящее от соотношения.

<div id="max_streams_multiplier_for_merge_tables">
  ## max\_streams\_multiplier\_for\_merge\_tables
</div>

<SettingsInfoBlock type="Float" default_value="5" />

Запрашивает больше потоков при чтении из таблицы Merge. Потоки будут распределяться между таблицами, которые использует таблица Merge. Это позволяет более равномерно распределять нагрузку между потоками и особенно полезно, когда эти таблицы различаются по размеру.

<div id="max_streams_to_max_threads_ratio">
  ## max\_streams\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="1" />

Позволяет использовать больше источников, чем потоков, чтобы равномернее распределять работу между потоками. Предполагается, что это временное решение, поскольку в будущем число источников можно будет сделать равным числу потоков, а каждый источник при этом сможет динамически выбирать доступную для себя работу.

<div id="max_subquery_depth">
  ## max\_subquery\_depth
</div>

<SettingsInfoBlock type="UInt64" default_value="100" />

Если запрос содержит больше указанного количества вложенных подзапросов, генерируется
исключение.

<Tip>
  Это позволяет выполнять проверку на адекватность, чтобы защитить пользователей вашего
  кластера от написания чрезмерно сложных запросов.
</Tip>

<div id="max_table_size_to_drop">
  ## max\_table\_size\_to\_drop
</div>

<SettingsInfoBlock type="UInt64" default_value="50000000000" />

Ограничение на удаление таблиц во время выполнения запроса. Значение `0` означает, что можно удалять любые таблицы без ограничений.

Значение по умолчанию в Cloud: 1 TB.

<Note>
  Эта настройка запроса переопределяет соответствующую настройку сервера, см. [max\_table\_size\_to\_drop](/ru/reference/settings/server-settings/settings#max_table_size_to_drop)
</Note>

<div id="max_temporary_columns">
  ## max\_temporary\_columns
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество временных столбцов, которые должны одновременно
храниться в оперативной памяти при выполнении запроса, включая константные столбцы. Если в результате промежуточных
вычислений запрос создаёт в памяти больше указанного количества временных столбцов,
то генерируется исключение.

<Tip>
  Эта настройка полезна для предотвращения чрезмерно сложных запросов.
</Tip>

Значение `0` означает отсутствие ограничений.

<div id="max_temporary_data_on_disk_size_for_query">
  ## max\_temporary\_data\_on\_disk\_size\_for\_query
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальный объём данных в байтах, занимаемый временными файлами на диске для всех
одновременно выполняющихся запросов.

Возможные значения:

* Положительное целое число.
* `0` — без ограничений (по умолчанию)

<div id="max_temporary_data_on_disk_size_for_user">
  ## max\_temporary\_data\_on\_disk\_size\_for\_user
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальный объём данных в байтах, занимаемый временными файлами на диске, для всех
одновременно выполняющихся пользовательских запросов.

Возможные значения:

* Положительное целое число.
* `0` — не ограничено (по умолчанию)

<div id="max_temporary_non_const_columns">
  ## max\_temporary\_non\_const\_columns
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Как и `max_temporary_columns`, это максимальное количество временных столбцов, которые должны
одновременно храниться в оперативной памяти при выполнении запроса, без учета константных
столбцов.

<Note>
  Константные столбцы довольно часто формируются при выполнении запроса, но практически не требуют
  вычислительных ресурсов.
</Note>

<div id="max_threads">
  ## max\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="'auto(N)'" />

Максимальное число потоков обработки запроса, не включая потоки, используемые для получения данных с удалённых серверов (см. параметр ['max\_distributed\_connections'](/ru/reference/settings/session-settings#max_distributed_connections)).

Этот параметр применяется к потокам, которые параллельно выполняют одни и те же этапы конвейера обработки запроса.
Например, при чтении из таблицы, если выражения с функциями, фильтрацию с помощью `WHERE` и предварительную агрегацию для `GROUP BY` можно выполнять параллельно как минимум в количестве 'max\_threads' потоков, то будут использоваться 'max\_threads'.

Для запросов, которые быстро завершаются из-за LIMIT, можно задать меньшее значение 'max\_threads'.
Например, если нужное число записей находится в каждом block и max\_threads = 8, то будут считаны 8 blocks, хотя достаточно было бы прочитать только один.
Чем меньше значение `max_threads`, тем меньше расход памяти.

По умолчанию значение настройки `max_threads` соответствует числу аппаратных потоков (числу ядер CPU), доступных ClickHouse.
В особом случае для процессоров x86 с менее чем 32 ядрами CPU и SMT (например, Intel HyperThreading) ClickHouse по умолчанию использует число логических ядер (= 2 x число физических ядер).

Без SMT (например, Intel HyperThreading) это соответствует числу ядер CPU.

Для пользователей ClickHouse Cloud значение по умолчанию отображается как `auto(N)`, где N соответствует размеру vCPU вашего сервиса, например 2vCPU/8GiB, 4vCPU/16GiB и т. д.
Список всех размеров сервисов см. на вкладке Settings в консоли Cloud.

<div id="max_threads_for_indexes">
  ## max\_threads\_for\_indexes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество потоков для обработки индексов.

<div id="max_threads_min_free_memory_per_thread">
  ## max\_threads\_min\_free\_memory\_per\_thread
</div>

<SettingsInfoBlock type="UInt64" default_value="1073741824" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1073741824"},{"label": "Новая настройка для ограничения количества потоков в зависимости от объема доступной свободной памяти"}]}]} />

Уменьшает `max_threads`, когда сервер испытывает нехватку памяти, чтобы не запускать сильно распараллеленные запросы, которые с высокой вероятностью упрутся в лимит памяти.

Свободная память вычисляется как `max_server_memory_usage` сервера минус память, которая в данный момент учитывается глобальным `трекер памяти`. Если этой свободной памяти меньше, чем `max_threads`, умноженное на это значение, `max_threads` уменьшается до наибольшего N, для которого `N * value <= free_memory`, при минимальном значении `1`.

Установите `0`, чтобы отключить это ограничение.

Например, при значении по умолчанию 1 GiB и 32 GiB свободной памяти `max_threads` ограничивается значением 32; при 1 GiB свободной памяти оно снижается до 1.

Эта настройка применяется к параллелизму на стороне чтения (`SELECT`, `UNION`, `INTERSECT`/`EXCEPT` и часть `SELECT` в `INSERT ... SELECT`). Для стороны записи см. `max_insert_threads_min_free_memory_per_thread`.

<div id="max_untracked_memory">
  ## max\_untracked\_memory
</div>

<SettingsInfoBlock type="UInt64" default_value="4194304" />

Небольшие выделения и освобождения памяти суммируются в локальной переменной потока и отслеживаются или профилируются только тогда, когда их объём (по модулю) превышает указанное значение. Если это значение больше, чем `memory_profiler_step`, оно фактически будет уменьшено до `memory_profiler_step`.

<div id="max_wkb_geometry_elements">
  ## max\_wkb\_geometry\_elements
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000"},{"label": "Новая настройка для ограничения количества элементов при разборе WKB-геометрии, предотвращающая чрезмерное выделение памяти на некорректных данных."}]}]} />

Максимальное количество точек, колец или полигонов, допустимое в одном элементе WKB-геометрии при разборе функцией `readWKB` и связанными с ней функциями. Это защищает от чрезмерного выделения памяти из-за некорректных данных WKB. Установите 0, чтобы использовать жёстко заданный предел (100 миллионов).

<div id="memory_overcommit_ratio_denominator">
  ## memory\_overcommit\_ratio\_denominator
</div>

<SettingsInfoBlock type="UInt64" default_value="1073741824" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.5"},{"label": "1073741824"},{"label": "Возможность оверкоммита памяти включена по умолчанию"}]}]} />

Определяет мягкий лимит памяти при достижении жёсткого лимита на глобальном уровне.
Это значение используется для вычисления коэффициента оверкоммита памяти для запроса.
Значение 0 означает, что запрос будет пропущен.
Подробнее см. в разделе [оверкоммит памяти](/ru/concepts/features/configuration/settings/memory-overcommit).

<div id="memory_overcommit_ratio_denominator_for_user">
  ## memory\_overcommit\_ratio\_denominator\_for\_user
</div>

<SettingsInfoBlock type="UInt64" default_value="1073741824" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.5"},{"label": "1073741824"},{"label": "Включает возможность оверкоммита памяти по умолчанию"}]}]} />

Задает мягкий лимит памяти на уровне пользователя, который применяется при достижении жёсткого лимита.
Это значение используется для вычисления коэффициента оверкоммита памяти для запроса.
Значение 0 означает, что запрос будет пропущен.
Подробнее см. в разделе [оверкоммит памяти](/ru/concepts/features/configuration/settings/memory-overcommit).

<div id="memory_profiler_sample_max_allocation_size">
  ## memory\_profiler\_sample\_max\_allocation\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Собирает случайные выделения памяти размером меньше или равным указанному значению с вероятностью `memory_profiler_sample_probability`. 0 означает, что параметр отключён. Возможно, стоит установить 'max\_untracked\_memory' в 0, чтобы этот порог работал ожидаемым образом.

<div id="memory_profiler_sample_min_allocation_size">
  ## memory\_profiler\_sample\_min\_allocation\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Собирает случайные выделения памяти размером не меньше указанного значения с вероятностью, заданной в `memory_profiler_sample_probability`. 0 означает, что параметр отключен. Чтобы этот порог работал как ожидается, может потребоваться установить `max_untracked_memory` в 0.

<div id="memory_profiler_sample_probability">
  ## memory\_profiler\_sample\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

Собирает случайные события выделения и освобождения памяти и записывает их в system.trace\_log с trace\_type 'MemorySample'. Вероятность применяется к каждому alloc/free независимо от размера выделения памяти (это можно изменить с помощью `memory_profiler_sample_min_allocation_size` и `memory_profiler_sample_max_allocation_size`). Обратите внимание, что сэмплирование происходит только тогда, когда объём неотслеживаемой памяти превышает 'max\_untracked\_memory'. Для более детализированного сэмплирования можно установить 'max\_untracked\_memory' в 0.

<div id="memory_profiler_step">
  ## memory\_profiler\_step
</div>

<SettingsInfoBlock type="UInt64" default_value="4194304" />

Задаёт шаг профилировщика памяти. Каждый раз, когда использование памяти запросом превышает следующий порог, заданный в байтах, профилировщик памяти собирает трассировку стека выделения памяти и записывает её в [trace\_log](/ru/reference/system-tables/trace_log).

Возможные значения:

* Положительное целое число байт.

* 0 — чтобы отключить профилировщик памяти.

<div id="memory_tracker_fault_probability">
  ## memory\_tracker\_fault\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

Для проверки `exception safety` — с указанной вероятностью генерировать исключение при каждом выделении памяти.

<div id="memory_usage_overcommit_max_wait_microseconds">
  ## memory\_usage\_overcommit\_max\_wait\_microseconds
</div>

<SettingsInfoBlock type="UInt64" default_value="5000000" />

Максимальное время, в течение которого поток будет ждать освобождения памяти в случае оверкоммита памяти на уровне пользователя.
Если тайм-аут истечёт и память не будет освобождена, будет сгенерировано исключение.
Подробнее см. в разделе [оверкоммит памяти](/ru/concepts/features/configuration/settings/memory-overcommit).

<div id="merge_table_max_tables_to_look_for_schema_inference">
  ## merge\_table\_max\_tables\_to\_look\_for\_schema\_inference
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "Новая настройка"}]}]} />

При создании таблицы `Merge` без явной схемы или при использовании табличной функции `merge` схема выводится как объединение не более чем указанного числа соответствующих таблиц.
Если таблиц больше, схема будет выведена по первым таблицам в пределах указанного количества.

<div id="merge_tree_coarse_index_granularity">
  ## merge\_tree\_coarse\_index\_granularity
</div>

<SettingsInfoBlock type="UInt64" default_value="8" />

При поиске данных ClickHouse проверяет метки данных в индексном файле. Если ClickHouse обнаруживает, что искомые ключи находятся в некотором диапазоне, он делит этот диапазон на `merge_tree_coarse_index_granularity` поддиапазонов и рекурсивно ищет ключи в них.

Возможные значения:

* Любое положительное чётное целое число.

<div id="merge_tree_compact_parts_min_granules_to_multibuffer_read">
  ## merge\_tree\_compact\_parts\_min\_granules\_to\_multibuffer\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="16" />

Действует только в ClickHouse Cloud. Количество гранул в stripe компактной части таблиц MergeTree, начиная с которого используется multibuffer reader, поддерживающий параллельное чтение и prefetch. При чтении из remote fs использование multibuffer reader увеличивает число read request.

<div id="merge_tree_determine_task_size_by_prewhere_columns">
  ## merge\_tree\_determine\_task\_size\_by\_prewhere\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Следует ли использовать для определения размера задачи чтения только размер столбцов prewhere.

<div id="merge_tree_max_bytes_to_use_cache">
  ## merge\_tree\_max\_bytes\_to\_use\_cache
</div>

<SettingsInfoBlock type="UInt64" default_value="2013265920" />

Если в рамках одного запроса ClickHouse нужно прочитать более `merge_tree_max_bytes_to_use_cache` байт, кеш несжатых блоков не используется.

Кеш несжатых блоков хранит данные, извлечённые при выполнении запросов. ClickHouse использует этот кеш, чтобы ускорить обработку повторяющихся небольших запросов. Эта настройка защищает кеш от вытеснения запросами, которые считывают большой объём данных. Размер кеша несжатых блоков задаёт [настройка сервера uncompressed\_cache\_size](/ru/reference/settings/server-settings/settings#uncompressed_cache_size).

Возможные значения:

* Любое положительное целое число.

<div id="merge_tree_max_rows_to_use_cache">
  ## merge\_tree\_max\_rows\_to\_use\_cache
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

Если в одном запросе ClickHouse должен прочитать более `merge_tree_max_rows_to_use_cache` строк, кэш несжатых блоков не используется.

Кэш несжатых блоков хранит данные, извлечённые для запросов. ClickHouse использует этот кэш, чтобы ускорить обработку повторяющихся небольших запросов. Эта настройка защищает кэш от вытеснения запросами, читающими большие объёмы данных. Размер кэша несжатых блоков задаётся настройкой сервера [uncompressed\_cache\_size](/ru/reference/settings/server-settings/settings#uncompressed_cache_size).

Возможные значения:

* Любое положительное целое число.

<div id="merge_tree_min_bytes_for_concurrent_read">
  ## merge\_tree\_min\_bytes\_for\_concurrent\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="251658240" />

Если число байтов, считываемых из одного файла таблицы с движком [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree), превышает `merge_tree_min_bytes_for_concurrent_read`, ClickHouse пытается читать этот файл параллельно в нескольких потоках.

Возможное значение:

* Положительное целое число.

<div id="merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem">
  ## merge\_tree\_min\_bytes\_for\_concurrent\_read\_for\_remote\_filesystem
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Настройка устарела"}]}]} />

Минимальное количество байтов, которое нужно прочитать из одного файла, прежде чем движок [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree) сможет распараллелить чтение при работе с удалённой файловой системой. Мы не рекомендуем использовать эту настройку.

Возможные значения:

* Положительное целое число.

<div id="merge_tree_min_bytes_for_seek">
  ## merge\_tree\_min\_bytes\_for\_seek
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Если расстояние между двумя блоками данных, которые нужно прочитать из одного файла, меньше `merge_tree_min_bytes_for_seek` байт, то ClickHouse последовательно считывает диапазон файла, содержащий оба блока, избегая тем самым дополнительной операции `seek`.

Возможные значения:

* Любое положительное целое число.

<div id="merge_tree_min_bytes_per_task_for_remote_reading">
  ## merge\_tree\_min\_bytes\_per\_task\_for\_remote\_reading
</div>

**Псевдонимы**: `filesystem_prefetch_min_bytes_for_single_read_task`

<SettingsInfoBlock type="UInt64" default_value="2097152" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "2097152"},{"label": "Значение унифицировано с `filesystem_prefetch_min_bytes_for_single_read_task`"}]}]} />

Минимальное количество байт для чтения на одну задачу.

<div id="merge_tree_min_read_task_size">
  ## merge\_tree\_min\_read\_task\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "8"},{"label": "новая настройка"}]}]} />

Жесткий нижний предел размера задачи (даже если число гранул мало, а количество доступных потоков велико, мы не будем выделять задачи меньшего размера

<div id="merge_tree_min_rows_for_concurrent_read">
  ## merge\_tree\_min\_rows\_for\_concurrent\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="163840" />

Если количество строк, которое нужно прочитать из файла таблицы [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree), превышает `merge_tree_min_rows_for_concurrent_read`, ClickHouse пытается читать этот файл параллельно в нескольких потоках.

Возможные значения:

* Положительное целое число.

<div id="merge_tree_min_rows_for_concurrent_read_for_remote_filesystem">
  ## merge\_tree\_min\_rows\_for\_concurrent\_read\_for\_remote\_filesystem
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Настройка устарела"}]}]} />

Минимальное количество строк, которое нужно прочитать из одного файла, прежде чем движок [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree) сможет распараллелить чтение при работе с удалённой файловой системой. Мы не рекомендуем использовать эту настройку.

Возможные значения:

* Положительное целое число.

<div id="merge_tree_min_rows_for_seek">
  ## merge\_tree\_min\_rows\_for\_seek
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Если расстояние между двумя блоками данных, которые нужно прочитать из одного файла, меньше `merge_tree_min_rows_for_seek` строк, то ClickHouse не выполняет seek по файлу, а читает данные последовательно.

Возможные значения:

* Любое положительное целое число.

<div id="merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability">
  ## merge\_tree\_read\_split\_ranges\_into\_intersecting\_and\_non\_intersecting\_injection\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Для тестирования `PartsSplitter` — разделять диапазоны чтения на пересекающиеся и непересекающиеся каждый раз при чтении из MergeTree с указанной вероятностью."}]}]} />

Для тестирования `PartsSplitter` — разделять диапазоны чтения на пересекающиеся и непересекающиеся каждый раз при чтении из MergeTree с указанной вероятностью.

<div id="merge_tree_storage_snapshot_sleep_ms">
  ## merge\_tree\_storage\_snapshot\_sleep\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Новая настройка для отладки согласованности снимка хранилища при выполнении запроса"}]}]} />

Добавляет искусственную задержку (в миллисекундах) при создании снимка хранилища для таблиц MergeTree.
Используется только для тестирования и отладки.

Возможные значения:

* 0 - Без задержки (по умолчанию)
* N - Задержка в миллисекундах

<div id="merge_tree_use_const_size_tasks_for_remote_reading">
  ## merge\_tree\_use\_const\_size\_tasks\_for\_remote\_reading
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать ли задачи фиксированного размера для чтения из удалённой таблицы.

<div id="merge_tree_use_deserialization_prefixes_cache">
  ## merge\_tree\_use\_deserialization\_prefixes\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Новая настройка для управления использованием кэша префиксов десериализации в MergeTree"}]}]} />

Включает кэширование метаданных столбцов из файловых префиксов при чтении с удалённых дисков в MergeTree.

<div id="merge_tree_use_prefixes_deserialization_thread_pool">
  ## merge\_tree\_use\_prefixes\_deserialization\_thread\_pool
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Новая настройка, управляющая использованием пула потоков для параллельной десериализации префиксов в MergeTree"}]}]} />

Включает использование пула потоков для параллельного чтения префиксов в Wide-частях MergeTree. Размер этого пула потоков задаётся настройкой сервера `max_prefixes_deserialization_thread_pool_size`.

<div id="merge_tree_use_v1_object_and_dynamic_serialization">
  ## merge\_tree\_use\_v1\_object\_and\_dynamic\_serialization
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Добавлена новая версия сериализации V2 для типов JSON и Dynamic"}]}]} />

Если включено, в MergeTree для типов JSON и Dynamic будет использоваться версия сериализации V1 вместо V2. Изменение этой настройки вступает в силу только после перезапуска сервера.

<div id="metrics_perf_events_enabled">
  ## metrics\_perf\_events\_enabled
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Если включено, некоторые события perf будут измеряться в ходе выполнения запросов.

<div id="metrics_perf_events_list">
  ## metrics\_perf\_events\_list
</div>

Список perf-метрик, разделённых запятыми, которые будут измеряться во время выполнения запросов. Пустое значение означает, что будут измеряться все события. Список доступных событий см. в PerfEventInfo в sources.

<div id="min_bytes_to_use_direct_io">
  ## min\_bytes\_to\_use\_direct\_io
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Минимальный объём данных, необходимый для использования прямого ввода-вывода при доступе к диску хранилища.

ClickHouse использует эту настройку при чтении данных из таблиц. Если общий объём всех данных, которые необходимо прочитать, превышает `min_bytes_to_use_direct_io` байт, ClickHouse читает данные с диска хранилища с опцией `O_DIRECT`.

Возможные значения:

* 0 — прямой ввод-вывод отключён.
* Положительное целое число.

<div id="min_bytes_to_use_mmap_io">
  ## min\_bytes\_to\_use\_mmap\_io
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Это экспериментальная настройка. Устанавливает минимальный размер для чтения больших файлов без копирования данных из ядра в пространство пользователя. Рекомендуемый порог — около 64 МБ, поскольку [mmap/munmap](https://en.wikipedia.org/wiki/Mmap) работают медленно. Имеет смысл только для больших файлов и помогает только если данные находятся в кэше страниц.

Возможные значения:

* Положительное целое число.
* 0 — большие файлы читаются только с копированием данных из ядра в пространство пользователя.

<div id="min_chunk_bytes_for_parallel_parsing">
  ## min\_chunk\_bytes\_for\_parallel\_parsing
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="10485760" />

* Тип: unsigned int
* Значение по умолчанию: 1 MiB

Минимальный размер фрагмента в байтах, разбираемого каждым потоком параллельно.

<div id="min_compress_block_size">
  ## min\_compress\_block\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="65536" />

Для таблиц [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree). Чтобы уменьшить задержку при обработке запросов, блок сжимается при записи следующей отметки, если его размер не менее `min_compress_block_size`. По умолчанию — 65 536.

Фактический размер блока, если объём несжатых данных меньше `max_compress_block_size`, будет не меньше этого значения и не меньше объёма данных для одной отметки.

Рассмотрим пример. Предположим, что при создании таблицы значение `index_granularity` было установлено в 8192.

Записывается столбец типа UInt32 (4 байта на значение). При записи 8192 строк общий объём составит 32 КБ данных. Поскольку min\_compress\_block\_size = 65,536, сжатый блок будет формироваться на каждые две отметки.

Записывается столбец URL типа String (в среднем 60 байт на значение). При записи 8192 строк средний объём будет чуть меньше 500 КБ данных. Поскольку это больше 65,536, сжатый блок будет формироваться для каждой отметки. В этом случае при чтении данных с диска в пределах одной отметки лишние данные не будут распаковываться.

<Note>
  Это настройка экспертного уровня, и вам не следует её менять, если вы только начинаете работать с ClickHouse.
</Note>

<div id="min_count_to_compile_aggregate_expression">
  ## min\_count\_to\_compile\_aggregate\_expression
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

Минимальное количество одинаковых агрегатных выражений, при котором запускается JIT-компиляция. Работает только при включенной настройке [compile\_aggregate\_expressions](#compile_aggregate_expressions).

Возможные значения:

* Положительное целое число.
* 0 — одинаковые агрегатные выражения всегда JIT-компилируются.

<div id="min_count_to_compile_expression">
  ## min\_count\_to\_compile\_expression
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

Минимальное количество выполнений одного и того же выражения, после которого оно компилируется.

<div id="min_count_to_compile_sort_description">
  ## min\_count\_to\_compile\_sort\_description
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

Количество одинаковых описаний сортировки, после которого выполняется их JIT-компиляция

<div id="min_execution_speed">
  ## min\_execution\_speed
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Минимальная скорость выполнения в строках в секунду. Проверяется на каждом блоке данных по истечении
[`timeout_before_checking_execution_speed`](/ru/reference/settings/session-settings#timeout_before_checking_execution_speed).
Если скорость выполнения ниже, генерируется исключение.

<div id="min_execution_speed_bytes">
  ## min\_execution\_speed\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Минимальное число байт, обрабатываемых в секунду. Проверяется на каждом блоке данных, когда истекает
[`timeout_before_checking_execution_speed`](/ru/reference/settings/session-settings#timeout_before_checking_execution_speed).
Если скорость выполнения ниже, генерируется исключение.

<div id="min_external_table_block_size_bytes">
  ## min\_external\_table\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="268402944" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "268402944"},{"label": "Объединяет блоки, передаваемые во внешнюю таблицу, до указанного размера в байтах, если их размер недостаточен."}]}]} />

Объединяет блоки, передаваемые во внешнюю таблицу, до указанного размера в байтах, если их размер недостаточен.

<div id="min_external_table_block_size_rows">
  ## min\_external\_table\_block\_size\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="1048449" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1048449"},{"label": "Объединяет блоки, передаваемые во внешнюю таблицу, до указанного размера в строках, если их размер недостаточен"}]}]} />

Объединяет блоки, передаваемые во внешнюю таблицу, до указанного размера в строках, если их размер недостаточен.

<div id="min_filtered_ratio_for_lazy_final">
  ## min\_filtered\_ratio\_for\_lazy\_final
</div>

<SettingsInfoBlock type="Float" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0.5"},{"label": "Новая настройка, задающая минимальную долю меток, которые должны быть отфильтрованы для применения ленивой оптимизации FINAL"}]}]} />

Минимальная доля меток, отфильтрованных в ходе анализа индексов для ленивой оптимизации FINAL. Если отфильтровано меньше этой доли меток, используется обычный FINAL. Значение 0 отключает эту проверку.

<div id="min_free_disk_bytes_to_perform_insert">
  ## min\_free\_disk\_bytes\_to\_perform\_insert
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Сохранять некоторый объём свободного места на диске для вставок, при этом по-прежнему разрешая временную запись."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Минимальный объём свободного места на диске в байтах, необходимый для выполнения вставки.

<div id="min_free_disk_ratio_to_perform_insert">
  ## min\_free\_disk\_ratio\_to\_perform\_insert
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Поддерживать некоторую долю свободного места на диске относительно общего объёма диска, не занимая её вставками и при этом по-прежнему разрешая временную запись."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Минимальная доля свободного места на диске для выполнения вставки.

<div id="min_free_disk_space_for_temporary_data">
  ## min\_free\_disk\_space\_for\_temporary\_data
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Минимальный объём свободного места на диске, который должен оставаться при записи временных данных, используемых для внешней сортировки и агрегации.

<div id="min_hit_rate_to_use_consecutive_keys_optimization">
  ## min\_hit\_rate\_to\_use\_consecutive\_keys\_optimization
</div>

<SettingsInfoBlock type="Float" default_value="0.5" />

Минимальная частота попаданий в кэш, используемый для оптимизации последовательных ключей при агрегации, чтобы она оставалась включенной

<div id="min_insert_block_size_bytes">
  ## min\_insert\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="268402944" />

Минимальный размер блоков (в байтах), формируемых для вставки в таблицу.

Этот параметр работает вместе с `min_insert_block_size_rows` и управляет формированием блоков в тех же контекстах (при разборе формата и в операциях INSERT). Подробную информацию о том, когда и как применяются эти параметры, см. в описании `min_insert_block_size_rows`.

Возможные значения:

* Положительное целое число.
* 0 — параметр не участвует в формировании блоков.

<div id="min_insert_block_size_bytes_for_materialized_views">
  ## min\_insert\_block\_size\_bytes\_for\_materialized\_views
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Задает минимальное количество байт в block, который может быть вставлен в таблицу запросом `INSERT`. Блоки меньшего размера объединяются в более крупные. Эта настройка применяется только к block, вставляемым в [materialized view](/ru/reference/statements/create/view). Настраивая этот параметр, вы управляете объединением block при отправке в materialized view и избегаете чрезмерного использования памяти.

Возможные значения:

* Любое положительное целое число.
* 0 — объединение отключено.

**См. также**

* [min\_insert\_block\_size\_bytes](#min_insert_block_size_bytes)

<div id="min_insert_block_size_rows">
  ## min\_insert\_block\_size\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="1048449" />

Минимальный размер блоков (в строках), формируемых для вставки в таблицу.

Этот параметр управляет формированием блоков в двух контекстах:

1. Разбор форматов: Когда сервер разбирает построчные форматы ввода (CSV, TSV, JSONEachRow и т. д.) через любой интерфейс (HTTP, clickhouse-client со встроенными данными, gRPC, PostgreSQL wire protocol), блоки формируются, когда:

   * Достигнуты оба значения min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes, OR
   * Достигнуто либо значение max\_insert\_block\_size\_rows OR max\_insert\_block\_size\_bytes

   Примечание: При использовании clickhouse-client или clickhouse-local для чтения из файла клиент сам разбирает данные, и этот параметр применяется на стороне клиента.

2. Операции INSERT: Во время запросов INSERT и когда данные проходят через materialized view, поведение этого параметра зависит от `use_strict_insert_block_limits`:

   * Когда включен: Блоки формируются, когда:
     * Минимальные пороги (AND): достигнуты оба значения min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes
     * Максимальные пороги (OR): достигнуто либо значение max\_insert\_block\_size\_rows OR max\_insert\_block\_size\_bytes

   * Когда отключен (по умолчанию): Блоки формируются, когда достигнуто min\_insert\_block\_size\_rows OR min\_insert\_block\_size\_bytes. Параметры max\_insert\_block\_size не применяются.

Возможные значения:

* Положительное целое число.
* 0 — параметр не участвует в формировании блоков.

<div id="min_insert_block_size_rows_for_materialized_views">
  ## min\_insert\_block\_size\_rows\_for\_materialized\_views
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Задаёт минимальное число строк в блоке, который может быть вставлен в таблицу запросом `INSERT`. Блоки меньшего размера объединяются в более крупные. Эта настройка применяется только к блокам, вставляемым в [materialized view](/ru/reference/statements/create/view). Изменяя эту настройку, вы управляете объединением блоков при записи в materialized view и избегаете чрезмерного использования памяти.

Возможные значения:

* Любое положительное целое число.
* 0 — объединение отключено.

**См. также**

* [min\_insert\_block\_size\_rows](#min_insert_block_size_rows)

<div id="min_joined_block_size_bytes">
  ## min\_joined\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="524288" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "524288"},{"label": "Новая настройка."}]}]} />

Минимальный размер в байтах для входных и выходных блоков JOIN (если это поддерживается алгоритмом JOIN). Небольшие блоки будут объединены. 0 означает отсутствие ограничений.

<div id="min_joined_block_size_rows">
  ## min\_joined\_block\_size\_rows
</div>

<SettingsInfoBlock type="UInt64" default_value="65409" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "65409"},{"label": "Новая настройка"}]}]} />

Минимальный размер входных и выходных блоков JOIN в строках (если алгоритм JOIN это поддерживает). Маленькие блоки будут укрупнены. 0 означает отсутствие ограничений.

<div id="min_os_cpu_wait_time_ratio_to_throw">
  ## min\_os\_cpu\_wait\_time\_ratio\_to\_throw
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Значения настройки были изменены и бэкпортированы в 25.4"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "новая настройка"}]}]} />

Минимальное соотношение между временем ожидания CPU ОС (метрика OSCPUWaitMicroseconds) и временем занятости (метрика OSCPUVirtualTimeMicroseconds), при котором запросы могут начать отклоняться. Для вычисления вероятности используется линейная интерполяция между минимальным и максимальным соотношением; в этой точке вероятность равна 0.

<div id="min_outstreams_per_resize_after_split">
  ## min\_outstreams\_per\_resize\_after\_split
</div>

<SettingsInfoBlock type="UInt64" default_value="24" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "24"},{"label": "Новая настройка."}]}]} />

Задаёт минимальное количество выходных потоков процессора `Resize` или `StrictResize` после выполнения разделения при генерации конвейера. Если итоговое количество потоков меньше этого значения, операция разделения не выполняется.

<div id="what-is-a-resize-node">
  ### Что такое узел Resize
</div>

Узел `Resize` — это процессор в конвейере запроса, который изменяет количество потоков данных, проходящих через конвейер. Он может как увеличивать, так и уменьшать число потоков, чтобы сбалансировать рабочую нагрузку между несколькими потоками выполнения или процессорами. Например, если запросу требуется больший параллелизм, узел `Resize` может разделить один поток на несколько. И наоборот, он может объединить несколько потоков в меньшее число, чтобы укрупнить обработку данных.

Узел `Resize` обеспечивает равномерное распределение данных между потоками, сохраняя структуру блоков данных. Это помогает оптимизировать использование ресурсов и повысить производительность запроса.

<div id="why-the-resize-node-needs-to-be-split">
  ### Почему узел Resize нужно разделить
</div>

Во время выполнения конвейера за `ExecutingGraph::Node::status_mutex` центрального узла `Resize` возникает высокая конкуренция, особенно в средах с большим числом ядер. Это приводит к следующему:

1. Растёт задержка при выполнении ExecutingGraph::updateNode, что напрямую влияет на производительность запросов.
2. Избыточные такты CPU тратятся на конкуренцию за spin-lock (`native_queued_spin_lock_slowpath`), что снижает эффективность.
3. Снижается загрузка CPU, что ограничивает параллелизм и пропускную способность.

<div id="how-the-resize-node-gets-split">
  ### Как разделяется узел Resize
</div>

1. Проверяется количество выходных потоков, чтобы убедиться, что разделение возможно: число выходных потоков у каждого процессора после разделения соответствует пороговому значению `min_outstreams_per_resize_after_split` или превышает его.
2. Узел `Resize` делится на более мелкие узлы `Resize` с одинаковым количеством портов, каждый из которых обрабатывает часть входных и выходных потоков.
3. Каждая группа обрабатывается независимо, что уменьшает конкуренцию за блокировку.

<div id="splitting-resize-node-with-arbitrary-inputsoutputs">
  ### Разбиение узла Resize с произвольным числом входов/выходов
</div>

В некоторых случаях, когда количество входов/выходов не кратно числу узлов `Resize`, на которые выполняется разбиение, часть входов подключается к `NullSource`, а часть выходов — к `NullSink`. Это позволяет выполнить разбиение без влияния на общий поток данных.

<div id="purpose-of-the-setting">
  ### Назначение настройки
</div>

Настройка `min_outstreams_per_resize_after_split` гарантирует, что разделение узлов `Resize` будет оправданным и не приведет к созданию слишком малого числа потоков, что может снизить эффективность параллельной обработки. Задавая минимальное количество выходных потоков, эта настройка помогает поддерживать баланс между параллелизмом и накладными расходами, оптимизируя выполнение запроса в сценариях, где используются разделение и слияние потоков.

<div id="disabling-the-setting">
  ### Отключение настройки
</div>

Чтобы отключить разделение узлов `Resize`, установите для этой настройки значение 0. Это предотвратит разделение узлов `Resize` при генерации конвейера, позволяя им сохранять исходную структуру без деления на более мелкие узлы.

<div id="min_table_rows_to_use_projection_index">
  ## min\_table\_rows\_to\_use\_projection\_index
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1000000"},{"label": "новая настройка"}]}]} />

Если оценочное количество строк для чтения из таблицы больше или равно этому порогу, ClickHouse попытается использовать индекс проекции при выполнении запроса.

<div id="mongodb_throw_on_unsupported_query">
  ## mongodb\_throw\_on\_unsupported\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "1"},{"label": "Новая настройка"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Если параметр включен, таблицы MongoDB будут возвращать ошибку, если не удается сформировать запрос MongoDB. В противном случае ClickHouse читает всю таблицу и обрабатывает ее локально. Этот параметр не применяется, если 'allow\_experimental\_analyzer=0'.

<div id="move_all_conditions_to_prewhere">
  ## move\_all\_conditions\_to\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Переносить все подходящие условия из WHERE в PREWHERE

<div id="move_primary_key_columns_to_end_of_prewhere">
  ## move\_primary\_key\_columns\_to\_end\_of\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Перемещает условия PREWHERE, содержащие столбцы первичного ключа, в конец цепочки AND. Вероятно, эти условия уже учитываются при анализе первичного ключа и потому мало влияют на фильтрацию PREWHERE.

<div id="multiple_joins_try_to_keep_original_names">
  ## multiple\_joins\_try\_to\_keep\_original\_names
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Не добавлять псевдонимы в список выражений верхнего уровня при переписывании нескольких JOIN

<div id="mutations_execute_nondeterministic_on_initiator">
  ## mutations\_execute\_nondeterministic\_on\_initiator
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Если `true`, константные недетерминированные функции (например, `now()`) выполняются на инициаторе и заменяются литералами в запросах `UPDATE` и `DELETE`. Это помогает сохранять синхронизацию данных между репликами при выполнении мутаций с константными недетерминированными функциями. Значение по умолчанию: `false`.

<div id="mutations_execute_subqueries_on_initiator">
  ## mutations\_execute\_subqueries\_on\_initiator
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Если установлено значение `true`, скалярные подзапросы выполняются на узле-инициаторе и заменяются литеральными значениями в запросах `UPDATE` и `DELETE`. Значение по умолчанию: `false`.

<div id="mutations_max_literal_size_to_replace">
  ## mutations\_max\_literal\_size\_to\_replace
</div>

<SettingsInfoBlock type="UInt64" default_value="16384" />

Максимальный размер сериализованного литерала в байтах, заменяемого в запросах `UPDATE` и `DELETE`. Действует только при включении хотя бы одной из двух настроек выше. Значение по умолчанию: 16384 (16 KiB).

<div id="mutations_sync">
  ## mutations\_sync
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Позволяет выполнять запросы `ALTER TABLE ... UPDATE|DELETE|MATERIALIZE INDEX|MATERIALIZE PROJECTION|MATERIALIZE COLUMN|MATERIALIZE STATISTICS` ([мутации](/ru/reference/statements/alter#mutations)) синхронно.

Возможные значения:

| Значение | Описание                                                                                                                                                                           |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `0`      | Мутации выполняются асинхронно.                                                                                                                                                    |
| `1`      | Запрос ожидает завершения всех мутаций на текущем сервере.                                                                                                                         |
| `2`      | Запрос ожидает завершения всех мутаций на всех репликах (если они есть).                                                                                                           |
| `3`      | Запрос ожидает завершения мутаций только на активных репликах. Поддерживается только для `SharedMergeTree`. Для `ReplicatedMergeTree` ведет себя так же, как `mutations_sync = 2`. |

<div id="mysql_datatypes_support_level">
  ## mysql\_datatypes\_support\_level
</div>

<SettingsInfoBlock type="MySQLDataTypesSupport" default_value="decimal,datetime64,date2Date32" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "decimal,datetime64,date2Date32"},{"label": "Современные сопоставления типов MySQL включены по умолчанию."}]}]} />

Определяет, как типы MySQL преобразуются в соответствующие типы ClickHouse. Это список значений, разделенных запятыми, в любой комбинации: `decimal`, `datetime64`, `date2Date32` или `date2String`. Все современные сопоставления (`decimal`, `datetime64`, `date2Date32`) включены по умолчанию.

* `decimal`: преобразовывать типы `NUMERIC` и `DECIMAL` в `Decimal`, если это позволяет precision.
* `datetime64`: преобразовывать типы `DATETIME` и `TIMESTAMP` в `DateTime64` вместо `DateTime`, если precision не равна `0`.
* `date2Date32`: преобразовывать `DATE` в `Date32` вместо `Date`. Имеет приоритет над `date2String`.
* `date2String`: преобразовывать `DATE` в `String` вместо `Date`. Переопределяется параметром `datetime64`.

<div id="mysql_map_fixed_string_to_text_in_show_columns">
  ## mysql\_map\_fixed\_string\_to\_text\_in\_show\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Упрощает настройку подключения ClickHouse к BI-инструментам."}]}]} />

Если параметр включен, тип данных ClickHouse [FixedString](/ru/reference/data-types/fixedstring) будет отображаться как `TEXT` в команде [SHOW COLUMNS](/ru/reference/statements/show#show_columns).

Действует только при подключении через протокол MySQL.

* 0 - Использовать `BLOB`.
* 1 - Использовать `TEXT`.

<div id="mysql_map_string_to_text_in_show_columns">
  ## mysql\_map\_string\_to\_text\_in\_show\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Упрощает настройку подключения ClickHouse к BI-инструментам."}]}]} />

Если параметр включен, тип данных ClickHouse [String](/ru/reference/data-types/string) будет отображаться как `TEXT` в [SHOW COLUMNS](/ru/reference/statements/show#show_columns).

Действует только при подключении через протокол MySQL.

* 0 - Использовать `BLOB`.
* 1 - Использовать `TEXT`.

<div id="mysql_max_rows_to_insert">
  ## mysql\_max\_rows\_to\_insert
</div>

<SettingsInfoBlock type="UInt64" default_value="65536" />

Максимальное количество строк при батчевой вставке в MySQL для движка MySQL

<div id="network_compression_method">
  ## network\_compression\_method
</div>

<SettingsInfoBlock type="String" default_value="LZ4" />

Кодек для сжатия обмена данными между клиентом и сервером, а также между серверами.

Возможные значения:

* `NONE` — без сжатия.
* `LZ4` — использовать кодек LZ4.
* `LZ4HC` — использовать кодек LZ4HC.
* `ZSTD` — использовать кодек ZSTD.

**См. также**

* [network\_zstd\_compression\_level](#network_zstd_compression_level)

<div id="network_zstd_compression_level">
  ## network\_zstd\_compression\_level
</div>

<SettingsInfoBlock type="Int64" default_value="1" />

Задает уровень сжатия ZSTD. Используется только если параметр [network\_compression\_method](#network_compression_method) установлен в значение `ZSTD`.

Возможные значения:

* Положительное целое число от 1 до 15.

<div id="normalize_function_names">
  ## normalize\_function\_names
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.3"},{"label": "1"},{"label": "Нормализует имена функций к их каноническому виду; это требовалось для маршрутизации запросов к проекциям"}]}]} />

Нормализует имена функций к их каноническому виду

<div id="number_of_mutations_to_delay">
  ## number\_of\_mutations\_to\_delay
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Если в таблице, к которой применяются мутации, есть как минимум столько незавершённых мутаций, выполнение мутаций этой таблицы искусственно замедляется. 0 — отключено

<div id="number_of_mutations_to_throw">
  ## number\_of\_mutations\_to\_throw
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Если в изменённой таблице есть как минимум столько незавершённых мутаций, сгенерировать исключение 'Too many mutations ...'. 0 — отключено

<div id="odbc_bridge_connection_pool_size">
  ## odbc\_bridge\_connection\_pool\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="16" />

Размер пула соединений для каждой строки настроек подключения в мосте ODBC.

<div id="odbc_bridge_use_connection_pooling">
  ## odbc\_bridge\_use\_connection\_pooling
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать пул соединений в мосте ODBC. Если значение равно false, каждый раз создаётся новое соединение.

<div id="offset">
  ## offset
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Задаёт количество строк, которые нужно пропустить, прежде чем запрос начнёт возвращать строки. Корректирует смещение, заданное предложением [OFFSET](/ru/reference/statements/select/offset), поэтому эти два значения суммируются.

Возможные значения:

* 0 — строки не пропускаются.
* Положительное целое число.

**Пример**

Входная таблица:

```sql theme={null}
CREATE TABLE test (i UInt64) ENGINE = MergeTree() ORDER BY i;
INSERT INTO test SELECT number FROM numbers(500);
```

Запрос:

```sql theme={null}
SET limit = 5;
SET offset = 7;
SELECT * FROM test LIMIT 10 OFFSET 100;
```

Результат:

```text theme={null}
┌───i─┐
│ 107 │
│ 108 │
│ 109 │
└─────┘
```

<div id="opentelemetry_start_keeper_trace_probability">
  ## opentelemetry\_start\_keeper\_trace\_probability
</div>

<SettingsInfoBlock type="FloatAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "auto"},{"label": "новая настройка"}]}]} />

Вероятность запуска трассировки для запроса ZooKeeper — независимо от наличия родительской трассировки.

Возможные значения:

* 'auto' - Эквивалентно настройке opentelemetry\_start\_trace\_probability
* 0 — Трассировка отключена
* от 0 до 1 — Вероятность (например, 1.0 = всегда включена)

<div id="opentelemetry_start_trace_probability">
  ## opentelemetry\_start\_trace\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

Задает вероятность того, что ClickHouse сможет начать трассировку для выполняемых запросов (если не передан родительский [контекст трассировки](https://www.w3.org/TR/trace-context/)).

Возможные значения:

* 0 — трассировка для всех выполняемых запросов отключена (если не передан родительский контекст трассировки).
* Положительное число с плавающей точкой в диапазоне \[0..1]. Например, если значение настройки равно `0,5`, ClickHouse в среднем может начать трассировку для половины запросов.
* 1 — трассировка для всех выполняемых запросов включена.

<div id="opentelemetry_trace_cpu_scheduling">
  ## opentelemetry\_trace\_cpu\_scheduling
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Новая настройка для трассировки возможности `cpu_slot_preemption`."}]}]} />

Собирать спаны OpenTelemetry для вытесняющего планирования CPU рабочих нагрузок.

<div id="opentelemetry_trace_processors">
  ## opentelemetry\_trace\_processors
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Собирать OpenTelemetry-спаны для процессоров.

<div id="optimize_aggregation_in_order">
  ## optimize\_aggregation\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает оптимизацию [GROUP BY](/ru/reference/statements/select/group-by) в запросах [SELECT](/ru/reference/statements/select) при агрегировании данных в порядке сортировки в таблицах [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree).

Возможные значения:

* 0 — оптимизация `GROUP BY` отключена.
* 1 — оптимизация `GROUP BY` включена.

**См. также**

* [Оптимизация GROUP BY](/ru/reference/statements/select/group-by#group-by-optimization-depending-on-table-sorting-key)

<div id="optimize_aggregators_of_group_by_keys">
  ## optimize\_aggregators\_of\_group\_by\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Устраняет агрегатные функции min/max/any/anyLast для ключей GROUP BY в секции SELECT

<div id="optimize_and_compare_chain">
  ## optimize\_and\_compare\_chain
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Добавляет сравнения с константами в цепочки AND, чтобы улучшить фильтрацию. Поддерживаются операторы `<`, `<=`, `>`, `>=`, `=` и их сочетания. Например, `(a < b) AND (b < c) AND (c < 5)` будет преобразовано в `(a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5)`.

<div id="optimize_append_index">
  ## optimize\_append\_index
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Используйте [ограничения](/ru/reference/statements/create/table#constraints), чтобы добавить условие индекса. Значение по умолчанию — `false`.

Возможные значения:

* true, false

<div id="optimize_arithmetic_operations_in_aggregate_functions">
  ## optimize\_arithmetic\_operations\_in\_aggregate\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Вынести арифметические операции за пределы агрегатных функций

<div id="optimize_const_name_size">
  ## optimize\_const\_name\_size
</div>

<SettingsInfoBlock type="Int64" default_value="256" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "256"},{"label": "Заменять скаляром и использовать хеш в качестве имени для больших констант (размер оценивается по длине имени)"}]}]} />

Заменять скаляром и использовать хеш в качестве имени для больших констант (размер оценивается по длине имени).

Возможные значения:

* положительное целое число — максимальная длина имени,
* 0 — всегда,
* отрицательное целое число — никогда.

<div id="optimize_count_from_files">
  ## optimize\_count\_from\_files
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию подсчета числа строк в файлах различных входных форматов. Применяется к табличным функциям/движкам `file`/`s3`/`url`/`hdfs`/`azureBlobStorage`.

Возможные значения:

* 0 — Оптимизация отключена.
* 1 — Оптимизация включена.

<div id="optimize_dictget_tuple_element">
  ## optimize\_dictget\_tuple\_element
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Переписывает tupleElement(dictGet(..., tuple_of_attrs, ...), N) в вызов dictGet для одного атрибута."}]}]} />

Переписывает `tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2)` в `dictGet('dict', 'b', key)`, чтобы избежать извлечения ненужных атрибутов словаря. Поддерживает позиционный (`.1`, `.2`, ...) и именованный (`.b`) доступ, а также применяется к `dictGetOrDefault`, когда аргумент значения по умолчанию представляет собой константный кортеж или `tuple(...)` из констант.

<div id="optimize_distinct_in_order">
  ## optimize\_distinct\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает оптимизацию DISTINCT, если некоторые столбцы в DISTINCT образуют префикс сортировки. Например, префикс ключа сортировки в MergeTree или в операторе ORDER BY.

<div id="optimize_distributed_group_by_sharding_key">
  ## optimize\_distributed\_group\_by\_sharding\_key
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Оптимизирует запросы `GROUP BY sharding_key`, избегая затратной агрегации на сервере-инициаторе (что снижает использование памяти запросом на сервере-инициаторе).

Поддерживаются следующие типы запросов (а также любые их комбинации):

* `SELECT DISTINCT [..., ]sharding_key[, ...] FROM dist`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...]`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY x`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1`
* `SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x`

Следующие типы запросов не поддерживаются (поддержка некоторых из них может быть добавлена позже):

* `SELECT ... GROUP BY sharding_key[, ...] WITH TOTALS`
* `SELECT ... GROUP BY sharding_key[, ...] WITH ROLLUP`
* `SELECT ... GROUP BY sharding_key[, ...] WITH CUBE`
* `SELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1`

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

См. также:

* [distributed\_group\_by\_no\_merge](#distributed_group_by_no_merge)
* [distributed\_push\_down\_limit](#distributed_push_down_limit)
* [optimize\_skip\_unused\_shards](#optimize_skip_unused_shards)

<Note>
  Сейчас для этого требуется `optimize_skip_unused_shards` (это связано с тем, что в будущем данная настройка может быть включена по умолчанию, и она будет корректно работать, только если данные были вставлены через distributed таблицу, то есть распределены в соответствии с `sharding_key`).
</Note>

<div id="optimize_dry_run_check_part">
  ## optimize\_dry\_run\_check\_part
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Если настройка включена, `OPTIMIZE ... DRY RUN` проверяет итоговую слитую часть с помощью `checkDataPart`. Если проверка не проходит, генерируется исключение.

<div id="optimize_empty_string_comparisons">
  ## optimize\_empty\_string\_comparisons
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "Новая настройка."}]}]} />

Преобразует выражения вида col = '' или '' = col в empty(col), а col != '' или '' != col — в notEmpty(col),
только если col имеет тип String или FixedString.

<div id="optimize_extract_common_expressions">
  ## optimize\_extract\_common\_expressions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Оптимизация выражений WHERE, PREWHERE, ON, HAVING и QUALIFY путём вынесения общих выражений из дизъюнкции конъюнкций."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Добавлена настройка для оптимизации выражений WHERE, PREWHERE, ON, HAVING и QUALIFY путём вынесения общих выражений из дизъюнкции конъюнкций."}]}]} />

Разрешает выносить общие выражения из дизъюнкций в выражениях WHERE, PREWHERE, ON, HAVING и QUALIFY. Логическое выражение вида `(A AND B) OR (A AND C)` можно переписать как `A AND (B OR C)`, что может помочь задействовать:

* индексы в простых выражениях фильтрации
* оптимизацию преобразования CROSS JOIN в INNER JOIN

<div id="optimize_functions_to_subcolumns">
  ## optimize\_functions\_to\_subcolumns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "1"},{"label": "Настройка включена по умолчанию"}]}]} />

Включает или отключает оптимизацию, при которой некоторые функции преобразуются в чтение подстолбцов. Это уменьшает объем считываемых данных.

Могут быть преобразованы следующие функции:

* [length](/ru/reference/functions/regular-functions/array-functions#length) для чтения подстолбца [size0](/ru/reference/data-types/array#array-size).
* [empty](/ru/reference/functions/regular-functions/array-functions#empty) для чтения подстолбца [size0](/ru/reference/data-types/array#array-size).
* [notEmpty](/ru/reference/functions/regular-functions/array-functions#notEmpty) для чтения подстолбца [size0](/ru/reference/data-types/array#array-size).
* [isNull](/ru/reference/functions/regular-functions/functions-for-nulls#isNull) для чтения подстолбца [null](/ru/reference/data-types/nullable#finding-null).
* [isNotNull](/ru/reference/functions/regular-functions/functions-for-nulls#isNotNull) для чтения подстолбца [null](/ru/reference/data-types/nullable#finding-null).
* [count](/ru/reference/functions/aggregate-functions/count) для чтения подстолбца [null](/ru/reference/data-types/nullable#finding-null).
* [mapKeys](/ru/reference/functions/regular-functions/tuple-map-functions#mapKeys) для чтения подстолбца [keys](/ru/reference/data-types/map#reading-subcolumns-of-map).
* [mapValues](/ru/reference/functions/regular-functions/tuple-map-functions#mapValues) для чтения подстолбца [values](/ru/reference/data-types/map#reading-subcolumns-of-map).

Возможные значения:

* 0 — Оптимизация отключена.
* 1 — Оптимизация включена.

<div id="optimize_group_by_constant_keys">
  ## optimize\_group\_by\_constant\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.9"},{"label": "1"},{"label": "Оптимизация GROUP BY по константным ключам включена по умолчанию"}]}]} />

Оптимизирует GROUP BY, когда все ключи в блоке являются константами

<div id="optimize_group_by_function_keys">
  ## optimize\_group\_by\_function\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Устраняет функции от других ключей в секции GROUP BY

<div id="optimize_if_chain_to_multiif">
  ## optimize\_if\_chain\_to\_multiif
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Заменяет цепочки if(cond1, then1, if(cond2, ...)) на multiIf. В настоящее время для числовых типов это не дает преимуществ.

<div id="optimize_if_transform_strings_to_enum">
  ## optimize\_if\_transform\_strings\_to\_enum
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Заменяет аргументы типа String в If и Transform на enum. По умолчанию отключено, так как может привести к несогласованным изменениям в распределённом запросе, из-за чего он завершится с ошибкой.

<div id="optimize_injective_functions_in_group_by">
  ## optimize\_injective\_functions\_in\_group\_by
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "Заменяет инъективные функции на их аргументы в секции GROUP BY в анализаторе"}]}]} />

Заменяет инъективные функции на их аргументы в секции GROUP BY

<div id="optimize_injective_functions_inside_uniq">
  ## optimize\_injective\_functions\_inside\_uniq
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Удаляет инъективные одноаргументные функции внутри функций uniq\*().

<div id="optimize_inverse_dictionary_lookup">
  ## optimize\_inverse\_dictionary\_lookup
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Позволяет избежать повторных обратных обращений к словарю за счёт более быстрых обращений к предварительно вычисленному набору возможных значений ключей.

<div id="optimize_min_equality_disjunction_chain_length">
  ## optimize\_min\_equality\_disjunction\_chain\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

Минимальная длина выражения `expr = x1 OR ... expr = xN` для оптимизаци

<div id="optimize_min_inequality_conjunction_chain_length">
  ## optimize\_min\_inequality\_conjunction\_chain\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

Минимальная длина выражения `expr <> x1 AND ... expr <> xN` для оптимизаци

<div id="optimize_move_to_prewhere">
  ## optimize\_move\_to\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает автоматическую оптимизацию [PREWHERE](/ru/reference/statements/select/prewhere) в запросах [SELECT](/ru/reference/statements/select).

Работает только для [таблиц семейства \*MergeTree](/ru/reference/engines/table-engines/mergetree-family).

Возможные значения:

* 0 — автоматическая оптимизация `PREWHERE` отключена.
* 1 — автоматическая оптимизация `PREWHERE` включена.

<div id="optimize_move_to_prewhere_if_final">
  ## optimize\_move\_to\_prewhere\_if\_final
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает автоматическую оптимизацию [PREWHERE](/ru/reference/statements/select/prewhere) в запросах [SELECT](/ru/reference/statements/select) с модификатором [FINAL](/ru/reference/statements/select/from#final-modifier).

Работает только для [таблиц семейства \*MergeTree](/ru/reference/engines/table-engines/mergetree-family).

Возможные значения:

* 0 — Автоматическая оптимизация `PREWHERE` в запросах `SELECT` с модификатором `FINAL` отключена.
* 1 — Автоматическая оптимизация `PREWHERE` в запросах `SELECT` с модификатором `FINAL` включена.

**См. также**

* настройка [optimize\_move\_to\_prewhere](#optimize_move_to_prewhere)

<div id="optimize_multiif_to_if">
  ## optimize\_multiif\_to\_if
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Заменяет 'multiIf' с одним условием на 'if'.

<div id="optimize_normalize_count_variants">
  ## optimize\_normalize\_count\_variants
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.3"},{"label": "1"},{"label": "По умолчанию преобразует агрегатные функции, которые семантически эквивалентны count(), в count()"}]}]} />

Преобразует агрегатные функции, которые семантически эквивалентны count(), в count().

<div id="optimize_on_insert">
  ## optimize\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "По умолчанию включает оптимизацию данных при INSERT для удобства пользователей"}]}]} />

Включает или отключает преобразование данных перед вставкой, как если бы для этого блока было выполнено слияние (в соответствии с движком таблицы).

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

**Пример**

Разница между включенным и отключенным режимами:

Запрос:

```sql theme={null}
SET optimize_on_insert = 1;

CREATE TABLE test1 (`FirstTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY FirstTable;

INSERT INTO test1 SELECT number % 2 FROM numbers(5);

SELECT * FROM test1;

SET optimize_on_insert = 0;

CREATE TABLE test2 (`SecondTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY SecondTable;

INSERT INTO test2 SELECT number % 2 FROM numbers(5);

SELECT * FROM test2;
```

Результат:

```text theme={null}
┌─FirstTable─┐
│          0 │
│          1 │
└────────────┘

┌─SecondTable─┐
│           0 │
│           0 │
│           0 │
│           1 │
│           1 │
└─────────────┘
```

Обратите внимание, что этот параметр влияет на поведение [materialized view](/ru/reference/statements/create/view#materialized-view).

<div id="optimize_or_like_chain">
  ## optimize\_or\_like\_chain
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Оптимизирует несколько выражений OR LIKE в multiMatchAny. Эту оптимизацию не следует включать по умолчанию, поскольку в некоторых случаях она мешает анализу индексов.

<div id="optimize_qbit_distance_function_reads">
  ## optimize\_qbit\_distance\_function\_reads
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "новая настройка"}]}]} />

Заменяет функции расстояния для типа `QBit` на эквивалентные, которые считывают из хранилища только столбцы, необходимые для вычисления.

<div id="optimize_read_in_order">
  ## optimize\_read\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает оптимизацию [ORDER BY](/ru/reference/statements/select/order-by#optimization-of-data-reading) в запросах [SELECT](/ru/reference/statements/select) при чтении данных из таблиц [MergeTree](/ru/reference/engines/table-engines/mergetree-family/mergetree).

Возможные значения:

* 0 — оптимизация `ORDER BY` отключена.
* 1 — оптимизация `ORDER BY` включена.

**См. также**

* [предложение ORDER BY](/ru/reference/statements/select/order-by#optimization-of-data-reading)

<div id="optimize_redundant_functions_in_order_by">
  ## optimize\_redundant\_functions\_in\_order\_by
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Удаляет функции из ORDER BY, если их аргументы также указаны в ORDER BY

<div id="optimize_respect_aliases">
  ## optimize\_respect\_aliases
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Если установлено значение true, будут учитываться псевдонимы в WHERE/GROUP BY/ORDER BY, что поможет при отсечении партиций/использовании вторичных индексов/optimize\_aggregation\_in\_order/optimize\_read\_in\_order/optimize\_trivial\_count

<div id="optimize_rewrite_aggregate_function_with_if">
  ## optimize\_rewrite\_aggregate\_function\_with\_if
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Переписывает агрегатные функции, у которых в качестве аргумента используется выражение `if`, если они логически эквивалентны.
Например, `avg(if(cond, col, null))` можно переписать как `avgOrNullIf(cond, col)`. Это может повысить производительность.

<Note>
  Поддерживается только при использовании анализатора (`enable_analyzer = 1`).
</Note>

<div id="optimize_rewrite_array_exists_to_has">
  ## optimize\_rewrite\_array\_exists\_to\_has
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "По умолчанию включает оптимизацию переписывания arrayExists в has, поскольку перед переписыванием теперь проверяется совместимость типов."}]}]} />

Переписывает функции arrayExists() в has(), когда они логически эквивалентны. Например, arrayExists(x -> x = 1, arr) можно переписать как has(arr, 1)

<div id="optimize_rewrite_like_perfect_affix">
  ## optimize\_rewrite\_like\_perfect\_affix
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "новая настройка"}]}]} />

Переписывает выражения LIKE с точным префиксом или суффиксом (например, `col LIKE 'ClickHouse%'`) в вызовы функций startsWith или endsWith (например, `startsWith(col, 'ClickHouse')`).

<div id="optimize_rewrite_regexp_functions">
  ## optimize\_rewrite\_regexp\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Преобразует функции, связанные с регулярными выражениями, в более простые и эффективные формы

<div id="optimize_rewrite_sum_if_to_count_if">
  ## optimize\_rewrite\_sum\_if\_to\_count\_if
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "Доступно только для анализатора, где это работает корректно"}]}]} />

Переписывать функции sumIf() и sum(if()) в функцию countIf(), если они логически эквивалентны

<div id="optimize_skip_merged_partitions">
  ## optimize\_skip\_merged\_partitions
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает оптимизацию для запроса [OPTIMIZE TABLE ... FINAL](/ru/reference/statements/optimize), если есть только одна часть данных с `level > 0` и срок TTL для неё не истёк.

* `OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1`

По умолчанию запрос `OPTIMIZE TABLE ... FINAL` переписывает эту часть, даже если она единственная.

Возможные значения:

* 1 - Включить оптимизацию.
* 0 - Отключить оптимизацию.

<div id="optimize_skip_unused_shards">
  ## optimize\_skip\_unused\_shards
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает пропуск неиспользуемых сегментов для запросов [SELECT](/ru/reference/statements/select), в которых условие по ключу сегментирования задано в `WHERE/PREWHERE`, а также активирует связанные оптимизации для распределённых запросов (например, агрегацию по ключу сегментирования).

<Note>
  Предполагается, что данные распределены по ключу сегментирования, иначе запрос вернёт некорректный результат.
</Note>

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="optimize_skip_unused_shards_limit">
  ## optimize\_skip\_unused\_shards\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

Ограничение на количество значений ключа сегментирования; при достижении этого предела `optimize_skip_unused_shards` отключается.

Слишком большое количество значений может потребовать значительных ресурсов на обработку, при этом польза от этого сомнительна, поскольку, если в `IN (...)` у вас очень много значений, то, скорее всего, запрос всё равно будет отправлен во все сегменты.

<div id="optimize_skip_unused_shards_nesting">
  ## optimize\_skip\_unused\_shards\_nesting
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Управляет тем, до какого уровня вложенности распределённого запроса применяется [`optimize_skip_unused_shards`](#optimize_skip_unused_shards) (и потому по-прежнему требует [`optimize_skip_unused_shards`](#optimize_skip_unused_shards)); это относится к случаю, когда таблица `Distributed` обращается к другой таблице `Distributed`.

Возможные значения:

* 0 — Отключено, `optimize_skip_unused_shards` работает всегда.
* 1 — Включает `optimize_skip_unused_shards` только для первого уровня.
* 2 — Включает `optimize_skip_unused_shards` до второго уровня.

<div id="optimize_skip_unused_shards_rewrite_in">
  ## optimize\_skip\_unused\_shards\_rewrite\_in
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Переписывает `IN` в запросе для удалённых сегментов, чтобы исключить значения, которые не относятся к сегменту (требуется `optimize_skip_unused_shards`).

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="optimize_sorting_by_input_stream_properties">
  ## optimize\_sorting\_by\_input\_stream\_properties
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Оптимизирует сортировку с учетом свойств сортировки входного потока

<div id="optimize_substitute_columns">
  ## optimize\_substitute\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Использовать [ограничения](/ru/reference/statements/create/table#constraints) для подстановки столбцов. Значение по умолчанию — `false`.

Возможные значения:

* true, false

<div id="optimize_syntax_fuse_functions">
  ## optimize\_syntax\_fuse\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Оптимизация готова для использования в продакшне"}]}]} />

Позволяет объединять агрегатные функции с одинаковым аргументом. Переписывает запрос, содержащий как минимум две агрегатные функции [sum](/ru/reference/functions/aggregate-functions/sum), [count](/ru/reference/functions/aggregate-functions/count) или [avg](/ru/reference/functions/aggregate-functions/avg) с одинаковым аргументом, в [sumCount](/ru/reference/functions/aggregate-functions/sumCount).

Возможные значения:

* 0 — Функции с одинаковым аргументом не объединяются.
* 1 — Функции с одинаковым аргументом объединяются.

**Пример**

Запрос:

```sql theme={null}
CREATE TABLE fuse_tbl(a Int8, b Int8) Engine = Log;
SET optimize_syntax_fuse_functions = 1;
EXPLAIN SYNTAX run_query_tree_passes = 1 SELECT sum(a), sum(b), count(b), avg(b) from fuse_tbl FORMAT TSV;
```

Результат:

```text theme={null}
SELECT
    sum(__table1.a) AS `sum(a)`,
    tupleElement(sumCount(__table1.b), 1) AS `sum(b)`,
    tupleElement(sumCount(__table1.b), 2) AS `count(b)`,
    divide(tupleElement(sumCount(__table1.b), 1), toFloat64(tupleElement(sumCount(__table1.b), 2))) AS `avg(b)`
FROM default.fuse_tbl AS __table1
```

<div id="optimize_throw_if_noop">
  ## optimize\_throw\_if\_noop
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает генерацию исключения, если запрос [OPTIMIZE](/ru/reference/statements/optimize) не выполнил слияние.

По умолчанию `OPTIMIZE` успешно завершается, даже если фактически ничего не сделал. Этот параметр позволяет различать такие ситуации и получать причину в сообщении об исключении.

Возможные значения:

* 1 — генерация исключения включена.
* 0 — генерация исключения отключена.

<div id="optimize_time_filter_with_preimage">
  ## optimize\_time\_filter\_with\_preimage
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Оптимизировать предикаты Date и DateTime, преобразуя функции в эквивалентные сравнения без приведения типов (например, toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')"}]}]} />

Оптимизирует предикаты Date и DateTime, преобразуя функции в эквивалентные сравнения без приведения типов (например, `toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31'`)

<div id="optimize_trivial_approximate_count_query">
  ## optimize\_trivial\_approximate\_count\_query
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Использовать приблизительное значение при оптимизации простого подсчета для хранилищ, поддерживающих такую оценку, например EmbeddedRocksDB.

Возможные значения:

* 0 — Оптимизация отключена.
  * 1 — Оптимизация включена.

<div id="optimize_trivial_count_query">
  ## optimize\_trivial\_count\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию простого запроса `SELECT count() FROM table` с использованием метаданных MergeTree. Если вам требуется безопасность на уровне строк, отключите эту настройку.

Возможные значения:

* 0 — оптимизация отключена.
  * 1 — оптимизация включена.

См. также:

* [optimize\_functions\_to\_subcolumns](#optimize_functions_to_subcolumns)

<div id="optimize_trivial_group_by_limit_query">
  ## optimize\_trivial\_group\_by\_limit\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Новая настройка, ограничивающая агрегацию числом различных ключей, указанным в `LIMIT`, для запросов `SELECT key_expr FROM t GROUP BY key_expr LIMIT n`."}]}]} />

Включает или отключает оптимизацию тривиального запроса `SELECT key_expr FROM table GROUP BY key_expr LIMIT n` (без агрегатных функций в списке SELECT, без секций `HAVING`/`ORDER BY`/`LIMIT BY`/window и без модификаторов `GROUP BY`) за счет установки `max_rows_to_group_by = n + offset` и `group_by_overflow_mode = 'any'`. Агрегация останавливается, как только будет получено `n + offset` различных ключей.

Оптимизация не применяется, если пользователь явно установил для `group_by_overflow_mode` значение, отличное от `any` (чтобы сохранить явно заданную семантику `throw`/`break`), а также если пользователь уже задал более жесткое значение `max_rows_to_group_by` (в этом случае оптимизация ничего не меняет).

Возможные значения:

* 0 — Оптимизация отключена.
  * 1 — Оптимизация включена.

<div id="optimize_trivial_insert_select">
  ## optimize\_trivial\_insert\_select
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Во многих случаях эта оптимизация не имеет смысла."}]}]} />

Оптимизация тривиального запроса 'INSERT INTO table SELECT ... FROM TABLES'

<div id="optimize_truncate_order_by_after_group_by_keys">
  ## optimize\_truncate\_order\_by\_after\_group\_by\_keys
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Удаляет завершающие элементы ORDER BY, если все ключи GROUP BY уже входят в префикс ORDER BY."}]}]} />

Удаляет завершающие элементы ORDER BY, если все ключи GROUP BY уже входят в префикс ORDER BY.

<div id="optimize_uniq_to_count">
  ## optimize\_uniq\_to\_count
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Переписывает `uniq` и его варианты (кроме `uniqUpTo`) в `count`, если подзапрос содержит `DISTINCT` или секцию `GROUP BY`.

<div id="optimize_use_implicit_projections">
  ## optimize\_use\_implicit\_projections
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Автоматически выбирать неявные проекции для выполнения запроса SELECT

<div id="optimize_use_projection_filtering">
  ## optimize\_use\_projection\_filtering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "новая настройка"}]}]} />

Включает использование проекций для фильтрации диапазонов частей, даже если проекции не выбраны для выполнения запроса SELECT.

<div id="optimize_use_projections">
  ## optimize\_use\_projections
</div>

**Псевдонимы**: `allow_experimental_projection_optimization`

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию [проекций](/ru/reference/engines/table-engines/mergetree-family/mergetree#projections) при выполнении запросов `SELECT`.

Возможные значения:

* 0 — оптимизация проекций отключена.
* 1 — оптимизация проекций включена.

<div id="optimize_using_constraints">
  ## optimize\_using\_constraints
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Используйте [ограничения](/ru/reference/statements/create/table#constraints) для оптимизации запросов. Значение по умолчанию — `false`.

Возможные значения:

* true, false

<div id="os_threads_nice_value_materialized_view">
  ## os\_threads\_nice\_value\_materialized\_view
</div>

<SettingsInfoBlock type="Int32" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Значение nice в Linux для потоков materialized view. Чем меньше значение, тем выше приоритет CPU.

Требуется привилегия CAP\_SYS\_NICE, иначе настройка не имеет эффекта.

Возможные значения: от -20 до 19.

<div id="os_threads_nice_value_query">
  ## os\_threads\_nice\_value\_query
</div>

**Псевдонимы**: `os_thread_priority`

<SettingsInfoBlock type="Int32" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Значение nice в Linux для потоков обработки запросов. Чем меньше значение, тем выше приоритет CPU.

Требуется capability CAP\_SYS\_NICE, иначе настройка не имеет эффекта.

Возможные значения: от -20 до 19.

<div id="page_cache_block_size">
  ## page\_cache\_block\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1048576"},{"label": "Этот параметр стал настраиваемым на уровне отдельного запроса."}]}]} />

Размер блоков файла, сохраняемых в кэше страниц в пространстве пользователя, в байтах. Все чтения, проходящие через кэш, округляются вверх до значения, кратного этому размеру.

Этот параметр можно настраивать на уровне отдельного запроса, но записи в кэше с разными размерами блоков нельзя использовать повторно. Изменение этого параметра фактически делает существующие записи в кэше недействительными.

Большее значение, например 1 MiB, хорошо подходит для запросов с высокой пропускной способностью, а меньшее, например 64 KiB, — для точечных запросов с низкой задержкой.

<div id="page_cache_inject_eviction">
  ## page\_cache\_inject\_eviction
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Добавлен кэш страниц в пространстве пользователя"}]}]} />

Кэш страниц в пространстве пользователя иногда случайным образом сбрасывает некоторые страницы. Предназначено для тестирования.

<div id="page_cache_lookahead_blocks">
  ## page\_cache\_lookahead\_blocks
</div>

<SettingsInfoBlock type="UInt64" default_value="16" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "16"},{"label": "Этот параметр стал настраиваемым на уровне отдельного запроса."}]}]} />

При промахе в кэше страниц в пространстве пользователя из нижележащего хранилища за один раз считывается до указанного числа последовательных блоков, если их также нет в кэше. Размер каждого блока — page\_cache\_block\_size байт.

Большее значение подходит для запросов с высокой пропускной способностью, тогда как точечные запросы с низкой задержкой лучше работают без опережающего чтения.

<div id="page_cache_max_coalesced_bytes">
  ## page\_cache\_max\_coalesced\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="16777216" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "16777216"},{"label": "Новая настройка, ограничивающая размер одного объединённого чтения, используемого для заполнения кэша страниц в пространстве пользователя при промахе кэша."}]}]} />

Когда `readBigAt` заполняет кэш страниц в пространстве пользователя, последовательные промахи кэша объединяются в одно чтение из нижележащего хранилища. Эта настройка ограничивает размер одного такого объединённого чтения в байтах; более длинные последовательности промахов разбиваются на несколько чтений. Она ограничивает пиковое кратковременное использование памяти временным буфером при параллельных холодных чтениях.

Большее значение уменьшает число HTTP-запросов при холодном сканировании Объектного хранилища; меньшее — снижает пиковое кратковременное использование памяти.

<div id="paimon_target_snapshot_id">
  ## paimon\_target\_snapshot\_id
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "-1"},{"label": "Новая настройка"}]}]} />

Чтение заданного снимка на уровне запроса в инкрементальном режиме Paimon. Если значение >0, модуль чтения будет считывать только дельту
для указанного snapshot\_id, не продвигая зафиксированную водяную метку.
По умолчанию: -1 (отключено)

<div id="parallel_distributed_insert_select">
  ## parallel\_distributed\_insert\_select
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "2"},{"label": "По умолчанию включает параллельный распределённый `INSERT ... SELECT`"}]}]} />

Включает параллельное распределённое выполнение запроса `INSERT ... SELECT`.

Если выполняется запрос `INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b`, обе таблицы используют один и тот же кластер, и обе таблицы либо [реплицируемые](/ru/reference/engines/table-engines/mergetree-family/replication), либо нереплицируемые, то такой запрос обрабатывается локально на каждом сегменте.

Возможные значения:

* `0` — Отключено.
* `1` — `SELECT` будет выполняться на каждом сегменте из базовой таблицы движка Distributed.
* `2` — `SELECT` и `INSERT` будут выполняться на каждом сегменте из/в базовую таблицу движка Distributed.

Начиная с v25.4, `INSERT ... SELECT` из источника `ReplicatedMergeTree` или `SharedMergeTree` также можно распараллелить между репликами. Чтобы включить это:

* `parallel_distributed_insert_select = 2`
* `enable_parallel_replicas = 1`

<div id="parallel_hash_join_threshold">
  ## parallel\_hash\_join\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="100000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "100000"},{"label": "новая настройка"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "новая настройка"}]}, {"id": "row-3","items": [{"label": "25.3"},{"label": "0"},{"label": "новая настройка"}]}]} />

Когда используется алгоритм JOIN на основе хеширования, этот порог помогает выбрать между `hash` и `parallel_hash` (только если доступна оценка размера правой таблицы).
Первый используется, когда известно, что размер правой таблицы меньше порога.

<div id="parallel_non_joined_rows_processing">
  ## parallel\_non\_joined\_rows\_processing
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Новая настройка, включающая параллельную обработку строк, не вошедших в соединение, в RIGHT/FULL JOIN с алгоритмом parallel_hash."}]}]} />

Позволяет нескольким потокам параллельно обрабатывать строки из правой таблицы, не вошедшие в соединение, при RIGHT и FULL JOIN.
Это может ускорить фазу обработки строк, не вошедших в соединение, при использовании алгоритма JOIN `parallel_hash` с большими таблицами.
Если настройка отключена, такие строки обрабатываются одним потоком.

<div id="parallel_replica_offset">
  ## parallel\_replica\_offset
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Это внутренний параметр, который не следует использовать напрямую: он отражает детали реализации режима «параллельных реплик». Этот параметр автоматически устанавливается сервером-инициатором для распределённых запросов и содержит индекс реплики, участвующей в обработке запроса среди параллельных реплик.

<div id="parallel_replicas_allow_in_with_subquery">
  ## parallel\_replicas\_allow\_in\_with\_subquery
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Если значение равно true, подзапрос для IN будет выполняться на каждой реплике follower"}]}]} />

Если значение равно true, подзапрос для IN будет выполняться на каждой реплике follower.

<div id="parallel_replicas_allow_materialized_views">
  ## parallel\_replicas\_allow\_materialized\_views
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Разрешает использование материализованных представлений с параллельными репликами"}]}]} />

Разрешает использование материализованных представлений с параллельными репликами

<div id="parallel_replicas_allow_view_over_mergetree">
  ## parallel\_replicas\_allow\_view\_over\_mergetree
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "новая настройка"}]}]} />

Разрешает параллельным репликам выполнять внешний запрос простого представления над таблицами `MergeTree` (вместо внутреннего запроса представления), что улучшает распараллеливание между узлами. Также применяется к представлениям `UNION ALL`, все ветви которых читают из разных таблиц `MergeTree`.

<div id="parallel_replicas_connect_timeout_ms">
  ## parallel\_replicas\_connect\_timeout\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="300" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "300"},{"label": "Отдельный тайм-аут подключения для запросов в режиме параллельных реплик"}]}]} />

Тайм-аут в миллисекундах для подключения к удалённой реплике при выполнении запроса в режиме параллельных реплик. Если тайм-аут истёк, соответствующая реплика не используется для выполнен

<div id="parallel_replicas_count">
  ## parallel\_replicas\_count
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Это внутренний параметр, который не следует использовать напрямую: он отражает деталь реализации режима «параллельных реплик». Для распределённых запросов этот параметр автоматически задаётся сервером-инициатором и равен числу параллельных реплик, участвующих в обработке запроса.

<div id="parallel_replicas_custom_key">
  ## parallel\_replicas\_custom\_key
</div>

Произвольное целочисленное выражение, которое можно использовать для распределения работы между репликами для конкретной таблицы.
В качестве значения можно указать любое целочисленное выражение.

Предпочтительны простые выражения с использованием первичных ключей.

Если эта настройка используется в кластере, состоящем из одного сегмента с несколькими репликами, эти реплики будут преобразованы в виртуальные сегменты.
В противном случае она будет вести себя так же, как и для ключа `SAMPLE`: будут использоваться несколько реплик каждого сегмента.

<div id="parallel_replicas_custom_key_range_lower">
  ## parallel\_replicas\_custom\_key\_range\_lower
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Добавлены настройки для управления фильтром диапазона при использовании параллельных реплик с динамическими сегментами"}]}]} />

Позволяет фильтру `range` равномерно распределять работу между репликами в пределах пользовательского диапазона `[parallel_replicas_custom_key_range_lower, INT_MAX]`.

При совместном использовании с [parallel\_replicas\_custom\_key\_range\_upper](#parallel_replicas_custom_key_range_upper) позволяет фильтру равномерно распределять работу между репликами в диапазоне `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

Примечание: эта настройка не приводит к дополнительной фильтрации данных при обработке запроса, а лишь изменяет точки, в которых фильтр диапазона разбивает диапазон `[0, INT_MAX]` для параллельной обработки.

<div id="parallel_replicas_custom_key_range_upper">
  ## parallel\_replicas\_custom\_key\_range\_upper
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Добавлены настройки для управления фильтром диапазона при использовании параллельных реплик с динамическими сегментами. Значение 0 отключает верхнюю границу"}]}]} />

Позволяет фильтру `range` равномерно распределять работу между репликами на основе пользовательского диапазона `[0, parallel_replicas_custom_key_range_upper]`. Значение 0 отключает верхнюю границу, устанавливая её равной максимальному значению выражения пользовательского ключа.

При использовании вместе с [parallel\_replicas\_custom\_key\_range\_lower](#parallel_replicas_custom_key_range_lower) эта настройка позволяет фильтру равномерно распределять работу между репликами для диапазона `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

Примечание: эта настройка не приводит к дополнительной фильтрации данных при обработке запроса, а лишь изменяет точки, в которых фильтр диапазона разбивает диапазон `[0, INT_MAX]` для параллельной обработки

<div id="parallel_replicas_filter_pushdown">
  ## parallel\_replicas\_filter\_pushdown
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Разрешает pushdown фильтров в той части запроса, которую параллельные реплики выбирают для выполнения

<div id="parallel_replicas_for_cluster_engines">
  ## parallel\_replicas\_for\_cluster\_engines
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Заменяет движки табличных функций на их варианты с суффиксом -Cluster

<div id="parallel_replicas_for_non_replicated_merge_tree">
  ## parallel\_replicas\_for\_non\_replicated\_merge\_tree
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Если установлено значение true, ClickHouse также будет использовать алгоритм параллельных реплик для нереплицируемых таблиц MergeTree

<div id="parallel_replicas_index_analysis_only_on_coordinator">
  ## parallel\_replicas\_index\_analysis\_only\_on\_coordinator
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "Анализ индексов выполняется только на реплике-координаторе и не выполняется на других репликах. Действует только при включенном parallel_replicas_local_plan"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "Анализ индексов выполняется только на реплике-координаторе и не выполняется на других репликах. Действует только при включенном parallel_replicas_local_plan"}]}]} />

Анализ индексов выполняется только на реплике-координаторе и не выполняется на других репликах. Действует только при включенном parallel\_replicas\_local\_pla

<div id="parallel_replicas_insert_select_local_pipeline">
  ## parallel\_replicas\_insert\_select\_local\_pipeline
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Использовать локальный конвейер при распределённом INSERT SELECT с параллельными репликами. В настоящее время отключено из-за проблем с производительностью"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Использовать локальный конвейер при распределённом INSERT SELECT с параллельными репликами. В настоящее время отключено из-за проблем с производительностью"}]}]} />

Использовать локальный конвейер при распределённом INSERT SELECT с параллельными репликами

<div id="parallel_replicas_local_plan">
  ## parallel\_replicas\_local\_plan
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Использовать локальный план для локальной реплики в запросе с параллельными репликами"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "Использовать локальный план для локальной реплики в запросе с параллельными репликами"}]}, {"id": "row-3","items": [{"label": "24.10"},{"label": "1"},{"label": "Использовать локальный план для локальной реплики в запросе с параллельными репликами"}]}]} />

Построение локального плана для локальной реплики

<div id="parallel_replicas_mark_segment_size">
  ## parallel\_replicas\_mark\_segment\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Значение этого параметра теперь определяется автоматически"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "128"},{"label": "Добавлена новая настройка для управления размером сегмента в новой реализации координатора параллельных реплик"}]}]} />

Части виртуально делятся на сегменты для распределения между репликами при параллельном чтении. Этот параметр задает размер этих сегментов. Не рекомендуется изменять его, если вы не абсолютно уверены в своих действиях. Значение должно находиться в диапазоне \[128; 16384]

<div id="parallel_replicas_min_number_of_rows_per_replica">
  ## parallel\_replicas\_min\_number\_of\_rows\_per\_replica
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничивает число реплик, используемых в запросе, значением (оценочное число строк для чтения / min\_number\_of\_rows\_per\_replica). Максимальное число по-прежнему ограничено значением 'max\_parallel\_replicas'

<div id="parallel_replicas_mode">
  ## parallel\_replicas\_mode
</div>

<SettingsInfoBlock type="ParallelReplicasMode" default_value="read_tasks" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "read_tasks"},{"label": "Этот параметр был добавлен в рамках перевода возможности параллельных реплик в статус бета"}]}]} />

Тип фильтра, используемого с пользовательским ключом для параллельных реплик. default — использовать операцию взятия по модулю для пользовательского ключа, range — использовать фильтр диапазона для пользовательского ключа со всеми возможными значениями его типа.

<div id="parallel_replicas_only_with_analyzer">
  ## parallel\_replicas\_only\_with\_analyzer
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Параллельные реплики поддерживаются только при включенном анализаторе"}]}]} />

Для использования параллельных реплик анализатор должен быть включен. Если анализатор отключен, запрос выполняется локально, даже если включено параллельное чтение с реплик. Использование параллельных реплик без включенного анализатора не поддерживается

<div id="parallel_replicas_prefer_local_join">
  ## parallel\_replicas\_prefer\_local\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Если значение равно true, JOIN может быть выполнен с использованием алгоритма параллельных реплик, а все хранилища правой части JOIN относятся к семейству *MergeTree, то вместо GLOBAL JOIN будет использоваться локальный JOIN."}]}]} />

Если значение равно true, JOIN может быть выполнен с использованием алгоритма параллельных реплик, а все хранилища правой части JOIN относятся к семейству \*MergeTree, то вместо GLOBAL JOIN будет использоваться локальный JOIN.

<div id="parallel_replicas_prefer_local_replica">
  ## parallel\_replicas\_prefer\_local\_replica
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Новая настройка. Если отключена, реплики для параллельного чтения выбираются исключительно алгоритмом балансировки нагрузки, без принудительного включения локальной реплики в набор."}]}]} />

Когда включено (по умолчанию), локальная реплика всегда включается в набор реплик, используемых для параллельного чтения.
Когда отключено, локальная реплика не получает предпочтения, и реплики выбираются исключительно алгоритмом балансировки нагрузки.
Это позволяет направлять запросы с `max_parallel_replicas = 1` на другой хост, что может улучшить локальность кэша, когда множество коротких запросов распределено по кластеру.

<div id="parallel_replicas_support_projection">
  ## parallel\_replicas\_support\_projection
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Новая настройка. Оптимизация проекций может использоваться в параллельных репликах. Работает только при включенном parallel_replicas_local_plan и неактивном aggregation_in_order."}]}]} />

Оптимизация проекций может использоваться в параллельных репликах. Работает только при включенном parallel\_replicas\_local\_plan и неактивном aggregation\_in\_order.

<div id="parallel_view_processing">
  ## parallel\_view\_processing
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает параллельную отправку в присоединённые представления вместо последовательной.

<div id="parallelize_output_from_storages">
  ## parallelize\_output\_from\_storages
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.5"},{"label": "1"},{"label": "Разрешает параллельное выполнение запросов, читающих из file/url/S3/etc. Это может изменить порядок строк."}]}]} />

Распараллеливает вывод на этапе чтения из хранилища. Если это возможно, позволяет распараллелить обработку запроса сразу после чтения из хранилища.

<div id="parsedatetime_e_requires_space_padding">
  ## parsedatetime\_e\_requires\_space\_padding
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Улучшена совместимость с MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

Форматтер '%e' в функции 'parseDateTime' требует, чтобы однозначные дни дополнялись пробелом: например, ' 2' принимается, а '2' вызывает ошибку.

<div id="parsedatetime_parse_without_leading_zeros">
  ## parsedatetime\_parse\_without\_leading\_zeros
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.11"},{"label": "1"},{"label": "Улучшена совместимость с MySQL DATE_FORMAT/STR_TO_DATE"}]}]} />

Форматтеры `%c`, `%l` и `%k` в функции `parseDateTime` позволяют разбирать месяцы и часы без ведущих нулей.

<div id="partial_merge_join_left_table_buffer_bytes">
  ## partial\_merge\_join\_left\_table\_buffer\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Если значение не равно 0, блоки левой таблицы при частичном соединении слиянием объединяются в более крупные. Используется до 2x указанного объема памяти на каждый поток, выполняющий JOIN.

<div id="partial_merge_join_rows_in_right_blocks">
  ## partial\_merge\_join\_rows\_in\_right\_blocks
</div>

<SettingsInfoBlock type="UInt64" default_value="65536" />

Ограничивает размер блоков данных из правой части JOIN в алгоритме частичного соединения слиянием для запросов [JOIN](/ru/reference/statements/select/join).

Сервер ClickHouse:

1. Разбивает данные правой части JOIN на блоки, содержащие не более указанного числа строк.
2. Индексирует каждый блок по минимальному и максимальному значениям.
3. Выгружает подготовленные блоки на диск, если это возможно.

Возможные значения:

* Любое положительное целое число. Рекомендуемый диапазон значений: \[1000, 100000].

<div id="partial_result_on_first_cancel">
  ## partial\_result\_on\_first\_cancel
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Позволяет возвращать частичный результат запроса после отмены.

<div id="parts_to_delay_insert">
  ## parts\_to\_delay\_insert
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Если целевая таблица содержит не менее такого количества активных частей в одной партиции, вставка в таблицу искусственно замедляется.

<div id="parts_to_throw_insert">
  ## parts\_to\_throw\_insert
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Если число активных частей в одной партиции целевой таблицы превышает это значение, генерируется исключение 'Too many parts ...'.

<div id="per_part_index_stats">
  ## per\_part\_index\_stats
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Логирует статистику индекса по каждой части

<div id="poll_interval">
  ## poll\_interval
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

Приостанавливает цикл ожидания запроса на сервере на указанное количество секунд.

<div id="polyglot_dialect">
  ## polyglot\_dialect
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": ""},{"label": "Новая настройка для указания исходного SQL-диалекта для transpiler polyglot."}]}]} />

Исходный SQL-диалект для transpiler polyglot (например, 'sqlite', 'mysql', 'postgresql', 'snowflake', 'duckdb').

<div id="postgresql_connection_attempt_timeout">
  ## postgresql\_connection\_attempt\_timeout
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "2"},{"label": "Позволяет управлять параметром `connect_timeout` для подключения к PostgreSQL."}]}]} />

Тайм-аут подключения в секундах для одной попытки подключения к конечной точке PostgreSQL.
Значение передаётся как параметр `connect_timeout` в URL подключения.

<div id="postgresql_connection_pool_auto_close_connection">
  ## postgresql\_connection\_pool\_auto\_close\_connection
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Закрывать соединение перед его возвратом в пул.

<div id="postgresql_connection_pool_retries">
  ## postgresql\_connection\_pool\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "2"},{"label": "Позволяет задавать количество повторных попыток в пуле соединений PostgreSQL."}]}]} />

Количество повторных попыток операций push/pop в пуле соединений для движка таблицы PostgreSQL и движка базы данных.

<div id="postgresql_connection_pool_size">
  ## postgresql\_connection\_pool\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="16" />

Размер пула соединений для движка таблицы PostgreSQL и движка базы данных PostgreSQL.

<div id="postgresql_connection_pool_wait_timeout">
  ## postgresql\_connection\_pool\_wait\_timeout
</div>

<SettingsInfoBlock type="UInt64" default_value="5000" />

Тайм-аут операций push/pop в пуле соединений при пустом пуле для движка таблицы PostgreSQL и движка базы данных. По умолчанию при пустом пуле выполнение блокируется.

<div id="postgresql_fault_injection_probability">
  ## postgresql\_fault\_injection\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "новая настройка"}]}]} />

Примерная вероятность ошибки внутренних запросов PostgreSQL (для репликации). Допустимое значение — в диапазоне \[0.0f, 1.0f]

<div id="predicate_statistics_sample_rate">
  ## predicate\_statistics\_sample\_rate
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка для сбора статистики селективности предикатов в system.predicate_statistics_log"}]}]} />

Собирает статистику селективности предикатов в `system.predicate_statistics_log`. Если задано значение N > 0, в выборку попадает примерно 1/N запросов (по Query id). Значение 0 отключает сбор.

<div id="prefer_column_name_to_alias">
  ## prefer\_column\_name\_to\_alias
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает использование исходных имён столбцов вместо псевдонимов в выражениях запроса и секциях. Это особенно важно, когда псевдоним совпадает с именем столбца, см. [Псевдонимы выражений](/ru/reference/syntax#notes-on-usage). Включите этот параметр, чтобы правила синтаксиса псевдонимов в ClickHouse были более совместимы с большинством других движков баз данных.

Возможные значения:

* 0 — Имя столбца заменяется псевдонимом.
* 1 — Имя столбца не заменяется псевдонимом.

**Пример**

Разница при включённом и выключенном параметре:

Запрос:

```sql theme={null}
SET prefer_column_name_to_alias = 0;
SELECT avg(number) AS number, max(number) FROM numbers(10);
```

Результат:

```text theme={null}
Received exception from server (version 21.5.1):
Code: 184. DB::Exception: Received from localhost:9000. DB::Exception: Aggregate function avg(number) is found inside another aggregate function in query: While processing avg(number) AS number.
```

Запрос:

```sql theme={null}
SET prefer_column_name_to_alias = 1;
SELECT avg(number) AS number, max(number) FROM numbers(10);
```

Результат:

```text theme={null}
┌─number─┬─max(number)─┐
│    4.5 │           9 │
└────────┴─────────────┘
```

<div id="prefer_external_sort_block_bytes">
  ## prefer\_external\_sort\_block\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="16744704" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.5"},{"label": "16744704"},{"label": "Предпочитать максимальный размер блока в байтах для внешней сортировки, чтобы уменьшить использование памяти при слиянии."}]}]} />

Предпочитать максимальный размер блока в байтах для внешней сортировки, чтобы уменьшить использование памяти при слиянии.

<div id="prefer_global_in_and_join">
  ## prefer\_global\_in\_and\_join
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает замену операторов `IN`/`JOIN` на `GLOBAL IN`/`GLOBAL JOIN`.

Возможные значения:

* 0 — Отключено. Операторы `IN`/`JOIN` не заменяются на `GLOBAL IN`/`GLOBAL JOIN`.
* 1 — Включено. Операторы `IN`/`JOIN` заменяются на `GLOBAL IN`/`GLOBAL JOIN`.

**Использование**

Хотя `SET distributed_product_mode=global` может изменить поведение запросов для distributed таблиц, он не подходит для локальных таблиц или таблиц из внешних источников. Именно для таких случаев предназначена настройка `prefer_global_in_and_join`.

Например, есть узлы, обслуживающие запросы и содержащие локальные таблицы, которые не подходят для распределения. В этом случае их данные нужно распределять на лету в рамках распределённой обработки с помощью ключевого слова `GLOBAL` — `GLOBAL IN`/`GLOBAL JOIN`.

Ещё один сценарий использования `prefer_global_in_and_join` — доступ к таблицам, созданным внешними движками. Эта настройка помогает сократить количество обращений к внешним источникам при JOIN таких таблиц: только один вызов на запрос.

**См. также:**

* [Распределённые подзапросы](/ru/reference/statements/in#distributed-subqueries) — подробнее об использовании `GLOBAL IN`/`GLOBAL JOIN`

<div id="prefer_localhost_replica">
  ## prefer\_localhost\_replica
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает предпочтительное использование реплики localhost при обработке распределённых запросов.

Возможные значения:

* 1 — ClickHouse всегда отправляет запрос на реплику localhost, если она существует.
* 0 — ClickHouse использует стратегию балансировки, заданную настройкой [load\_balancing](#load_balancing).

<Note>
  Отключите эту настройку, если используете [max\_parallel\_replicas](#max_parallel_replicas) без [parallel\_replicas\_custom\_key](#parallel_replicas_custom_key).
  Если задан [parallel\_replicas\_custom\_key](#parallel_replicas_custom_key), отключайте эту настройку только в том случае, если она используется в кластере с несколькими сегментами, содержащими несколько реплик.
  Если она используется в кластере с одним сегментом и несколькими репликами, отключение этой настройки приведёт к негативным последствиям.
</Note>

<div id="prefer_warmed_unmerged_parts_seconds">
  ## prefer\_warmed\_unmerged\_parts\_seconds
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

Действует только в ClickHouse Cloud. Если слитая часть младше указанного количества секунд и не была предварительно прогрета (см. [cache\_populated\_by\_fetch](/ru/reference/settings/merge-tree-settings#cache_populated_by_fetch)), но все её исходные части доступны и предварительно прогреты, запросы SELECT будут читать данные из этих частей вместо неё. Только для Replicated-/SharedMergeTree. Обратите внимание, что здесь проверяется только то, была ли часть обработана CacheWarmer; если часть была помещена в кэш каким-то другим способом, она всё равно будет считаться холодной, пока до неё не доберётся CacheWarmer; если же она была прогрета, а затем вытеснена из кэша, она всё равно будет считаться прогретой.

<div id="preferred_block_size_bytes">
  ## preferred\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

Этот параметр регулирует размер блока данных при обработке запросов и служит дополнительной тонкой настройкой по сравнению с более грубым параметром `max_block_size`. Если столбцы большие и при `max_block_size` строк размер блока, скорее всего, превысит указанное количество байт, размер блока будет уменьшен для лучшей локальности кэша процессора.

<div id="preferred_max_column_in_block_size_bytes">
  ## preferred\_max\_column\_in\_block\_size\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничивает максимальный размер столбца в блоке при чтении. Помогает сократить количество промахов кэша. Значение должно быть близко к размеру кэша L2.

<div id="preferred_optimize_projection_name">
  ## preferred\_optimize\_projection\_name
</div>

Если задана непустая строка, ClickHouse попытается использовать указанную проекцию при выполнении запроса.

Возможные значения:

* string: имя предпочтительной проекции

<div id="prefetch_buffer_size">
  ## prefetch\_buffer\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

Максимальный размер буфера предзагрузки при чтении из файловой системы.

<div id="print_pretty_type_names">
  ## print\_pretty\_type\_names
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "Улучшает удобство использования."}]}]} />

Позволяет выводить имена глубоко вложенных типов в удобочитаемом виде с отступами в запросе `DESCRIBE` и функции `toTypeName()`.

Пример:

```sql theme={null}
CREATE TABLE test (a Tuple(b String, c Tuple(d Nullable(UInt64), e Array(UInt32), f Array(Tuple(g String, h Map(String, Array(Tuple(i String, j UInt64))))), k Date), l Nullable(String))) ENGINE=Memory;
DESCRIBE TABLE test FORMAT TSVRaw SETTINGS print_pretty_type_names=1;
```

```
a   Tuple(
    b String,
    c Tuple(
        d Nullable(UInt64),
        e Array(UInt32),
        f Array(Tuple(
            g String,
            h Map(
                String,
                Array(Tuple(
                    i String,
                    j UInt64
                ))
            )
        )),
        k Date
    ),
    l Nullable(String)
)
```

<div id="priority">
  ## priority
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Приоритет запроса. 1 — наивысший приоритет, чем больше значение, тем ниже приоритет; 0 — приоритеты не используются.

<div id="promql_database">
  ## promql\_database
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": ""},{"label": "Новая экспериментальная настройка"}]}]} />

Задаёт имя базы данных, используемой диалектом 'promql'. Пустая строка означает текущую базу данных.

<div id="promql_evaluation_time">
  ## promql\_evaluation\_time
</div>

**Псевдонимы**: `evaluation_time`

<SettingsInfoBlock type="FloatAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "auto"},{"label": "Параметр был переименован. Прежнее имя — `evaluation_time`."}]}]} />

Задаёт время оценки для диалекта promql. `auto` означает текущее время.

<div id="promql_table">
  ## promql\_table
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": ""},{"label": "Новая экспериментальная настройка"}]}]} />

Указывает имя таблицы TimeSeries, используемой в диалекте 'promql'.

<div id="push_external_roles_in_interserver_queries">
  ## push\_external\_roles\_in\_interserver\_queries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Включает передачу ролей пользователя с инициирующего узла на другие узлы при выполнении запроса.

<div id="query_cache_compress_entries">
  ## query\_cache\_compress\_entries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Сжимает записи в [кэше запросов](/ru/concepts/features/performance/caches/query-cache). Уменьшает потребление памяти кэша запросов ценой более медленной вставки в него и чтения из него.

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_cache_for_subqueries">
  ## query\_cache\_for\_subqueries
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка, которая включает распространение `use_query_cache` на все подзапросы. Без нее подзапросы кэшируются только при явном включении `SETTINGS use_query_cache = true` для каждого подзапроса."}]}]} />

Если настройка включена, результаты подзапросов могут записываться в [query cache](/ru/concepts/features/performance/caches/query-cache) и считываться из него. Это позволяет распространять `use_query_cache` на все подзапросы.

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_cache_max_entries">
  ## query\_cache\_max\_entries
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество результатов запросов, которое текущий пользователь может хранить в [кэше запросов](/ru/concepts/features/performance/caches/query-cache). 0 означает отсутствие ограничений.

Возможные значения:

* Целое число >= 0.

<div id="query_cache_max_size_in_bytes">
  ## query\_cache\_max\_size\_in\_bytes
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальный объем памяти (в байтах), который текущий пользователь может выделить для [кэша запросов](/ru/concepts/features/performance/caches/query-cache). 0 означает отсутствие ограничений.

Возможные значения:

* Целое число >= 0.

<div id="query_cache_min_query_duration">
  ## query\_cache\_min\_query\_duration
</div>

<SettingsInfoBlock type="Milliseconds" default_value="0" />

Минимальная длительность выполнения запроса в миллисекундах, необходимая для сохранения его результата в [кэше запросов](/ru/concepts/features/performance/caches/query-cache).

Возможные значения:

* Положительное целое число >= 0.

<div id="query_cache_min_query_runs">
  ## query\_cache\_min\_query\_runs
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Минимальное число запусков `SELECT`-запроса, после которого его результат сохраняется в [кэше запросов](/ru/concepts/features/performance/caches/query-cache).

Возможные значения:

* Целое число >= 0.

<div id="query_cache_nondeterministic_function_handling">
  ## query\_cache\_nondeterministic\_function\_handling
</div>

<SettingsInfoBlock type="QueryResultCacheNondeterministicFunctionHandling" default_value="throw" />

Управляет тем, как [кэш запросов](/ru/concepts/features/performance/caches/query-cache) обрабатывает запросы `SELECT` с недетерминированными функциями, такими как `rand()` или `now()`.

Возможные значения:

* `'throw'` — сгенерировать исключение и не кэшировать результат запроса.
* `'save'` — кэшировать результат запроса.
* `'ignore'` — не кэшировать результат запроса и не генерировать исключение.

<div id="query_cache_share_between_users">
  ## query\_cache\_share\_between\_users
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Если этот параметр включен, другие пользователи смогут читать результаты `SELECT`-запросов, кэшированные в [query cache](/ru/concepts/features/performance/caches/query-cache).
Не рекомендуется включать этот параметр из соображений безопасности.

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_cache_squash_partial_results">
  ## query\_cache\_squash\_partial\_results
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Объединяет блоки частичных результатов в блоки размером до [max\_block\_size](#max_block_size). Снижает производительность вставок в [кэш запросов](/ru/concepts/features/performance/caches/query-cache), но улучшает сжимаемость записей кэша (см. [query\_cache\_compress-entries](#query_cache_compress_entries)).

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_cache_system_table_handling">
  ## query\_cache\_system\_table\_handling
</div>

<SettingsInfoBlock type="QueryResultCacheSystemTableHandling" default_value="throw" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "throw"},{"label": "Кэш запросов больше не кэширует результаты запросов к системным таблицам"}]}]} />

Управляет тем, как [кэш запросов](/ru/concepts/features/performance/caches/query-cache) обрабатывает запросы `SELECT` к системным таблицам, то есть к таблицам в базах данных `system.*` и `information_schema.*`.

Возможные значения:

* `'throw'` - сгенерировать исключение и не кэшировать результат запроса.
* `'save'` - кэшировать результат запроса.
* `'ignore'` - не кэшировать результат запроса и не генерировать исключение.

<div id="query_cache_tag">
  ## query\_cache\_tag
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": ""},{"label": "Новая настройка для задания меток в query cache."}]}]} />

Строка, которая служит меткой для записей [query cache](/ru/concepts/features/performance/caches/query-cache).
Одинаковые запросы с разными метками считаются в query cache разными.

Возможные значения:

* Любая строка

<div id="query_cache_ttl">
  ## query\_cache\_ttl
</div>

<SettingsInfoBlock type="Seconds" default_value="60" />

По истечении этого времени, заданного в секундах, записи в [кэше запросов](/ru/concepts/features/performance/caches/query-cache) считаются устаревшими.

Возможные значения:

* Положительное целое число >= 0.

<div id="query_metric_log_interval">
  ## query\_metric\_log\_interval
</div>

<SettingsInfoBlock type="Int64" default_value="-1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "-1"},{"label": "Новая настройка"}]}]} />

Интервал в миллисекундах, с которым собирается [query\_metric\_log](/ru/reference/system-tables/query_metric_log) для отдельных запросов.

Если задано любое отрицательное значение, используется значение `collect_interval_milliseconds` из [настройки query\_metric\_log](/ru/reference/settings/server-settings/settings#query_metric_log), а если оно отсутствует, по умолчанию используется 1000.

Чтобы отключить сбор метрик для отдельного запроса, установите `query_metric_log_interval` в 0.

Значение по умолчанию: -1

<div id="query_plan_aggregation_in_order">
  ## query\_plan\_aggregation\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.12"},{"label": "1"},{"label": "Включает некоторые изменения, связанные с рефакторингом плана запроса"}]}]} />

Включает или отключает оптимизацию агрегации в порядке сортировки на уровне плана запроса.
Действует только в том случае, если значение настройки [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_convert_any_join_to_semi_or_anti_join">
  ## query\_plan\_convert\_any\_join\_to\_semi\_or\_anti\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Разрешает преобразовывать ANY JOIN в SEMI или ANTI JOIN, если фильтр после JOIN для несовпавших или совпавших строк всегда принимает значение false

<div id="query_plan_convert_join_to_in">
  ## query\_plan\_convert\_join\_to\_in
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "новая настройка"}]}]} />

Разрешает преобразовывать `JOIN` в подзапрос с `IN`, если выходные столбцы относятся только к левой таблице. Может приводить к неверным результатам для JOIN, отличных от ANY (например, ALL JOIN, который используется по умолчанию).

<div id="query_plan_convert_outer_join_to_inner_join">
  ## query\_plan\_convert\_outer\_join\_to\_inner\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "Разрешает преобразовывать OUTER JOIN в INNER JOIN, если фильтр после JOIN всегда исключает значения по умолчанию"}]}]} />

Разрешает преобразовывать `OUTER JOIN` в `INNER JOIN`, если фильтр после `JOIN` всегда исключает значения по умолчанию

<div id="query_plan_direct_read_from_text_index">
  ## query\_plan\_direct\_read\_from\_text\_index
</div>

<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.9"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Позволяет выполнять фильтрацию при полнотекстовом поиске в плане запроса, используя только инвертированный текстовый индекс.

<div id="query_plan_display_internal_aliases">
  ## query\_plan\_display\_internal\_aliases
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "новая настройка"}]}]} />

Показывать в EXPLAIN PLAN внутренние псевдонимы (например, \_\_table1) вместо псевдонимов, указанных в исходном запросе.

<div id="query_plan_enable_multithreading_after_window_functions">
  ## query\_plan\_enable\_multithreading\_after\_window\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает многопоточность после вычисления оконных функций, чтобы обеспечить параллельную обработку потоков

<div id="query_plan_enable_optimizations">
  ## query\_plan\_enable\_optimizations
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию запросов на уровне плана запроса.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить все оптимизации на уровне плана запроса
* 1 - Включить оптимизации на уровне плана запроса (при этом отдельные оптимизации всё равно могут быть отключены через их собственные настройки)

<div id="query_plan_execute_functions_after_sorting">
  ## query\_plan\_execute\_functions\_after\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая переносит выражения после этапов сортировки.
Действует только если значение настройки [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться с нарушением обратной совместимости или быть удалена.
</Note>

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_filter_push_down">
  ## query\_plan\_filter\_push\_down
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая опускает фильтры ниже в плане выполнения.
Действует только в том случае, если значение настройки [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) равно 1.

<Note>
  Это экспертная настройка, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_join_shard_by_pk_ranges">
  ## query\_plan\_join\_shard\_by\_pk\_ranges
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "новая настройка"}]}]} />

Использовать сегментирование для JOIN, если ключи JOIN содержат префикс PRIMARY KEY в обеих таблицах. Поддерживается для алгоритмов hash, parallel\_hash и full\_sorting\_merge. Обычно не ускоряет запросы, но может уменьшить потребление памяти.

<div id="query_plan_join_swap_table">
  ## query\_plan\_join\_swap\_table
</div>

<SettingsInfoBlock type="BoolAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "auto"},{"label": "Новая настройка. Ранее всегда выбиралась правая таблица."}]}]} />

Определяет, какая сторона JOIN должна использоваться в плане запроса как build-таблица (также называемая inner — та, которая помещается в хеш-таблицу при hash join). Эта настройка поддерживается только для strictness `ALL` с условием `JOIN ON`. Возможные значения:

* 'auto': Позволяет planner определить, какую таблицу использовать в качестве build-таблицы.
  * 'false': Никогда не менять таблицы местами (build-таблица — правая таблица).
  * 'true': Всегда менять таблицы местами (build-таблица — левая таблица).

<div id="query_plan_lift_up_array_join">
  ## query\_plan\_lift\_up\_array\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая перемещает ARRAY JOIN выше в плане выполнения.
Действует только если значение настройки [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_lift_up_union">
  ## query\_plan\_lift\_up\_union
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая переносит более крупные поддеревья плана запроса в union, чтобы открыть возможности для дальнейших оптимизаций.
Действует только в том случае, если значение настройки [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_max_limit_for_lazy_materialization">
  ## query\_plan\_max\_limit\_for\_lazy\_materialization
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "10"},{"label": "Добавлена новая настройка для управления максимальным значением, при котором можно использовать план запроса для оптимизации отложенной материализации. Если равно нулю, ограничение отсутствует"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10000"},{"label": "Ограничение увеличено после повышения производительности"}]}, {"id": "row-3","items": [{"label": "25.11"},{"label": "100"},{"label": "Более оптимальное значение"}]}]} />

Управляет максимальным значением, при котором можно использовать план запроса для оптимизации отложенной материализации. Если равно нулю, ограничение отсутствует.

<div id="query_plan_max_limit_for_top_k_optimization">
  ## query\_plan\_max\_limit\_for\_top\_k\_optimization
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1000"},{"label": "Новая настройка"}]}]} />

Определяет максимальное значение LIMIT, при котором можно оценивать план запроса для оптимизации TopK с использованием индекса пропуска данных minmax и динамической пороговой фильтрации. Если значение равно нулю, ограничение не применяется.

<div id="query_plan_max_optimizations_to_apply">
  ## query\_plan\_max\_optimizations\_to\_apply
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

Ограничивает общее число оптимизаций, применяемых к плану запроса, см. настройку [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations).
Полезно, чтобы избежать длительной оптимизации сложных запросов.
В запросе EXPLAIN PLAN после достижения этого предела оптимизации больше не применяются, а план возвращается как есть.
При обычном выполнении запроса, если фактическое число оптимизаций превышает это значение, генерируется исключение.

<Note>
  Это настройка экспертного уровня, и использовать её для отладки следует только разработчикам. В будущем настройка может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

<div id="query_plan_max_step_description_length">
  ## query\_plan\_max\_step\_description\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="500" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "500"},{"label": "новая настройка"}]}]} />

Максимальная длина описания шага в EXPLAIN PLAN.

<div id="query_plan_merge_expressions">
  ## query\_plan\_merge\_expressions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, объединяющую последовательные фильтры.
Имеет эффект, только если значение настройки [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) равно 1.

<Note>
  Это экспертная настройка, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_merge_filter_into_join_condition">
  ## query\_plan\_merge\_filter\_into\_join\_condition
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Добавлена новая настройка для объединения фильтра с условием JOIN"}]}]} />

Позволяет объединять фильтр с условием `JOIN` и преобразовывать `CROSS JOIN` в `INNER`.

<div id="query_plan_merge_filters">
  ## query\_plan\_merge\_filters
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Разрешает объединять фильтры в плане запроса"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "Разрешает объединять фильтры в плане запроса. Это необходимо для корректной поддержки проталкивания фильтров в анализаторе."}]}]} />

Разрешает объединять фильтры в плане запроса.

<div id="query_plan_optimize_join_order_algorithm">
  ## query\_plan\_optimize\_join\_order\_algorithm
</div>

<SettingsInfoBlock type="JoinOrderAlgorithm" default_value="greedy" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "greedy"},{"label": "новая экспериментальная настройка."}]}]} />

Указывает, какие алгоритмы порядка JOIN следует применять при оптимизации плана запроса. Доступны следующие алгоритмы:

* 'greedy' — базовый жадный алгоритм: работает быстро, но может не обеспечить наилучший порядок JOIN
* 'dpsize' — реализует алгоритм DPsize, в настоящее время только для Inner JOIN, — перебирает все возможные порядки JOIN и находит оптимальный, но может работать медленно для запросов с большим количеством таблиц и предикатов JOIN.
  Можно указать несколько алгоритмов, например 'dpsize,greedy'.

<div id="query_plan_optimize_join_order_limit">
  ## query\_plan\_optimize\_join\_order\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "новая настройка"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10"},{"label": "По умолчанию разрешает переупорядочивание JOIN для большего количества таблиц"}]}]} />

Оптимизирует порядок JOIN в пределах одного подзапроса. В настоящее время поддерживается только в очень ограниченном числе случаев.
Значение — максимальное количество таблиц для оптимизации.

<div id="query_plan_optimize_join_order_randomize">
  ## query\_plan\_optimize\_join\_order\_randomize
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Новая настройка для случайного изменения статистики порядка JOIN при тестировании."}]}]} />

Если значение не равно нулю, оптимизатор порядка JOIN использует случайно сгенерированные кардинальности и NDV вместо фактической статистики.
Если установлено значение 1, генерируется начальное значение генератора случайных чисел; если установлено значение > 1, это значение напрямую используется как начальное значение генератора случайных чисел.
Это предназначено для тестирования, чтобы выявлять ошибки, вызванные различным порядком JOIN.

<div id="query_plan_optimize_lazy_final">
  ## query\_plan\_optimize\_lazy\_final
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Новая настройка для оптимизации чтения из ReplacingMergeTree с FINAL с использованием анализа индекса на основе множества"}]}]} />

Оптимизирует чтение из ReplacingMergeTree с FINAL, формируя множество первичных ключей и используя его для анализа индекса.

<div id="query_plan_optimize_lazy_materialization">
  ## query\_plan\_optimize\_lazy\_materialization
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Добавлена новая настройка для использования плана выполнения запроса для оптимизации отложенной материализации"}]}]} />

Использовать план выполнения запроса для оптимизации отложенной материализации.

<div id="query_plan_optimize_prewhere">
  ## query\_plan\_optimize\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Разрешить проталкивание фильтра в выражение PREWHERE для поддерживаемых хранилищ"}]}]} />

Разрешить проталкивание фильтра в выражение PREWHERE для поддерживаемых хранилищ

<div id="query_plan_push_down_limit">
  ## query\_plan\_push\_down\_limit
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая опускает LIMIT ниже по плану выполнения.
Действует, только если для настройки [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) установлено значение 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_read_in_order">
  ## query\_plan\_read\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию чтения в порядке сортировки на уровне плана запроса.
Действует только если значение настройки [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_read_in_order_through_join">
  ## query\_plan\_read\_in\_order\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "новая настройка"}]}]} />

Сохранять чтение по порядку из левой таблицы в операциях JOIN, чтобы это могли использовать последующие шаги.

<div id="query_plan_remove_redundant_distinct">
  ## query\_plan\_remove\_redundant\_distinct
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "1"},{"label": "Удаляет избыточный шаг Distinct в плане запроса"}]}]} />

Включает оптимизацию на уровне плана запроса, которая удаляет избыточные шаги DISTINCT.
Действует, только если значение настройки [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_remove_redundant_sorting">
  ## query\_plan\_remove\_redundant\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.1"},{"label": "1"},{"label": "Удаляет избыточные шаги сортировки в плане запроса, например шаги сортировки, связанные с предложениями ORDER BY во вложенных запросах"}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, удаляющую избыточные шаги сортировки, например во вложенных запросах.
Действует только в том случае, если значение настройки [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_remove_unused_columns">
  ## query\_plan\_remove\_unused\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Новая настройка. Добавляет оптимизацию для удаления неиспользуемых столбцов в плане запроса."}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, которая пытается удалять неиспользуемые столбцы (как входные, так и выходные) из шагов плана запроса.
Действует только в том случае, если значение настройки [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_reuse_storage_ordering_for_window_functions">
  ## query\_plan\_reuse\_storage\_ordering\_for\_window\_functions
</div>

**Псевдонимы**: `optimize_read_in_window_order`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "По умолчанию эта логика отключена."}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, которая использует порядок сортировки в хранилище при сортировке для оконных функций.
Имеет эффект только при значении 1 для настройки [`query_plan_enable_optimizations`](#query_plan_enable_optimizations).

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_split_filter">
  ## query\_plan\_split\_filter
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

Включает или отключает оптимизацию на уровне плана запроса, которая разбивает фильтры на выражения.
Действует только если для настройки [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations) установлено значение 1.

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_text_index_add_hint">
  ## query\_plan\_text\_index\_add\_hint
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "новая настройка"}]}]} />

Разрешает добавлять подсказку (дополнительный предикат) для фильтрации, построенной на основе инвертированного текстового индекса, в план запроса.

<div id="query_plan_top_k_through_join">
  ## query\_plan\_top\_k\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Новая настройка для включения оптимизации на уровне плана запроса, которая проталкивает ORDER BY ... LIMIT n через LEFT/RIGHT JOIN, если ключ сортировки ссылается только на сохраняемую сторону."}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, которая проталкивает `ORDER BY ... LIMIT n` через JOIN, если ключ сортировки ссылается только на столбцы сохраняемой стороны JOIN (LEFT/RIGHT). Ограничивает количество строк, которое должен вернуть вход сохраняемой стороны до выполнения JOIN.
Действует только при значении 1 для настройки [query\_plan\_enable\_optimizations](#query_plan_enable_optimizations).

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_try_use_vector_search">
  ## query\_plan\_try\_use\_vector\_search
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Новая настройка."}]}]} />

Включает оптимизацию на уровне плана запроса, которая пытается использовать индекс векторного сходства.
Действует только если для настройки [`query_plan_enable_optimizations`](#query_plan_enable_optimizations) установлено значение 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_profiler_cpu_time_period_ns">
  ## query\_profiler\_cpu\_time\_period\_ns
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000" />

Устанавливает период таймера процессорного времени для [профилировщика запросов](/ru/concepts/features/performance/troubleshoot/sampling-query-profiler). Этот таймер учитывает только время CPU.

Возможные значения:

* Положительное целое число наносекунд.

  Рекомендуемые значения:

  * 10000000 (100 раз в секунду) наносекунд и более для отдельных запросов.
  * 1000000000 (один раз в секунду) для профилирования в масштабе всего cluster.

* 0, чтобы отключить таймер.

См. также:

* Системная таблица [trace\_log](/ru/reference/system-tables/trace_log)

<div id="query_profiler_real_time_period_ns">
  ## query\_profiler\_real\_time\_period\_ns
</div>

<SettingsInfoBlock type="UInt64" default_value="1000000000" />

Задаёт период таймера реального времени для [профилировщика запросов](/ru/concepts/features/performance/troubleshoot/sampling-query-profiler). Таймер реального времени отсчитывает фактическое время.

Возможные значения:

* Положительное целое число в наносекундах.

  Рекомендуемые значения:

  * 10000000 (100 раз в секунду) наносекунд и меньше для отдельных запросов.
  * 1000000000 (один раз в секунду) для профилирования всего кластера.

* 0 для отключения таймера.

См. также:

* Системная таблица [trace\_log](/ru/reference/system-tables/trace_log)

Значение по умолчанию в Cloud: `3000000000`.

<div id="queue_max_wait_ms">
  ## queue\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="0" />

Время ожидания в очереди запросов, если число одновременных запросов превышает максимально допустимое.

<div id="rabbitmq_max_wait_ms">
  ## rabbitmq\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="5000" />

Время ожидания при чтении из RabbitMQ перед повторной попыткой.

<div id="read_backoff_max_throughput">
  ## read\_backoff\_max\_throughput
</div>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

Настройка для уменьшения числа потоков в случае медленного чтения. События учитываются, когда пропускная способность чтения меньше указанного количества байт в секунду.

<div id="read_backoff_min_concurrency">
  ## read\_backoff\_min\_concurrency
</div>

<SettingsInfoBlock type="UInt64" default_value="1" />

Настройка для поддержания минимального количества потоков в случае медленного чтения.

<div id="read_backoff_min_events">
  ## read\_backoff\_min\_events
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

Настройка для уменьшения количества потоков при медленном чтении. Количество событий, после которого число потоков будет уменьшено.

<div id="read_backoff_min_interval_between_events_ms">
  ## read\_backoff\_min\_interval\_between\_events\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="1000" />

Настройка для уменьшения количества потоков при медленном чтении. Игнорировать событие, если с момента предыдущего прошло меньше заданного времени.

<div id="read_backoff_min_latency_ms">
  ## read\_backoff\_min\_latency\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="1000" />

Настройка для уменьшения числа потоков при медленном чтении. Учитываются только операции чтения, которые заняли не меньше указанного времени.

<div id="read_from_distributed_cache_if_exists_otherwise_bypass_cache">
  ## read\_from\_distributed\_cache\_if\_exists\_otherwise\_bypass\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "новая настройка"}]}]} />

Действует только в ClickHouse Cloud. То же, что и read\_from\_filesystem\_cache\_if\_exists\_otherwise\_bypass\_cache, но для distributed cache.

<div id="read_from_filesystem_cache_if_exists_otherwise_bypass_cache">
  ## read\_from\_filesystem\_cache\_if\_exists\_otherwise\_bypass\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Разрешает использовать файловый кэш в пассивном режиме: использовать существующие записи кэша, но не добавлять в него новые. Если включать этот параметр для тяжёлых нерегулярных запросов и оставлять отключённым для коротких запросов реального времени, это позволит избежать вытеснения кэша такими тяжёлыми запросами и повысить общую эффективность системы.

<div id="read_from_page_cache_if_exists_otherwise_bypass_cache">
  ## read\_from\_page\_cache\_if\_exists\_otherwise\_bypass\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Добавлен кэш страниц в пространстве пользователя"}]}]} />

Используйте кэш страниц в пространстве пользователя в пассивном режиме, по аналогии с read\_from\_filesystem\_cache\_if\_exists\_otherwise\_bypass\_cache.

<div id="read_in_order_two_level_merge_threshold">
  ## read\_in\_order\_two\_level\_merge\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="100" />

Минимальное количество частей, которое необходимо прочитать для выполнения шага предварительного слияния при многопоточном чтении в порядке первичного ключа.

<div id="read_in_order_use_buffering">
  ## read\_in\_order\_use\_buffering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1"},{"label": "Использовать буферизацию перед слиянием при чтении в порядке первичного ключа"}]}]} />

Использовать буферизацию перед слиянием при чтении в порядке первичного ключа. Это повышает параллелизм выполнения запроса

<div id="read_in_order_use_virtual_row">
  ## read\_in\_order\_use\_virtual\_row
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "0"},{"label": "Использовать виртуальную строку при чтении в порядке первичного ключа или его монотонной функции. Это полезно при поиске по нескольким частям, поскольку затрагиваются только нужные из них."}]}]} />

Использовать виртуальную строку при чтении в порядке первичного ключа или его монотонной функции. Это полезно при поиске по нескольким частям, поскольку затрагиваются только нужные из них.

<div id="read_in_order_use_virtual_row_per_block">
  ## read\_in\_order\_use\_virtual\_row\_per\_block
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Выдавать виртуальную строку после чтения каждого блока в режиме чтения по порядку, чтобы источники можно было чаще переприоритизировать в MergingSortedTransform."}]}]} />

Если этот параметр включен вместе с `read_in_order_use_virtual_row`, после чтения каждого блока выдается виртуальная строка (а не только в начале каждой части).
Это позволяет `MergingSortedTransform` чаще переприоритизировать источники, что полезно, когда последующие фильтры отбрасывают много строк, а данные распределены по частям неравномерно.
Обратите внимание, что при этом отключается оптимизация `read_in_order_use_buffering` и предварительное слияние (`read_in_order_two_level_merge_threshold`) при чтении.

<div id="read_overflow_mode">
  ## read\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Что делать, если лимит превышен.

<div id="read_overflow_mode_leaf">
  ## read\_overflow\_mode\_leaf
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Задаёт, что происходит, когда объём прочитанных данных превышает одно из leaf-ограничений.

Возможные варианты:

* `throw`: сгенерировать исключение (по умолчанию).
* `break`: остановить выполнение запроса и вернуть частичный результат.

<div id="read_priority">
  ## read\_priority
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

Приоритет чтения данных из локальной или удалённой файловой системы. Поддерживается только для метода 'pread\_threadpool' при работе с локальной файловой системой и для метода `threadpool` — с удалённой файловой системой.

<div id="read_through_distributed_cache">
  ## read\_through\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Разрешает чтение из распределённого кэша

<div id="readonly">
  ## readonly
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

0 — без ограничений режима «только для чтения». 1 — только запросы на чтение, а также изменение явно разрешённых настроек. 2 — только запросы на чтение, а также изменение настроек, кроме настройки 'readonly'.

<div id="receive_data_timeout_ms">
  ## receive\_data\_timeout\_ms
</div>

<SettingsInfoBlock type="Milliseconds" default_value="2000" />

Тайм-аут соединения при получении первого пакета данных или пакета Прогресс с положительным значением от реплики

<div id="receive_timeout">
  ## receive\_timeout
</div>

<SettingsInfoBlock type="Seconds" default_value="300" />

Тайм-аут при получении данных из сети, в секундах. Если за этот интервал не было получено ни одного байта, генерируется исключение. Если задать эту настройку на клиенте, то на соответствующем конце соединения на сервере для сокета также будет задан параметр `send_timeout`.

<div id="recursive_cte_max_steps_in_type_inference">
  ## recursive\_cte\_max\_steps\_in\_type\_inference
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10"},{"label": "Максимальное число итераций для вывода типов столбцов в рекурсивных CTE с помощью итеративного getLeastSupertype"}]}]} />

Максимальное число итераций для вывода типов столбцов в рекурсивных CTE. Типы столбцов определяются путём итеративного применения `getLeastSupertype` к нерекурсивной и рекурсивной частям UNION ALL до достижения сходимости. Установите значение 0, чтобы отключить расширение типов и использовать только типы из нерекурсивной части.

<div id="regexp_dict_allow_hyperscan">
  ## regexp\_dict\_allow\_hyperscan
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Разрешает использование библиотеки Hyperscan для словаря regexp\_tree.

<div id="regexp_dict_flag_case_insensitive">
  ## regexp\_dict\_flag\_case\_insensitive
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Использовать регистронезависимое сопоставление для словаря regexp\_tree. Этот параметр можно переопределить в отдельных выражениях с помощью (?i) и (?-i).

<div id="regexp_dict_flag_dotall">
  ## regexp\_dict\_flag\_dotall
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Разрешает символу '.' сопоставляться с символами новой строки в словаре regexp\_tree.

<div id="regexp_max_matches_per_row">
  ## regexp\_max\_matches\_per\_row
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

Устанавливает максимальное число совпадений для одного регулярного выражения в одной строке. Используйте этот параметр, чтобы избежать перегрузки памяти при использовании жадного регулярного выражения в функции [extractAllGroupsHorizontal](/ru/reference/functions/regular-functions/string-search-functions#extractAllGroupsHorizontal).

Possible values:

* Положительное целое число.

<div id="reject_expensive_hyperscan_regexps">
  ## reject\_expensive\_hyperscan\_regexps
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Отклонять шаблоны, обработка которых в Hyperscan, вероятно, потребует значительных ресурсов (из-за взрывного роста числа состояний NFA)

<div id="remerge_sort_lowered_memory_bytes_ratio">
  ## remerge\_sort\_lowered\_memory\_bytes\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="2" />

Если после remerge использование памяти не уменьшается в такое число раз, remerge будет отключён.

<div id="remote_filesystem_read_method">
  ## remote\_filesystem\_read\_method
</div>

<SettingsInfoBlock type="String" default_value="threadpool" />

Метод чтения данных из удалённой файловой системы. Возможные значения: read, threadpool.

<div id="remote_filesystem_read_prefetch">
  ## remote\_filesystem\_read\_prefetch
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать предзагрузку при чтении данных из удалённой файловой системы.

<div id="remote_fs_read_backoff_max_tries">
  ## remote\_fs\_read\_backoff\_max\_tries
</div>

<SettingsInfoBlock type="UInt64" default_value="5" />

Максимальное количество попыток чтения с задержкой

<div id="remote_fs_read_max_backoff_ms">
  ## remote\_fs\_read\_max\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

Максимальное время ожидания при попытке чтения данных с удалённого диска

<div id="remote_read_min_bytes_for_seek">
  ## remote\_read\_min\_bytes\_for\_seek
</div>

<SettingsInfoBlock type="UInt64" default_value="4194304" />

Минимальное количество байтов для удалённого чтения (URL, S3), необходимое для выполнения seek вместо чтения с игнорированием.

<div id="rename_files_after_processing">
  ## rename\_files\_after\_processing
</div>

* **Тип:** String

* **Значение по умолчанию:** Пустая строка

Этот параметр позволяет указать шаблон переименования для файлов, обработанных табличной функцией `file`. Если параметр задан, все файлы, прочитанные табличной функцией `file`, будут переименованы по указанному шаблону с плейсхолдерами, но только если их обработка завершилась успешно.

<div id="placeholders">
  ### Плейсхолдеры
</div>

* `%a` — Полное исходное имя файла (например, "sample.csv").
* `%f` — Исходное имя файла без расширения (например, "sample").
* `%e` — Исходное расширение файла с точкой (например, ".csv").
* `%t` — Временная метка времени (в микросекундах).
* `%%` — Знак процента ("%").

<div id="example">
  ### Пример
</div>

* Параметр: `--rename_files_after_processing="processed_%f_%t%e"`

* Запрос: `SELECT * FROM file('sample.csv')`

Если чтение `sample.csv` выполнено успешно, файл будет переименован в `processed_sample_1683473210851438.csv`

<div id="replace_running_query">
  ## replace\_running\_query
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

При использовании HTTP interface можно передать параметр 'query\_id'. Это может быть любая строка, служащая идентификатором запроса.
Если в этот момент уже существует запрос от того же пользователя с тем же 'query\_id', поведение зависит от параметра 'replace\_running\_query'.

`0` (по умолчанию) – сгенерировать исключение (не разрешать выполнение запроса, если запрос с тем же 'query\_id' уже выполняется).

`1` – отменить старый запрос и запустить новый.

Установите значение этого параметра равным 1, чтобы реализовать подсказки для условий сегментации. После ввода следующего символа, если старый запрос ещё не завершился, его следует отменить.

<div id="replace_running_query_max_wait_ms">
  ## replace\_running\_query\_max\_wait\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="5000" />

Время ожидания завершения выполняющегося запроса с тем же `query_id`, когда активна настройка [replace\_running\_query](#replace_running_query).

Возможные значения:

* Положительное целое число.
* 0 — генерировать исключение и не запускать новый запрос, если сервер уже выполняет запрос с тем же `query_id`.

<div id="replication_wait_for_inactive_replica_timeout">
  ## replication\_wait\_for\_inactive\_replica\_timeout
</div>

<SettingsInfoBlock type="Int64" default_value="120" />

Указывает, сколько времени (в секундах) ждать, пока неактивные реплики выполнят запросы [`ALTER`](/ru/reference/statements/alter), [`OPTIMIZE`](/ru/reference/statements/optimize) или [`TRUNCATE`](/ru/reference/statements/truncate).

Возможные значения:

* `0` — Не ждать.
* Отрицательное целое число — Ждать неограниченно долго.
* Положительное целое число — Количество секунд ожидания.

<div id="restore_replace_external_dictionary_source_to_null">
  ## restore\_replace\_external\_dictionary\_source\_to\_null
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Новая настройка"}]}]} />

При восстановлении заменяет внешние источники словаря на Null. Полезно для тестирования

<div id="restore_replace_external_engines_to_null">
  ## restore\_replace\_external\_engines\_to\_null
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Для тестирования. Заменяет все внешние движки на Null, чтобы не устанавливать внешние соединения.

<div id="restore_replace_external_table_functions_to_null">
  ## restore\_replace\_external\_table\_functions\_to\_null
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Для тестирования. Заменяет все внешние табличные функции на Null, чтобы не устанавливать внешние соединения.

<div id="restore_replicated_merge_tree_to_shared_merge_tree">
  ## restore\_replicated\_merge\_tree\_to\_shared\_merge\_tree
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Заменяет движок таблицы Replicated*MergeTree на Shared*MergeTree при RESTORE.

Значение по умолчанию в Cloud: `1`.

<div id="result_overflow_mode">
  ## result\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Значение по умолчанию в Cloud: `throw`

Определяет, что делать, если объём результата превышает одно из ограничений.

Возможные значения:

* `throw`: сгенерировать исключение (по умолчанию).
* `break`: остановить выполнение запроса и вернуть частичный результат, как если бы
  исходные данные закончились.

Использование 'break' похоже на использование LIMIT. `Break` прерывает выполнение только на
уровне блока. Это означает, что количество возвращаемых строк будет больше, чем
[`max_result_rows`](/ru/reference/settings/session-settings#max_result_rows), будет кратно [`max_block_size`](/ru/reference/settings/session-settings#max_block_size)
и будет зависеть от [`max_threads`](/ru/reference/settings/session-settings#max_threads).

**Пример**

```sql title="Query" theme={null}
SET max_threads = 3, max_block_size = 3333;
SET max_result_rows = 3334, result_overflow_mode = 'break';

SELECT *
FROM numbers_mt(100000)
FORMAT Null;
```

```text title="Result" theme={null}
6666 rows in set. ...
```

<div id="rewrite_count_distinct_if_with_count_distinct_implementation">
  ## rewrite\_count\_distinct\_if\_with\_count\_distinct\_implementation
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.8"},{"label": "1"},{"label": "Переписывание countDistinctIf в соответствии с настройкой count_distinct_implementation"}]}]} />

Позволяет переписывать `countDistcintIf` в соответствии с настройкой [count\_distinct\_implementation](#count_distinct_implementation).

Возможные значения:

* true — Разрешить.
* false — Запретить.

<div id="rewrite_in_to_join">
  ## rewrite\_in\_to\_join
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "новая экспериментальная настройка"}]}]} />

Переписывает выражения вида 'x IN subquery' в JOIN. Это может быть полезно для оптимизации всего запроса за счёт переупорядочивания JOIN.

<div id="rows_before_aggregation">
  ## rows\_before\_aggregation
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.8"},{"label": "0"},{"label": "Предоставляет точное значение статистики rows_before_aggregation, которая показывает количество строк, прочитанных до агрегации"}]}]} />

Если включено, ClickHouse будет предоставлять точное значение статистики rows\_before\_aggregation, которая показывает количество строк, прочитанных до агрегаци

<div id="s3_allow_multipart_copy">
  ## s3\_allow\_multipart\_copy
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Разрешает многочастное копирование в S3.

<div id="s3_allow_parallel_part_upload">
  ## s3\_allow\_parallel\_part\_upload
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать несколько потоков для multipart-загрузки в S3. Это может привести к несколько более высокому использованию памяти

<div id="s3_check_objects_after_upload">
  ## s3\_check\_objects\_after\_upload
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Проверять каждый загруженный в S3 объект с помощью HEAD-запроса, чтобы убедиться в успешности загрузки

<div id="s3_connect_timeout_ms">
  ## s3\_connect\_timeout\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1000"},{"label": "Добавлена новая отдельная настройка тайм-аута подключения к S3"}]}]} />

Тайм-аут подключения к хосту для S3-дисков.

<div id="s3_create_new_file_on_insert">
  ## s3\_create\_new\_file\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает создание нового файла при каждой вставке в таблицы с движком S3. Если параметр включён, при каждой вставке будет создаваться новый объект S3 с таким ключом, например по следующему шаблону:

изначально: `data.Parquet.gz` -> `data.1.Parquet.gz` -> `data.2.Parquet.gz` и т. д.

Возможные значения:

* 0 — запрос `INSERT` создаёт новый файл или завершается ошибкой, если файл уже существует и `s3_truncate_on_insert` не задан.
* 1 — запрос `INSERT` создаёт новый файл при каждой вставке, используя суффикс (начиная со второй вставки), если `s3_truncate_on_insert` не задан.

Подробнее см. [здесь](/ru/integrations/connectors/data-ingestion/AWS/integrating-s3-with-clickhouse#inserting-data).

<div id="s3_disable_checksum">
  ## s3\_disable\_checksum
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Не вычислять контрольную сумму при отправке файла в S3. Это ускоряет запись, поскольку позволяет избежать лишних проходов обработки файла. В большинстве случаев это безопасно, поскольку данные таблиц MergeTree в любом случае защищены контрольными суммами на стороне ClickHouse, а при доступе к S3 по HTTPS уровень TLS уже обеспечивает целостность данных при передаче по сети. При этом дополнительные контрольные суммы в S3 обеспечивают многоуровневую защиту.

<div id="s3_ignore_file_doesnt_exist">
  ## s3\_ignore\_file\_doesnt\_exist
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Позволяет возвращать 0 строк, если запрошенные файлы не существуют, вместо генерации исключения в движке таблицы S3"}]}]} />

Игнорирует отсутствие файла при чтении по определённым ключам, если файл не существует.

Возможные значения:

* 1 — `SELECT` возвращает пустой результат.
* 0 — `SELECT` генерирует исключение.

<div id="s3_list_object_keys_size">
  ## s3\_list\_object\_keys\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

Максимальное количество файлов, которое может быть возвращено одним батчем по запросу ListObject

<div id="s3_max_connections">
  ## s3\_max\_connections
</div>

<SettingsInfoBlock type="UInt64" default_value="1024" />

Максимальное количество соединений на сервер.

<div id="s3_max_get_burst">
  ## s3\_max\_get\_burst
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное число запросов, которые можно отправить одновременно до достижения лимита запросов в секунду. По умолчанию (0) равно `s3_max_get_rps`

<div id="s3_max_get_rps">
  ## s3\_max\_get\_rps
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничение на частоту S3 GET-запросов в секунду до применения ограничения скорости. Ноль означает отсутствие ограничений.

<div id="s3_max_inflight_parts_for_one_file">
  ## s3\_max\_inflight\_parts\_for\_one\_file
</div>

<SettingsInfoBlock type="UInt64" default_value="20" />

Максимальное количество частей, одновременно загружаемых в рамках запроса multipart-загрузки. 0 означает без ограничений.

<div id="s3_max_part_number">
  ## s3\_max\_part\_number
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "10000"},{"label": "Максимальный номер части при загрузке в S3"}]}]} />

Максимальный номер части при загрузке в S3.

<div id="s3_max_put_burst">
  ## s3\_max\_put\_burst
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальное количество запросов, которое может быть отправлено одновременно до достижения ограничения на число запросов в секунду. По умолчанию (0) равно `s3_max_put_rps`

<div id="s3_max_put_rps">
  ## s3\_max\_put\_rps
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Ограничение на число S3 PUT-запросов в секунду до начала throttling. Ноль означает отсутствие ограничений.

<div id="s3_max_single_operation_copy_size">
  ## s3\_max\_single\_operation\_copy\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="33554432" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "33554432"},{"label": "Максимальный размер одной операции копирования в S3"}]}]} />

Максимальный размер одной операции копирования в S3. Этот параметр используется только если s3\_allow\_multipart\_copy имеет значение true.

<div id="s3_max_single_part_upload_size">
  ## s3\_max\_single\_part\_upload\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="33554432" />

Максимальный размер объекта для загрузки в S3 за один запрос.

<div id="s3_max_single_read_retries">
  ## s3\_max\_single\_read\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="4" />

Максимальное количество повторных попыток при одном чтении из S3.

<div id="s3_max_unexpected_write_error_retries">
  ## s3\_max\_unexpected\_write\_error\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="4" />

Максимальное число повторных попыток при возникновении непредвиденных ошибок во время записи в S3.

<div id="s3_max_upload_part_size">
  ## s3\_max\_upload\_part\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="5368709120" />

Максимальный размер части, загружаемой при multipart-загрузке в S3.

<div id="s3_min_upload_part_size">
  ## s3\_min\_upload\_part\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="16777216" />

Минимальный размер части, загружаемой при multipart-загрузке в S3.

<div id="s3_path_filter_limit">
  ## s3\_path\_filter\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1000"},{"label": "новая настройка"}]}]} />

Максимальное число значений `_path`, которые можно извлечь из фильтров запроса и использовать для перебора файлов
вместо листинга по glob-шаблону. 0 означает, что параметр отключён.

<div id="s3_request_timeout_ms">
  ## s3\_request\_timeout\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="30000" />

Тайм-аут бездействия при отправке и получении данных в/из S3. Операция завершается ошибкой, если один вызов TCP-чтения или записи блокируется на это время.

<div id="s3_skip_empty_files">
  ## s3\_skip\_empty\_files
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Надеемся, это улучшит пользовательский опыт"}]}]} />

Включает или отключает пропуск пустых файлов в таблицах движка [S3](/ru/reference/engines/table-engines/integrations/s3).

Возможные значения:

* 0 — `SELECT` генерирует исключение, если пустой файл несовместим с запрошенным форматом.
* 1 — `SELECT` возвращает пустой результат для пустого файла.

<div id="s3_slow_all_threads_after_network_error">
  ## s3\_slow\_all\_threads\_after\_network\_error
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "новая настройка"}]}]} />

Если установлено значение `true`, все потоки, выполняющие запросы S3 к одной и той же конечной точке резервного копирования, замедляются
после того, как любой отдельный запрос S3 сталкивается с сетевой ошибкой, допускающей повторную попытку, например тайм-аутом сокета.
Если установлено значение `false`, каждый поток обрабатывает задержку запросов S3 независимо от остальных.

<div id="s3_strict_upload_part_size">
  ## s3\_strict\_upload\_part\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Точный размер части, загружаемой при multipart-загрузке в S3 (некоторые реализации не поддерживают части переменного размера).

<div id="s3_throw_on_zero_files_match">
  ## s3\_throw\_on\_zero\_files\_match
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Сгенерировать ошибку, если запрос ListObjects не соответствует ни одному файлу

<div id="s3_truncate_on_insert">
  ## s3\_truncate\_on\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает усечение перед вставкой в таблицы с движком S3. Если параметр отключён, при попытке вставки будет сгенерировано исключение, если объект S3 уже существует.

Возможные значения:

* 0 — запрос `INSERT` создаёт новый файл или завершается ошибкой, если файл уже существует и параметр `s3_create_new_file_on_insert` не задан.
* 1 — запрос `INSERT` заменяет существующее содержимое файла новыми данными.

Подробнее см. [здесь](/ru/integrations/connectors/data-ingestion/AWS/integrating-s3-with-clickhouse#inserting-data).

<div id="s3_upload_part_size_multiply_factor">
  ## s3\_upload\_part\_size\_multiply\_factor
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

Умножайте s3\_min\_upload\_part\_size на этот коэффициент каждый раз, когда в результате одной записи в S3 было загружено s3\_multiply\_parts\_count\_threshold частей.

<div id="s3_upload_part_size_multiply_parts_count_threshold">
  ## s3\_upload\_part\_size\_multiply\_parts\_count\_threshold
</div>

<SettingsInfoBlock type="UInt64" default_value="500" />

Каждый раз, когда в S3 загружается такое число частей, значение s3\_min\_upload\_part\_size умножается на s3\_upload\_part\_size\_multiply\_factor.

<div id="s3_uri_style">
  ## s3\_uri\_style
</div>

<SettingsInfoBlock type="S3UriStyle" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "auto"},{"label": "Новая настройка"}]}]} />

Принудительно задаёт стиль конечной точки S3. Возможные значения: auto, virtual\_hosted, path.

<div id="s3_use_adaptive_timeouts">
  ## s3\_use\_adaptive\_timeouts
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Если установлено значение `true`, то для всех запросов к S3 первые две попытки выполняются с короткими тайм-аутами отправки и получения.
Если установлено значение `false`, то все попытки выполняются с одинаковыми тайм-аутами.

<div id="s3_validate_request_settings">
  ## s3\_validate\_request\_settings
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Позволяет отключить проверку настроек запросов S3"}]}]} />

Включает проверку настроек запросов S3.
Возможные значения:

* 1 — проверять настройки.
* 0 — не проверять настройки.

<div id="s3queue_default_zookeeper_path">
  ## s3queue\_default\_zookeeper\_path
</div>

<SettingsInfoBlock type="String" default_value="/clickhouse/s3queue/" />

Префикс пути ZooKeeper по умолчанию для движка S3Queue

<div id="s3queue_enable_logging_to_s3queue_log">
  ## s3queue\_enable\_logging\_to\_s3queue\_log
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает запись в system.s3queue\_log. Значение можно переопределить для каждой таблицы с помощью настроек таблицы.

<div id="s3queue_keeper_fault_injection_probability">
  ## s3queue\_keeper\_fault\_injection\_probability
</div>

<SettingsInfoBlock type="Float" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Вероятность инъекции сбоев Keeper для S3Queue.

<div id="s3queue_migrate_old_metadata_to_buckets">
  ## s3queue\_migrate\_old\_metadata\_to\_buckets
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Перенести старую структуру метаданных таблицы S3Queue в новую

<div id="schema_inference_cache_require_modification_time_for_url">
  ## schema\_inference\_cache\_require\_modification\_time\_for\_url
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать схему из кэша для URL с проверкой времени последнего изменения (для URL с заголовком Last-Modified)

<div id="schema_inference_use_cache_for_azure">
  ## schema\_inference\_use\_cache\_for\_azure
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать кэш при определении схемы при использовании табличной функции Azure

<div id="schema_inference_use_cache_for_file">
  ## schema\_inference\_use\_cache\_for\_file
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать кэш при определении схемы при использовании табличной функции file

<div id="schema_inference_use_cache_for_hdfs">
  ## schema\_inference\_use\_cache\_for\_hdfs
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать кэш при определении схемы с помощью табличной функции hdfs

<div id="schema_inference_use_cache_for_s3">
  ## schema\_inference\_use\_cache\_for\_s3
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать кэш при определении схемы при использовании табличной функции S3

<div id="schema_inference_use_cache_for_url">
  ## schema\_inference\_use\_cache\_for\_url
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать кэш при определении схемы с помощью табличной функции url

<div id="secondary_indices_enable_bulk_filtering">
  ## secondary\_indices\_enable\_bulk\_filtering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Новый алгоритм фильтрации по индексам пропуска данных"}]}]} />

Включает алгоритм пакетной фильтрации для индексов. Ожидается, что он всегда работает лучше, но эта настройка оставлена для совместимости и дополнительного контроля.

<div id="select_sequential_consistency">
  ## select\_sequential\_consistency
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<Note>
  Поведение этой настройки различается в SharedMergeTree и ReplicatedMergeTree. Подробнее о поведении `select_sequential_consistency` в SharedMergeTree см. в разделе [SharedMergeTree consistency](/ru/products/cloud/features/infrastructure/shared-merge-tree#consistency).
</Note>

Включает или отключает последовательную согласованность для запросов `SELECT`. Требует, чтобы `insert_quorum_parallel` был отключен (по умолчанию он включен).

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

Использование

Когда последовательная согласованность включена, ClickHouse позволяет клиенту выполнять запрос `SELECT` только к тем репликам, которые содержат данные из всех предыдущих запросов `INSERT`, выполненных с `insert_quorum`. Если клиент обращается к неполной реплике, ClickHouse сгенерирует исключение. Запрос `SELECT` не будет включать данные, которые еще не записаны в кворум реплик.

Когда `insert_quorum_parallel` включен (по умолчанию), `select_sequential_consistency` не работает. Это связано с тем, что параллельные запросы `INSERT` могут записываться в разные наборы реплик, образующих кворум, поэтому нет гарантии, что какая-либо одна реплика получит все записи.

См. также:

* [insert\_quorum](#insert_quorum)
* [insert\_quorum\_timeout](#insert_quorum_timeout)
* [insert\_quorum\_parallel](#insert_quorum_parallel)

<div id="send_logs_level">
  ## send\_logs\_level
</div>

<SettingsInfoBlock type="LogsLevel" default_value="fatal" />

Отправляет клиенту текстовые журналы сервера с указанным минимальным уровнем. Допустимые значения: 'trace', 'debug', 'information', 'warning', 'error', 'fatal', 'none'

<div id="send_logs_source_regexp">
  ## send\_logs\_source\_regexp
</div>

Отправлять текстовые журналы сервера, имя источника которых соответствует указанному регулярному выражению. Пустое значение означает все источники.

<div id="send_profile_events">
  ## send\_profile\_events
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Новая настройка. Определяет, отправлять ли клиентам события профилирования."}]}]} />

Включает или отключает отправку клиенту пакетов [ProfileEvents](/ru/resources/develop-contribute/native-protocol/server#profile-events).

Этот параметр можно отключить, чтобы уменьшить сетевой трафик для клиентов, которым события профилирования не нужны.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="send_progress_in_http_headers">
  ## send\_progress\_in\_http\_headers
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает HTTP-заголовки ответа `X-ClickHouse-Progress` в ответах `clickhouse-server`.

Дополнительную информацию см. в [описании HTTP interface](/ru/concepts/features/interfaces/http).

Possible values:

* 0 — Отключено.
* 1 — Включено.

<div id="send_table_structure_on_insert_with_inline_data">
  ## send\_table\_structure\_on\_insert\_with\_inline\_data
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Новая настройка, определяющая, отправляет ли сервер структуру таблицы для запросов INSERT со встроенными данными."}]}]} />

Если настройка отключена и запрос INSERT содержит встроенные данные, сервер не будет отправлять клиенту структуру таблицы и значения по умолчанию для столбцов по собственному протоколу. Вместо этого сервер сам разберёт встроенные данные. Это может повысить производительность при большом количестве небольших вставок по собственному протоколу.

<div id="send_timeout">
  ## send\_timeout
</div>

<SettingsInfoBlock type="Seconds" default_value="300" />

Тайм-аут отправки данных по сети, в секундах. Если клиенту нужно отправить данные, но за этот интервал ему не удаётся отправить ни одного байта, будет сгенерировано исключение. Если задать этот параметр на клиенте, на соответствующем конце соединения на сервере для сокета также будет установлен `receive_timeout`.

<div id="serialize_query_plan">
  ## serialize\_query\_plan
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "NewSetting"}]}]} />

Сериализация плана запроса для распределённой обработки

<div id="serialize_string_in_memory_with_zero_byte">
  ## serialize\_string\_in\_memory\_with\_zero\_byte
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "новая настройка"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "новая настройка"}]}]} />

Сериализует значения String при агрегации, добавляя в конец нулевой байт. Включите эту настройку, чтобы сохранить совместимость при выполнении запросов к кластеру с несовместимыми версиями.

<div id="session_timezone">
  ## session\_timezone
</div>

Устанавливает неявный часовой пояс для текущего сеанса или запроса.
Неявный часовой пояс — это часовой пояс, применяемый к значениям типа DateTime/DateTime64, для которых часовой пояс явно не задан.
Этот параметр имеет приоритет над глобально настроенным неявным часовым поясом (на уровне сервера).
Значение '' (пустая строка) означает, что неявный часовой пояс текущего сеанса или запроса совпадает с [часовым поясом сервера](/ru/reference/settings/server-settings/settings#timezone).

Чтобы получить часовой пояс сеанса и часовой пояс сервера, можно использовать функции `timeZone()` и `serverTimeZone()`.

Возможные значения:

* Любое имя часового пояса из `system.time_zones`, например `Europe/Berlin`, `UTC` или `Zulu`

Примеры:

```sql theme={null}
SELECT timeZone(), serverTimeZone() FORMAT CSV

"Europe/Berlin","Europe/Berlin"
```

```sql theme={null}
SELECT timeZone(), serverTimeZone() SETTINGS session_timezone = 'Asia/Novosibirsk' FORMAT CSV

"Asia/Novosibirsk","Europe/Berlin"
```

Назначьте внутреннему DateTime без явно указанного часового пояса часовой пояс сеанса 'America/Denver':

```sql theme={null}
SELECT toDateTime64(toDateTime64('1999-12-12 23:23:23.123', 3), 3, 'Europe/Zurich') SETTINGS session_timezone = 'America/Denver' FORMAT TSV

1999-12-13 07:23:23.123
```

<Warning>
  Не все функции, которые разбирают DateTime/DateTime64, учитывают `session_timezone`. Это может приводить к трудноуловимым ошибкам.
  См. пример и пояснение ниже.
</Warning>

```sql theme={null}
CREATE TABLE test_tz (`d` DateTime('UTC')) ENGINE = Memory AS SELECT toDateTime('2000-01-01 00:00:00', 'UTC');

SELECT *, timeZone() FROM test_tz WHERE d = toDateTime('2000-01-01 00:00:00') SETTINGS session_timezone = 'Asia/Novosibirsk'
0 rows in set.

SELECT *, timeZone() FROM test_tz WHERE d = '2000-01-01 00:00:00' SETTINGS session_timezone = 'Asia/Novosibirsk'
┌───────────────────d─┬─timeZone()───────┐
│ 2000-01-01 00:00:00 │ Asia/Novosibirsk │
└─────────────────────┴──────────────────┘
```

Это происходит из-за различий в конвейерах разбора:

* `toDateTime()` без явно указанного часового пояса, используемая в первом запросе `SELECT`, учитывает настройку `session_timezone` и глобальный часовой пояс.
* Во втором запросе значение DateTime разбирается из String и наследует тип и часовой пояс существующего столбца `d`. Поэтому настройка `session_timezone` и глобальный часовой пояс не учитываются.

**См. также**

* [timezone](/ru/reference/settings/server-settings/settings#timezone)

<div id="set_overflow_mode">
  ## set\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Определяет, что произойдёт, если объём данных превысит один из лимитов.

Возможные значения:

* `throw`: сгенерировать исключение (по умолчанию).
* `break`: остановить выполнение запроса и вернуть частичный результат, как если бы
  исходные данные закончились.

<div id="shared_merge_tree_sequential_consistency_initial_parts_update_backoff_ms">
  ## shared\_merge\_tree\_sequential\_consistency\_initial\_parts\_update\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "50"},{"label": "Новая настройка для уменьшения спорадических ошибок UNFINISHED в запросах с последовательной согласованностью при использовании SharedMergeTree."}]}]} />

Начальная задержка в миллисекундах перед обновлением частей при использовании `select_sequential_consistency` с `SharedMergeTree`. Доступно только в ClickHouse Cloud.

<div id="shared_merge_tree_sequential_consistency_max_parts_update_backoff_ms">
  ## shared\_merge\_tree\_sequential\_consistency\_max\_parts\_update\_backoff\_ms
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1000"},{"label": "Новая настройка для уменьшения редких ошибок UNFINISHED в запросах с последовательной согласованностью для SharedMergeTree."}]}]} />

Максимальная задержка в миллисекундах перед повторной попыткой обновления частей при использовании `select_sequential_consistency` с `SharedMergeTree`. Доступно только в ClickHouse Cloud.

<div id="shared_merge_tree_sequential_consistency_parts_update_max_retries">
  ## shared\_merge\_tree\_sequential\_consistency\_parts\_update\_max\_retries
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10"},{"label": "Новая настройка для уменьшения редких ошибок UNFINISHED в запросах с последовательной согласованностью для SharedMergeTree."}]}]} />

Максимальное количество повторных попыток обновления частей при использовании `select_sequential_consistency` с `SharedMergeTree`. Доступно только в ClickHouse Cloud.

<div id="shared_merge_tree_sync_parts_on_partition_operations">
  ## shared\_merge\_tree\_sync\_parts\_on\_partition\_operations
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "Новая настройка. По умолчанию части всегда синхронизируются"}]}]} />

Автоматически синхронизирует набор частей данных после операций MOVE|REPLACE|ATTACH с партициями в таблицах SMT. Только в ClickHouse Cloud

<div id="short_circuit_function_evaluation">
  ## short\_circuit\_function\_evaluation
</div>

<SettingsInfoBlock type="ShortCircuitFunctionEvaluation" default_value="enable" />

Позволяет вычислять функции [if](/ru/reference/functions/regular-functions/conditional-functions#if), [multiIf](/ru/reference/functions/regular-functions/conditional-functions#multiIf), [and](/ru/reference/functions/regular-functions/logical-functions#and) и [or](/ru/reference/functions/regular-functions/logical-functions#or) с использованием [короткого замыкания](https://en.wikipedia.org/wiki/Short-circuit_evaluation). Это помогает оптимизировать выполнение сложных выражений в этих функциях и предотвращать возможные исключения (например, деление на ноль там, где оно не должно происходить).

Возможные значения:

* `enable` — Включает вычисление функций с коротким замыканием для функций, к которым оно применимо (которые могут сгенерировать исключение или требуют больших вычислительных затрат).
* `force_enable` — Включает вычисление функций с коротким замыканием для всех функций.
* `disable` — Отключает вычисление функций с коротким замыканием.

<div id="short_circuit_function_evaluation_for_nulls">
  ## short\_circuit\_function\_evaluation\_for\_nulls
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Разрешает выполнять функции с аргументами Nullable только для строк, в которых все аргументы имеют значения, отличные от NULL"}]}]} />

Оптимизирует вычисление функций, которые возвращают NULL, если хотя бы один аргумент равен NULL. Когда доля значений NULL в аргументах функции превышает short\_circuit\_function\_evaluation\_for\_nulls\_threshold, система пропускает построчное вычисление функции. Вместо этого она сразу возвращает NULL для всех строк, избегая лишних вычислений.

<div id="short_circuit_function_evaluation_for_nulls_threshold">
  ## short\_circuit\_function\_evaluation\_for\_nulls\_threshold
</div>

<SettingsInfoBlock type="Double" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Пороговая доля значений NULL, при превышении которой функции с аргументами Nullable выполняются только для строк, в которых все аргументы имеют значения, отличные от NULL. Применяется, когда включена настройка short_circuit_function_evaluation_for_nulls."}]}]} />

Пороговая доля значений NULL, при превышении которой функции с аргументами Nullable выполняются только для строк, в которых все аргументы имеют значения, отличные от NULL. Применяется, когда включена настройка short\_circuit\_function\_evaluation\_for\_nulls.
Если доля строк, содержащих значения NULL, от общего числа строк превышает этот порог, такие строки не вычисляются.

<div id="show_data_lake_catalogs_in_system_tables">
  ## show\_data\_lake\_catalogs\_in\_system\_tables
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "новая настройка"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Каталоги озер данных по умолчанию отключены в системных таблицах"}]}]} />

Включает отображение каталогов озер данных в системных таблицах.

<div id="show_processlist_include_internal">
  ## show\_processlist\_include\_internal
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Показывает внутренние вспомогательные процессы в выводе запроса `SHOW PROCESSLIST`.

К внутренним процессам относятся перезагрузка словарей, перезагрузка refreshable materialized view, вспомогательные `SELECT`, выполняемые в запросах `SHOW ...`, вспомогательные запросы `CREATE DATABASE ...`, которые выполняются внутри системы для обработки повреждённых таблиц, и многое другое.

<div id="show_table_uuid_in_table_create_query_if_not_nil">
  ## show\_table\_uuid\_in\_table\_create\_query\_if\_not\_nil
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.7"},{"label": "0"},{"label": "Прекратить показывать UID таблицы в её запросе CREATE для Engine=Atomic"}]}]} />

Задаёт, как отображается запрос `SHOW TABLE`.

Возможные значения:

* 0 — запрос отображается без UUID таблицы.
* 1 — запрос отображается с UUID таблицы.

<div id="single_join_prefer_left_table">
  ## single\_join\_prefer\_left\_table
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Для одиночного JOIN в случае неоднозначности идентификаторов предпочтение отдаётся левой таблице

<div id="skip_redundant_aliases_in_udf">
  ## skip\_redundant\_aliases\_in\_udf
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "Если включено, это позволяет несколько раз использовать одну и ту же пользовательскую функцию для нескольких материализованных столбцов в одной таблице."}]}]} />

Избыточные псевдонимы не используются (не подставляются) в пользовательских функциях, что упрощает их использование.

Возможные значения:

* 1 — Псевдонимы пропускаются (подставляются) в UDF.
* 0 — Псевдонимы не пропускаются (не подставляются) в UDF.

**Пример**

Разница между включенным и отключенным состоянием:

Запрос:

```sql theme={null}
SET skip_redundant_aliases_in_udf = 0;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));

EXPLAIN SYNTAX SELECT test_03274(4 + 2);
```

Результат:

```text theme={null}
SELECT ((4 + 2) + 1 AS y, y + 2)
```

Запрос:

```sql theme={null}
SET skip_redundant_aliases_in_udf = 1;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));

EXPLAIN SYNTAX SELECT test_03274(4 + 2);
```

Результат:

```text theme={null}
SELECT ((4 + 2) + 1, ((4 + 2) + 1) + 2)
```

<div id="skip_unavailable_shards">
  ## skip\_unavailable\_shards
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает пропуск недоступных сегментов без вывода предупреждений.

Сегмент считается недоступным, если недоступны все его реплики. Реплика недоступна в следующих случаях:

* ClickHouse не может подключиться к реплике по любой причине.

  При подключении к реплике ClickHouse выполняет несколько попыток. Если все они завершаются неудачей, реплика считается недоступной.

* Реплику не удается разрешить через DNS.

  Если имя хоста реплики не удается разрешить через DNS, это может указывать на одну из следующих ситуаций:

  * У хоста реплики отсутствует DNS-запись. Это может происходить в системах с динамическим DNS, например, [Kubernetes](https://kubernetes.io), где во время простоя узлы могут не разрешаться, и это не считается ошибкой.

  * Ошибка конфигурации. В файле конфигурации ClickHouse указано неверное имя хоста.

Возможные значения:

* 1 — пропуск включен.

  Если сегмент недоступен, ClickHouse возвращает результат на основе частичных данных и не сообщает о проблемах с доступностью узлов.

* 0 — пропуск отключен.

  Если сегмент недоступен, ClickHouse генерирует исключение.

<div id="sleep_after_receiving_query_ms">
  ## sleep\_after\_receiving\_query\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="0" />

Время задержки после получения запроса в TCPHandler

<div id="sleep_in_send_data_ms">
  ## sleep\_in\_send\_data\_ms
</div>

<SettingsInfoBlock type="Milliseconds" default_value="0" />

Длительность паузы при отправке данных в TCPHandler

<div id="sleep_in_send_tables_status_ms">
  ## sleep\_in\_send\_tables\_status\_ms
</div>

<SettingsInfoBlock type="Milliseconds" default_value="0" />

Время ожидания перед отправкой ответа о состоянии таблиц в TCPHandler

<div id="sort_overflow_mode">
  ## sort\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Определяет, что произойдет, если число строк, полученных перед сортировкой, превысит один из лимитов.

Возможные значения:

* `throw`: сгенерировать исключение.
* `break`: остановить выполнение запроса и вернуть частичный результат.

<div id="split_intersecting_parts_ranges_into_layers_final">
  ## split\_intersecting\_parts\_ranges\_into\_layers\_final
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Позволяет разбивать диапазоны пересекающихся частей на слои во время оптимизации FINAL"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "Позволяет разбивать диапазоны пересекающихся частей на слои во время оптимизации FINAL"}]}]} />

Разбивать диапазоны пересекающихся частей на слои во время оптимизаци

<div id="split_parts_ranges_into_intersecting_and_non_intersecting_final">
  ## split\_parts\_ranges\_into\_intersecting\_and\_non\_intersecting\_final
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Позволяет разделять диапазоны частей на пересекающиеся и непересекающиеся при оптимизации FINAL"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "Позволяет разделять диапазоны частей на пересекающиеся и непересекающиеся при оптимизации FINAL"}]}]} />

Разделяет диапазоны частей на пересекающиеся и непересекающиеся при оптимизации FINAL

<div id="splitby_max_substrings_includes_remaining_string">
  ## splitby\_max\_substrings\_includes\_remaining\_string
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Управляет тем, будет ли функция [splitBy\*()](/ru/reference/functions/regular-functions/splitting-merging-functions) с аргументом `max_substrings` > 0 включать оставшуюся часть строки в последний элемент результирующего массива.

Возможные значения:

* `0` - Оставшаяся часть строки не будет включена в последний элемент результирующего массива.
* `1` - Оставшаяся часть строки будет включена в последний элемент результирующего массива. Это соответствует поведению функции [`split()`](https://spark.apache.org/docs/3.1.2/api/python/reference/api/pyspark.sql.functions.split.html) в Spark и метода ['string.split()'](https://docs.python.org/3/library/stdtypes.html#str.split) в Python.

<div id="stop_refreshable_materialized_views_on_startup">
  ## stop\_refreshable\_materialized\_views\_on\_startup
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

При запуске сервера предотвращает планирование refreshable materialized view, как если бы была выполнена команда SYSTEM STOP VIEWS. После этого их можно вручную запустить с помощью `SYSTEM START VIEWS` или `SYSTEM START VIEW <name>`. Также применяется к вновь созданным представлениям. Не влияет на materialized view без обновления по расписанию.

<div id="storage_file_read_method">
  ## storage\_file\_read\_method
</div>

<SettingsInfoBlock type="LocalFSReadMethod" default_value="pread" />

Метод чтения данных из файла хранилища; одно из значений: `read`, `pread`, `mmap`. Метод `mmap` не используется в clickhouse-server (он предназначен для clickhouse-local).

<div id="storage_system_stack_trace_pipe_read_timeout_ms">
  ## storage\_system\_stack\_trace\_pipe\_read\_timeout\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="100" />

Максимальное время чтения из пайпа для получения информации от потоков при выполнении запроса к таблице `system.stack_trace`. Эта настройка используется только в целях тестирования и не предназначена для изменения пользователями.

<div id="stream_flush_interval_ms">
  ## stream\_flush\_interval\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="7500" />

Применяется к таблицам со стримингом при тайм-ауте или когда поток генерирует [max\_insert\_block\_size](#max_insert_block_size) строк.

Значение по умолчанию — 7500.

Чем меньше значение, тем чаще данные записываются в таблицу. Слишком низкое значение приводит к снижению производительности.

<div id="stream_like_engine_allow_direct_select">
  ## stream\_like\_engine\_allow\_direct\_select
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.12"},{"label": "0"},{"label": "По умолчанию прямой запрос SELECT для Kafka/RabbitMQ/FileLog запрещен"}]}]} />

Разрешает прямой запрос SELECT для движков Kafka, RabbitMQ, FileLog, Redis Streams, S3Queue, AzureQueue и NATS. Если есть присоединённые materialized views, запрос SELECT не разрешается, даже если эта настройка включена.
Если присоединённых materialized views нет, включение этой настройки позволяет читать данные. Имейте в виду, что обычно прочитанные данные удаляются из очереди. Чтобы избежать удаления прочитанных данных, необходимо правильно настроить параметры соответствующего движка.

<div id="stream_like_engine_insert_queue">
  ## stream\_like\_engine\_insert\_queue
</div>

Когда движок потокового типа читает из нескольких очередей, при записи данных пользователю нужно выбрать одну очередь, в которую будет выполняться вставка. Используется в Redis Streams и NATS.

<div id="stream_poll_timeout_ms">
  ## stream\_poll\_timeout\_ms
</div>

<SettingsInfoBlock type="Миллисекунды" default_value="500" />

Тайм-аут при опросе данных из/в стриминговые хранилища.

<div id="system_events_show_zero_values">
  ## system\_events\_show\_zero\_values
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Позволяет выбирать события с нулевыми значениями из [`system.events`](/ru/reference/system-tables/events).

Некоторые системы мониторинга требуют передавать им все значения метрик для каждой контрольной точки, даже если значение метрики равно нулю.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

**Примеры**

Запрос

```sql theme={null}
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
```

Результат

```text theme={null}
Ok.
```

Запрос

```sql theme={null}
SET system_events_show_zero_values = 1;
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
```

Результат

```text theme={null}
┌─event────────────────────┬─value─┬─description───────────────────────────────────────────┐
│ QueryMemoryLimitExceeded │     0 │ Number of times when memory limit exceeded for query. │
└──────────────────────────┴───────┴───────────────────────────────────────────────────────┘
```

<div id="system_metric_log_show_zero_values_in_histograms">
  ## system\_metric\_log\_show\_zero\_values\_in\_histograms
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "Новая настройка, управляющая тем, записываются ли данные гистограмм с нулевыми значениями во вложенный столбец histograms таблицы system.metric_log."}]}]} />

Определяет, записываются ли данные гистограмм с нулевыми значениями во вложенный столбец `histograms` таблицы `system.metric_log`.

По умолчанию гистограммы, у которых общее число наблюдений `count` равно нулю, пропускаются, а в каждой записываемой гистограмме из map `histogram` также исключаются записи бакетов без наблюдений. Включите эту настройку, чтобы записывать каждую гистограмму и каждый бакет независимо от значения count — это полезно для систем мониторинга, которым требуется, чтобы каждая метрика присутствовала в каждой контрольной точке.

Возможные значения:

* 0 — Отключено. Гистограммы с `count = 0` не записываются; записанные гистограммы включают только те бакеты, в которые попало хотя бы одно наблюдение.
* 1 — Включено. Записываются все гистограммы, и в `histogram` присутствует каждая граница бакета.

<div id="table_engine_read_through_distributed_cache">
  ## table\_engine\_read\_through\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "новая настройка"}]}]} />

Действует только в ClickHouse Cloud. Разрешает чтение из distributed cache через движки таблиц / табличные функции (s3, azure и т. д.)

<div id="table_function_remote_max_addresses">
  ## table\_function\_remote\_max\_addresses
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

Задаёт максимальное количество адресов, генерируемых по шаблонам для функции [remote](/ru/reference/functions/table-functions/remote).

Возможные значения:

* Положительное целое число.

<div id="tcp_keep_alive_timeout">
  ## tcp\_keep\_alive\_timeout
</div>

<SettingsInfoBlock type="Секунды" default_value="290" />

Время в секундах, в течение которого соединение должно оставаться бездействующим, прежде чем TCP начнет отправлять keepalive-пакеты

<div id="temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds">
  ## temporary\_data\_in\_cache\_reserve\_space\_wait\_lock\_timeout\_milliseconds
</div>

<SettingsInfoBlock type="UInt64" default_value="600000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "600000"},{"label": "Время ожидания получения блокировки кэша для резервирования места под временные данные в файловом кэше"}]}]} />

Время ожидания получения блокировки кэша для резервирования места под временные данные в файловом кэше

<div id="temporary_files_buffer_size">
  ## temporary\_files\_buffer\_size
</div>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1048576" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1048576"},{"label": "новая настройка"}]}]} />

Размер буфера для модулей записи временных файлов. Чем больше размер буфера, тем меньше системных вызовов, но тем выше потребление памяти.

<div id="temporary_files_codec">
  ## temporary\_files\_codec
</div>

<SettingsInfoBlock type="String" default_value="LZ4" />

Устанавливает кодек сжатия для временных файлов, используемых при операциях сортировки и JOIN на диске.

Возможные значения:

* LZ4 — применяется сжатие [LZ4](https://en.wikipedia.org/wiki/LZ4_\(compression_algorithm\)).
* NONE — сжатие не применяется.

<div id="text_index_hint_max_selectivity">
  ## text\_index\_hint\_max\_selectivity
</div>

<SettingsInfoBlock type="Float" default_value="0.2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0.2"},{"label": "новая настройка"}]}]} />

Максимальная селективность фильтра, при которой используется подсказка, построенная на основе инвертированного текстового индекса.

<div id="text_index_like_max_postings_to_read">
  ## text\_index\_like\_max\_postings\_to\_read
</div>

<SettingsInfoBlock type="UInt64" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "50"},{"label": "новая настройка"}]}]} />

Максимальное количество больших postings, считываемых, когда для оценки LIKE по текстовому индексу включено сканирование словаря.

Требует включения `use_text_index_like_evaluation_by_dictionary_scan`.

<div id="text_index_like_min_pattern_length">
  ## text\_index\_like\_min\_pattern\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="4" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "4"},{"label": "новая настройка"}]}]} />

Минимальная длина буквенно-цифровой искомой подстроки в шаблоне LIKE/ILIKE, необходимая для использования оценки LIKE текстовым индексом при сканировании словаря.
Шаблоны короче этого порога соответствуют слишком большому количеству токенов словаря, поэтому они пропускаются, чтобы избежать ресурсоемкого сканирования.

Требуется, чтобы `use_text_index_like_evaluation_by_dictionary_scan` был включен.

<div id="throw_if_no_data_to_insert">
  ## throw\_if\_no\_data\_to\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Разрешает или запрещает пустые INSERT-запросы; по умолчанию включен (при пустой вставке генерируется ошибка). Применяется только к INSERT-запросам, выполняемым через [`clickhouse-client`](/ru/concepts/features/interfaces/cli) или [gRPC-интерфейс](/ru/concepts/features/interfaces/grpc).

<div id="throw_on_error_from_cache_on_write_operations">
  ## throw\_on\_error\_from\_cache\_on\_write\_operations
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Игнорировать ошибки кэша при кэшировании во время операций записи (INSERT, слияния)

<div id="throw_on_max_partitions_per_insert_block">
  ## throw\_on\_max\_partitions\_per\_insert\_block
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Позволяет управлять поведением при достижении значения `max_partitions_per_insert_block`.

Возможные значения:

* `true`  - Когда блок вставки достигает `max_partitions_per_insert_block`, генерируется исключение.
* `false` - При достижении `max_partitions_per_insert_block` в журнал записывается предупреждение.

<Tip>
  Это может быть полезно, если вы хотите понять, как изменение [`max_partitions_per_insert_block`](/ru/reference/settings/session-settings#max_partitions_per_insert_block) повлияет на пользователей.
</Tip>

<div id="throw_on_unsupported_query_inside_transaction">
  ## throw\_on\_unsupported\_query\_inside\_transaction
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Сгенерировать исключение, если внутри транзакции используется неподдерживаемый запрос

<div id="timeout_before_checking_execution_speed">
  ## timeout\_before\_checking\_execution\_speed
</div>

<SettingsInfoBlock type="Секунды" default_value="10" />

Проверяет, что скорость выполнения не слишком низкая (не меньше `min_execution_speed`), после истечения указанного времени в секундах.

<div id="timeout_overflow_mode">
  ## timeout\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Указывает, что делать, если запрос выполняется дольше `max_execution_time` или
оценочное время выполнения превышает `max_estimated_execution_time`.

Возможные значения:

* `throw`: сгенерировать исключение (по умолчанию).
* `break`: остановить выполнение запроса и вернуть частичный результат, как если бы
  исходные данные были исчерпаны.

<div id="timeout_overflow_mode_leaf">
  ## timeout\_overflow\_mode\_leaf
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Задаёт поведение, если запрос на листовом узле выполняется дольше, чем `max_execution_time_leaf`.

Возможные значения:

* `throw`: сгенерировать исключение (по умолчанию).
* `break`: остановить выполнение запроса и вернуть частичный результат, как если бы
  исходные данные были исчерпаны.

<div id="totals_auto_threshold">
  ## totals\_auto\_threshold
</div>

<SettingsInfoBlock type="Float" default_value="0.5" />

Порог для `totals_mode = 'auto'`.
См. раздел «Модификатор WITH TOTALS».

<div id="totals_mode">
  ## totals\_mode
</div>

<SettingsInfoBlock type="TotalsMode" default_value="after_having_exclusive" />

Как вычислять TOTALS при наличии HAVING, а также когда заданы max\_rows\_to\_group\_by и group\_by\_overflow\_mode = 'any'.
См. раздел "модификатор WITH TOTALS".

<div id="trace_profile_events">
  ## trace\_profile\_events
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает или отключает сбор трассировок стека при каждом обновлении profile events вместе с именем события профиля и значением приращения, а также отправку этих данных в [trace\_log](/ru/reference/system-tables/trace_log).

Возможные значения:

* 1 — трассировка profile events включена.
* 0 — трассировка profile events отключена.

<div id="trace_profile_events_list">
  ## trace\_profile\_events\_list
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": ""},{"label": "новая настройка"}]}]} />

Когда настройка `trace_profile_events` включена, трассировка ограничивается указанным списком имен, разделенных запятыми.
Если `trace_profile_events_list` — пустая строка (по умолчанию), трассируются все profile events.

Пример значения: 'DiskS3ReadMicroseconds,DiskS3ReadRequestsCount,SelectQueryTimeMicroseconds,ReadBufferFromS3Bytes'

Эта настройка позволяет точнее собирать данные для большого числа запросов, поскольку в противном случае огромный объем событий может переполнить очередь внутреннего системного журнала, и часть из них будет отброшена.

<div id="transfer_overflow_mode">
  ## transfer\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

Определяет, что произойдёт, если объём данных превысит одно из ограничений.

Возможные значения:

* `throw`: сгенерировать исключение (по умолчанию).
* `break`: остановить выполнение запроса и вернуть частичный результат, как если бы
  исходные данные закончились.

<div id="transform_null_in">
  ## transform\_null\_in
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Включает возможность считать значения [NULL](/ru/reference/syntax#null) равными для оператора [IN](/ru/reference/statements/in).

По умолчанию значения `NULL` нельзя сравнивать, поскольку `NULL` означает неопределённое значение. Поэтому сравнение `expr = NULL` всегда должно возвращать `false`. При включении этой настройки выражение `NULL = NULL` для оператора `IN` возвращает `true`.

Возможные значения:

* 0 — Сравнение значений `NULL` в операторе `IN` возвращает `false`.
* 1 — Сравнение значений `NULL` в операторе `IN` возвращает `true`.

**Пример**

Рассмотрим таблицу `null_in`:

```text theme={null}
┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
│    3 │     3 │
└──────┴───────┘
```

Запрос:

```sql theme={null}
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 0;
```

Результат:

```text theme={null}
┌──idx─┬────i─┐
│    1 │    1 │
└──────┴──────┘
```

Запрос:

```sql theme={null}
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 1;
```

Результат:

```text theme={null}
┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
└──────┴───────┘
```

**См. также**

* [Обработка NULL в операторах IN](/ru/reference/statements/in#null-processing)

<div id="traverse_shadow_remote_data_paths">
  ## traverse\_shadow\_remote\_data\_paths
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Обходить теневой каталог при выполнении запроса к system.remote_data_paths."}]}]} />

Обходить замороженные данные (теневой каталог) наряду с актуальными данными таблицы при выполнении запроса к system.remote\_data\_paths

<div id="union_default_mode">
  ## union\_default\_mode
</div>

Задаёт режим объединения результатов `SELECT`-запросов. Эта настройка используется только при работе с [UNION](/ru/reference/statements/select/union), если явно не указаны `UNION ALL` или `UNION DISTINCT`.

Возможные значения:

* `'DISTINCT'` — ClickHouse возвращает строки, полученные в результате объединения запросов, удаляя дублирующиеся строки.
* `'ALL'` — ClickHouse возвращает все строки, полученные в результате объединения запросов, включая дублирующиеся.
* `''` — ClickHouse генерирует исключение при использовании с `UNION`.

См. примеры в разделе [UNION](/ru/reference/statements/select/union).

<div id="unknown_packet_in_send_data">
  ## unknown\_packet\_in\_send\_data
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Отправлять неизвестный пакет вместо N-го пакета данных

<div id="update_parallel_mode">
  ## update\_parallel\_mode
</div>

<SettingsInfoBlock type="UpdateParallelMode" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "auto"},{"label": "новая настройка"}]}]} />

Определяет поведение одновременно выполняемых запросов `UPDATE`.

Возможные значения:

* `sync` - выполнять все запросы `UPDATE` последовательно.
* `auto` - выполнять последовательно только те запросы `UPDATE`, в которых есть зависимости между столбцами, обновляемыми в одном запросе, и столбцами, используемыми в выражениях другого запроса.
* `async` - не синхронизировать запросы `UPDATE`.

<div id="update_sequential_consistency">
  ## update\_sequential\_consistency
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "новая настройка"}]}]} />

Если значение равно true, перед выполнением update набор частей обновляется до последней версии.

<div id="url_base">
  ## url\_base
</div>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": ""},{"label": "Новая настройка для указания базового URL при разрешении относительных URL в табличной функции [url] и движке таблицы URL."}]}]} />

Базовый URL, используемый для разрешения относительных URL в табличной функции [url](/ru/reference/functions/table-functions/url) и движке таблицы [URL](/ru/reference/engines/table-engines/special/url).

Если параметр задан, относительные URL разрешаются следующим образом:

* URL, относительный к пути (например, `data.csv`): объединяется с путём базового URL согласно RFC 3986. Всё после последнего `/` в базовом пути заменяется относительным URL, поэтому завершающий слеш имеет значение: `https://example.com/dir/` + `data.csv` = `https://example.com/dir/data.csv`, а `https://example.com/dir` + `data.csv` = `https://example.com/data.csv`. Если у базового URL нет пути (например, `https://example.com`), вставляется `/`: `https://example.com/data.csv`. Сегменты (`./` и `../`) в относительном URL нормализуются: `https://example.com/dir/` + `../a.csv` = `https://example.com/a.csv`.
* URL, относительный к хосту (например, `/test/data.csv`): разрешается относительно схемы и хоста базового URL.
* URL, относительный к схеме (например, `//other.com/test/data.csv`): разрешается с использованием схемы базового URL.
* Ссылка, содержащая только строку запроса (например, `?x=1`): добавляется к пути базового URL (заменяя существующие строку запроса и фрагмент).
* Ссылка, содержащая только фрагмент (например, `#frag`): добавляется к базовому URL с сохранением строки запроса (заменяя существующий фрагмент).
* Пустая ссылка: возвращает базовый URL без фрагмента.

Например, если `url_base` имеет значение `https://example.com/def/`, то:

* `data.csv` разрешается в `https://example.com/def/data.csv`
* `/test/data.csv` разрешается в `https://example.com/test/data.csv`
* `//other.com/test/data.csv` разрешается в `https://other.com/test/data.csv`

<div id="use_async_executor_for_materialized_views">
  ## use\_async\_executor\_for\_materialized\_views
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Асинхронное и потенциально многопоточное выполнение запроса materialized view может ускорить обработку представлений при INSERT, но также может потреблять больше памяти.

<div id="use_cache_for_count_from_files">
  ## use\_cache\_for\_count\_from\_files
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает кэширование количества строк при подсчете строк в файлах для табличных функций `file`/`s3`/`url`/`hdfs`/`azureBlobStorage`.

Включено по умолчанию.

<div id="use_client_time_zone">
  ## use\_client\_time\_zone
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Использовать часовой пояс клиента для интерпретации строковых значений DateTime вместо часового пояса сервера.

<div id="use_compact_format_in_distributed_parts_names">
  ## use\_compact\_format\_in\_distributed\_parts\_names
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.1"},{"label": "1"},{"label": "По умолчанию использовать компактный формат для асинхронной операции INSERT в таблицы Distributed"}]}]} />

Использует компактный формат для хранения блоков при фоновой (`distributed_foreground_insert`) операции INSERT в таблицы с движком `Distributed`.

Возможные значения:

* 0 — Использует формат каталога `user[:password]@host:port#default_database`.
* 1 — Использует формат каталога `[shard{shard_index}[_replica{replica_index}]]`.

<Note>
  - при `use_compact_format_in_distributed_parts_names=0` изменения в определении кластера не будут применяться к фоновой операции INSERT.
  - при `use_compact_format_in_distributed_parts_names=1` изменение порядка узлов в определении кластера приведёт к изменению `shard_index`/`replica_index`, имейте это в виду.
</Note>

<div id="use_concurrency_control">
  ## use\_concurrency\_control
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "Включает контроль параллелизма по умолчанию"}]}]} />

Соблюдать контроль параллелизма на сервере (см. глобальные настройки сервера `concurrent_threads_soft_limit_num` и `concurrent_threads_soft_limit_ratio_to_cores`). Если отключено, позволяет использовать большее число потоков даже при перегрузке сервера (не рекомендуется для обычного использования и в основном требуется для тестов).

Значение по умолчанию в Cloud: `0`.

<div id="use_hash_table_stats_for_join_reordering">
  ## use\_hash\_table\_stats\_for\_join\_reordering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Новая настройка. Ранее дублировала настройку 'collect_hash_table_stats_during_joins'."}]}]} />

Включает использование собранной статистики хеш-таблицы для оценки мощности при переупорядочивании JOIN

<div id="use_hedged_requests">
  ## use\_hedged\_requests
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.9"},{"label": "1"},{"label": "По умолчанию включает возможность хеджированных запросов"}]}]} />

Включает логику хеджированных запросов для удалённых запросов. Позволяет устанавливать несколько соединений с разными репликами для одного запроса.
Новое соединение устанавливается, если существующее соединение с репликой не было установлено в течение `hedged_connection_timeout`
или если в течение `receive_data_timeout` не были получены данные. Запрос использует первое соединение, которое отправляет непустой пакет Прогресс (или пакет данных, если `allow_changing_replica_until_first_data_packet`);
остальные соединения отменяются. Поддерживаются запросы с `max_parallel_replicas > 1`.

Включено по умолчанию.

Значение по умолчанию в Cloud: `0`.

<div id="use_hive_partitioning">
  ## use\_hive\_partitioning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Настройка включена по умолчанию."}]}, {"id": "row-2","items": [{"label": "24.8"},{"label": "0"},{"label": "Позволяет использовать секционирование в стиле Hive для движков File, URL, S3, AzureBlobStorage и HDFS."}]}]} />

Когда настройка включена, ClickHouse определяет секционирование в стиле Hive в пути (`/name=value/`) в движках таблиц, работающих с файлами: [File](/ru/reference/functions/table-functions/file#hive-style-partitioning)/[S3](/ru/reference/functions/table-functions/s3#hive-style-partitioning)/[URL](/ru/reference/functions/table-functions/url#hive-style-partitioning)/[HDFS](/ru/reference/functions/table-functions/hdfs#hive-style-partitioning)/[AzureBlobStorage](/ru/reference/functions/table-functions/azureBlobStorage#hive-style-partitioning), и позволяет использовать столбцы партиций как виртуальные столбцы в запросе. Эти виртуальные столбцы будут иметь те же имена, что и в пути секционирования, но с префиксом `_`.

<div id="use_iceberg_metadata_files_cache">
  ## use\_iceberg\_metadata\_files\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "новая настройка"}]}]} />

Если параметр включен, табличная функция Iceberg и хранилище Iceberg могут использовать кэш файлов метаданных Iceberg.

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="use_iceberg_partition_pruning">
  ## use\_iceberg\_partition\_pruning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "По умолчанию включает отсечение партиций Iceberg."}]}, {"id": "row-2","items": [{"label": "25.1"},{"label": "0"},{"label": "Новая настройка для отсечения партиций Iceberg."}]}]} />

Использовать отсечение партиций для таблиц Iceberg

<div id="use_index_for_in_with_subqueries">
  ## use\_index\_for\_in\_with\_subqueries
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Пытаться использовать индекс, если в правой части оператора IN находится подзапрос или табличное выражение.

<div id="use_index_for_in_with_subqueries_max_values">
  ## use\_index\_for\_in\_with\_subqueries\_max\_values
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

Максимальный размер множества в правой части оператора IN, при котором для фильтрации используется индекс таблицы. Это позволяет избежать снижения производительности и повышенного использования памяти из-за подготовки дополнительных структур данных для больших запросов. Ноль означает отсутствие ограничения.

<div id="use_join_disjunctions_push_down">
  ## use\_join\_disjunctions\_push\_down
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Оптимизация включена."}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Включает pushdown частей условий JOIN, связанных через OR, на соответствующие входные стороны («частичный pushdown»).
Это позволяет движкам хранения выполнять фильтрацию раньше, что может сократить объём читаемых данных.
Оптимизация сохраняет семантику и применяется только тогда, когда каждая ветвь OR верхнего уровня содержит хотя бы один детерминированный
предикат для целевой стороны.

<div id="use_legacy_to_time">
  ## use\_legacy\_to\_time
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "Новая настройка. Позволяет использовать старую логику функции toTime, которая работает как toTimeWithFixedDate."}]}]} />

При включении можно использовать старую функцию toTime, которая преобразует дату и время в определённую фиксированную дату, сохраняя при этом время.
В противном случае используется новая функция toTime, которая преобразует данные различных типов в тип Time.
Старая функция также всегда доступна как toTimeWithFixedDate.

<div id="use_page_cache_for_disks_without_file_cache">
  ## use\_page\_cache\_for\_disks\_without\_file\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Добавлен кэш страниц в пространстве пользователя"}]}]} />

Использовать кэш страниц в пространстве пользователя для удалённых дисков, для которых не включён файловый кэш.

<div id="use_page_cache_for_local_disks">
  ## use\_page\_cache\_for\_local\_disks
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Новая настройка для использования кэша страниц в пространстве пользователя на локальных дисках"}]}]} />

Использовать кэш страниц в пространстве пользователя при чтении с локальных дисков. Применяется для тестирования и вряд ли улучшит производительность на практике. Требует `local_filesystem_read_method = 'pread'` или `'read'`. Не отключает кэш страниц ОС; для этого можно использовать `min_bytes_to_use_direct_io`. Влияет только на обычные таблицы, но не на табличную функцию `file()` и не на движок таблицы `File()`.

<div id="use_page_cache_for_object_storage">
  ## use\_page\_cache\_for\_object\_storage
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Новая настройка для использования кэша страниц в пространстве пользователя для функций таблиц объектного хранилища"}]}]} />

Использовать кэш страниц в пространстве пользователя при чтении из функций таблиц объектного хранилища (s3, azure, hdfs) и движков таблиц (S3, Azure, HDFS).

<div id="use_page_cache_with_distributed_cache">
  ## use\_page\_cache\_with\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "0"},{"label": "новая настройка"}]}]} />

Использовать кэш страниц в пространстве пользователя при использовании distributed cache.

<div id="use_paimon_partition_pruning">
  ## use\_paimon\_partition\_pruning
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Использовать отсечение партиций в табличных функциях Paimon

<div id="use_parquet_metadata_cache">
  ## use\_parquet\_metadata\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Включает кеш метаданных файлов Parquet."}]}]} />

Если настройка включена, формат Parquet может использовать кеш метаданных Parquet.

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="use_partition_pruning">
  ## use\_partition\_pruning
</div>

**Псевдонимы**: `use_partition_key`

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "1"},{"label": "Новая настройка, определяющая, использует ли MergeTree ключ партиционирования для отсечения партиций. 'use_partition_key' — псевдоним этой настройки."}]}]} />

Использовать ключ партиционирования для отсечения партиций при выполнении запроса в таблицах MergeTree.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_primary_key">
  ## use\_primary\_key
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Новая настройка, определяющая, использует ли MergeTree первичный ключ для отсечения на уровне гранул."}]}]} />

Использовать первичный ключ для отсечения гранул при выполнении запроса в таблицах MergeTree.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_query_cache">
  ## use\_query\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Если включено, запросы `SELECT` могут использовать [кэш запросов](/ru/concepts/features/performance/caches/query-cache). Параметры [enable\_reads\_from\_query\_cache](#enable_reads_from_query_cache)
и [enable\_writes\_to\_query\_cache](#enable_writes_to_query_cache) более точно определяют, как используется кэш.

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="use_query_condition_cache">
  ## use\_query\_condition\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Новая оптимизация"}]}, {"id": "row-2","items": [{"label": "25.3"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Включает [кэш условий запроса](/ru/concepts/features/performance/caches/query-condition-cache). Кэш хранит диапазоны гранул в частях данных, которые не удовлетворяют условию в секции `WHERE`,
и использует эту информацию как эфемерный индекс для последующих запросов.

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="use_roaring_bitmap_iceberg_positional_deletes">
  ## use\_roaring\_bitmap\_iceberg\_positional\_deletes
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Использовать битмап roaring для позиционных удалений в Iceberg.

<div id="use_skip_indexes">
  ## use\_skip\_indexes
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Использовать индексы пропуска данных при выполнении запроса.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_skip_indexes_for_disjunctions">
  ## use\_skip\_indexes\_for\_disjunctions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "новая настройка"}]}]} />

Использует индекс пропуска данных при вычислении фильтров WHERE со смешанными условиями AND и OR. Пример: WHERE A = 5 AND (B = 5 OR C = 5).
Если отключено, индекс пропуска данных по-прежнему используется для вычисления условий WHERE, но только если они содержат секции, объединённые оператором AND.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_skip_indexes_for_top_k">
  ## use\_skip\_indexes\_for\_top\_k
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "По умолчанию включает использование индексов пропуска данных для фильтрации TopK"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Включает использование индексов пропуска данных для фильтрации TopK.

Когда настройка включена, если в запросе `ORDER BY <column> LIMIT n` для столбца существует minmax-индекс пропуска данных, оптимизатор попытается использовать его, чтобы пропускать гранулы, не влияющие на итоговый результат. Это может снизить задержку запроса.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_skip_indexes_if_final">
  ## use\_skip\_indexes\_if\_final
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "Изменение значения настройки по умолчанию"}]}]} />

Определяет, используются ли индексы пропуска данных при выполнении запроса с модификатором FINAL.

Индексы пропуска данных могут исключать строки (гранулы), содержащие самые свежие данные, что может приводить к некорректным результатам запроса с модификатором FINAL. Если эта настройка включена, индексы пропуска данных применяются даже при использовании модификатора FINAL, что может повысить производительность, но при этом есть риск пропустить недавние обновления. Эту настройку следует включать вместе с настройкой use\_skip\_indexes\_if\_final\_exact\_mode (по умолчанию она включена).

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_skip_indexes_if_final_exact_mode">
  ## use\_skip\_indexes\_if\_final\_exact\_mode
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "1"},{"label": "Изменено значение настройки по умолчанию"}]}, {"id": "row-2","items": [{"label": "25.5"},{"label": "0"},{"label": "Эта настройка была добавлена, чтобы запрос FINAL возвращал корректные результаты при использовании индексов пропуска данных"}]}]} />

Определяет, расширяются ли в более новых частях гранулы, возвращаемые индексом пропуска данных, чтобы при выполнении запроса с модификатором FINAL возвращались корректные результаты.

Использование индексов пропуска данных может исключать строки (гранулы), содержащие самые свежие данные, что может приводить к некорректным результатам. Эта настройка позволяет обеспечить корректные результаты за счет сканирования более новых частей, которые пересекаются с диапазонами, возвращаемыми индексом пропуска данных. Отключать эту настройку следует только в том случае, если для приложения допустимы приблизительные результаты на основе поиска по индексу пропуска данных.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_skip_indexes_on_data_read">
  ## use\_skip\_indexes\_on\_data\_read
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Текстовый индекс теперь имеет статус GA"}]}, {"id": "row-2","items": [{"label": "26.1"},{"label": "1"},{"label": "Включено по умолчанию"}]}, {"id": "row-3","items": [{"label": "25.9"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Разрешает использовать индексы пропуска данных при чтении данных.

Если параметр включен, индексы пропуска данных оцениваются динамически в момент чтения каждой гранулы данных, а не заранее, до начала выполнения запроса. Это может уменьшить задержку при запуске запроса.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_statistics">
  ## use\_statistics
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Включает эту оптимизацию по умолчанию."}]}]} />

/// предпочтительнее 'allow\_statistics\_optimize' для единообразия с 'use\_primary\_key' и 'use\_skip\_indexes'
Позволяет использовать статистику для оптимизации запросов

<div id="use_statistics_cache">
  ## use\_statistics\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Включить кэш статистики"}]}, {"id": "row-2","items": [{"label": "25.11"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Использовать кэш статистики в запросе, чтобы избежать накладных расходов при загрузке статистики для каждой части

<div id="use_statistics_for_part_pruning">
  ## use\_statistics\_for\_part\_pruning
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Новая настройка для использования статистики при отсечении частей во время выполнения запроса."}]}]} />

Использует статистику для фильтрации частей во время выполнения запроса.

Когда включено, отсечение частей в запросах SELECT использует статистику столбцов (например, статистику MinMax), чтобы исключать части, которые не могут содержать подходящие данные, ещё до чтения данных.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_strict_insert_block_limits">
  ## use\_strict\_insert\_block\_limits
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Новая настройка для строгого применения минимальных и максимальных ограничений размера блока при вставках. Когда min < max, приоритет имеют максимальные ограничения."}]}]} />

Когда включена, строго соблюдаются и минимальные, и максимальные ограничения размера блока вставки.

Блок формируется, когда:

* Минимальные пороги (AND): достигнуты оба порога — min\_insert\_block\_size\_rows AND min\_insert\_block\_size\_bytes.
* Максимальные пороги (OR): достигнут либо max\_insert\_block\_size\_rows, либо max\_insert\_block\_size\_bytes.

Когда отключена, блок формируется, когда:

* Минимальные пороги (OR): достигнут либо min\_insert\_block\_size\_rows, либо min\_insert\_block\_size\_bytes.

**Примечание**: Если максимальные настройки меньше минимальных, приоритет имеют максимальные ограничения, и блоки будут формироваться до достижения минимальных порогов.

**Примечание**: Эта настройка автоматически отключается для async inserts, поскольку async inserts добавляют токены дедупликации для каждой записи, которые несовместимы с разбиением блоков, необходимым для соблюдения строгих ограничений.

По умолчанию отключена.

<div id="use_structure_from_insertion_table_in_table_functions">
  ## use\_structure\_from\_insertion\_table\_in\_table\_functions
</div>

<SettingsInfoBlock type="UInt64" default_value="2" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.11"},{"label": "2"},{"label": "Улучшено использование структуры таблицы, в которую выполняется вставка, в табличных функциях"}]}]} />

Использовать структуру таблицы, в которую выполняется вставка, вместо определения схемы по данным. Возможные значения: 0 — отключено, 1 — включено, 2 — автоматически

<div id="use_text_index_header_cache">
  ## use\_text\_index\_header\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "новая настройка"}]}]} />

Определяет, использовать ли кэш десериализованного заголовка текстового индекса.
Использование кэша заголовка текстового индекса может значительно уменьшить задержки и повысить пропускную способность при работе с большим числом запросов к текстовому индексу.

<div id="use_text_index_like_evaluation_by_dictionary_scan">
  ## use\_text\_index\_like\_evaluation\_by\_dictionary\_scan
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "новая настройка"}]}]} />

Включает обработку запросов LIKE/ILIKE путём сканирования словаря инвертированного текстового индекса.

<div id="use_text_index_postings_cache">
  ## use\_text\_index\_postings\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "0"},{"label": "новая настройка"}]}]} />

Использовать ли кэш десериализованных списков вхождений текстового индекса.
Использование кэша списков вхождений текстового индекса может значительно снизить задержки и повысить пропускную способность при работе с большим количеством запросов к текстовому индексу.

<div id="use_text_index_tokens_cache">
  ## use\_text\_index\_tokens\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "новая настройка"}]}]} />

Определяет, следует ли использовать кеш десериализованной информации о токенах текстового индекса.
Использование кеша токенов текстового индекса может значительно снизить задержку и повысить пропускную способность при работе с большим количеством запросов к текстовому индексу.

<div id="use_top_k_dynamic_filtering">
  ## use\_top\_k\_dynamic\_filtering
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "По умолчанию включает оптимизацию динамической фильтрации для запросов TopK"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Включает оптимизацию динамической фильтрации при выполнении запроса `ORDER BY <column> LIMIT n`.

Если настройка включена, исполнитель запроса будет пытаться пропускать гранулы и строки, которые не попадут в итоговый набор строк `top N`. Эта оптимизация носит динамический характер, и снижение задержки зависит от распределения данных и наличия в запросе других предикатов.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_top_k_dynamic_filtering_for_variable_length_types">
  ## use\_top\_k\_dynamic\_filtering\_for\_variable\_length\_types
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "По умолчанию отключает `use_top_k_dynamic_filtering` для сортируемых столбцов переменной длины (например, `String`); прежнее поведение, при котором оптимизация применялась безусловно, сохраняется в `compatibility`."}]}]} />

Разрешает применять `use_top_k_dynamic_filtering`, когда столбец сортировки имеет тип данных переменной длины (например, `String`, `Array`, `Map`, `Tuple`, содержащий элементы переменной длины).

Для таких типов сравнение с порогом для каждой строки, выполняемое динамическим фильтром, может свести на нет получаемую выгоду, если в столбце преобладает лексикографический минимум (например, в основном пустые строки) и удаётся пропустить лишь небольшое число гранул. В таком случае динамический фильтр не уменьшает, а увеличивает задержку запроса.

Когда этот параметр равен `0`, динамическая фильтрация ограничивается столбцами, значения которых имеют фиксированный максимальный размер в памяти (числа, `Date`, `DateTime`, `FixedString`, `Enum`, `Nullable` таких типов, `Tuple` таких типов). Если задано значение `1`, динамическая фильтрация также применяется к типам переменной длины.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

<div id="use_uncompressed_cache">
  ## use\_uncompressed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Определяет, использовать ли кэш несжатых блоков. Допустимые значения: 0 или 1. По умолчанию — 0 (отключено).
Использование кэша несжатых блоков (только для таблиц семейства MergeTree) может значительно снизить задержку и повысить пропускную способность при работе с большим количеством коротких запросов. Включайте эту настройку для пользователей, которые часто отправляют короткие запросы. Также обратите внимание на параметр конфигурации [uncompressed\_cache\_size](/ru/reference/settings/server-settings/settings#uncompressed_cache_size) (задаётся только в файле config) — размер кэша несжатых блоков. По умолчанию он составляет 8 GiB. Кэш несжатых блоков заполняется по мере необходимости, а наименее используемые данные удаляются автоматически.

Для запросов, читающих хотя бы относительно большой объём данных (один миллион строк или более), кэш несжатых блоков автоматически отключается, чтобы освободить место для действительно небольших запросов. Это означает, что параметр 'use\_uncompressed\_cache' можно всегда оставлять равным 1.

<div id="use_variant_as_common_type">
  ## use\_variant\_as\_common\_type
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Улучшает удобство использования."}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "0"},{"label": "Позволяет использовать Variant в функциях if/multiIf, если для типов аргументов нет общего типа"}]}]} />

Позволяет использовать тип `Variant` в качестве типа результата для функций [if](/ru/reference/functions/regular-functions/conditional-functions#if)/[multiIf](/ru/reference/functions/regular-functions/conditional-functions#multiIf)/[array](/ru/reference/functions/regular-functions/array-functions)/[map](/ru/reference/functions/regular-functions/tuple-map-functions), если для типов аргументов нет общего типа.

Пример:

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(if(number % 2, number, range(number))) as variant_type FROM numbers(1);
SELECT if(number % 2, number, range(number)) as variant FROM numbers(5);
```

```text theme={null}
┌─variant_type───────────────────┐
│ Variant(Array(UInt64), UInt64) │
└────────────────────────────────┘
┌─variant───┐
│ []        │
│ 1         │
│ [0,1]     │
│ 3         │
│ [0,1,2,3] │
└───────────┘
```

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(multiIf((number % 4) = 0, 42, (number % 4) = 1, [1, 2, 3], (number % 4) = 2, 'Hello, World!', NULL)) AS variant_type FROM numbers(1);
SELECT multiIf((number % 4) = 0, 42, (number % 4) = 1, [1, 2, 3], (number % 4) = 2, 'Hello, World!', NULL) AS variant FROM numbers(4);
```

```text theme={null}
─variant_type─────────────────────────┐
│ Variant(Array(UInt8), String, UInt8) │
└──────────────────────────────────────┘

┌─variant───────┐
│ 42            │
│ [1,2,3]       │
│ Hello, World! │
│ ᴺᵁᴸᴸ          │
└───────────────┘
```

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(array(range(number), number, 'str_' || toString(number))) as array_of_variants_type from numbers(1);
SELECT array(range(number), number, 'str_' || toString(number)) as array_of_variants FROM numbers(3);
```

```text theme={null}
┌─array_of_variants_type────────────────────────┐
│ Array(Variant(Array(UInt64), String, UInt64)) │
└───────────────────────────────────────────────┘

┌─array_of_variants─┐
│ [[],0,'str_0']    │
│ [[0],1,'str_1']   │
│ [[0,1],2,'str_2'] │
└───────────────────┘
```

```sql theme={null}
SET use_variant_as_common_type = 1;
SELECT toTypeName(map('a', range(number), 'b', number, 'c', 'str_' || toString(number))) as map_of_variants_type from numbers(1);
SELECT map('a', range(number), 'b', number, 'c', 'str_' || toString(number)) as map_of_variants FROM numbers(3);
```

```text theme={null}
┌─map_of_variants_type────────────────────────────────┐
│ Map(String, Variant(Array(UInt64), String, UInt64)) │
└─────────────────────────────────────────────────────┘

┌─map_of_variants───────────────┐
│ {'a':[],'b':0,'c':'str_0'}    │
│ {'a':[0],'b':1,'c':'str_1'}   │
│ {'a':[0,1],'b':2,'c':'str_2'} │
└───────────────────────────────┘
```

<div id="use_variant_default_implementation_for_comparisons">
  ## use\_variant\_default\_implementation\_for\_comparisons
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "1"},{"label": "Включает использование реализации по умолчанию для типа Variant в функциях сравнения"}]}]} />

Включает или отключает использование реализации по умолчанию для типа Variant в функциях сравнения.

<div id="use_with_fill_by_sorting_prefix">
  ## use\_with\_fill\_by\_sorting\_prefix
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.5"},{"label": "1"},{"label": "Столбцы, предшествующие столбцам WITH FILL в предложении ORDER BY, образуют префикс сортировки. Строки с разными значениями префикса сортировки заполняются независимо друг от друга"}]}]} />

Столбцы, предшествующие столбцам WITH FILL в предложении ORDER BY, образуют префикс сортировки. Строки с разными значениями префикса сортировки заполняются независимо друг от друга

<div id="validate_enum_literals_in_operators">
  ## validate\_enum\_literals\_in\_operators
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Если настройка включена, литералы enum в таких операторах, как `IN`, `NOT IN`, `==`, `!=`, проверяются на соответствие типу enum; если литерал не является допустимым значением enum, будет сгенерировано исключение.

<div id="validate_mutation_query">
  ## validate\_mutation\_query
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "Новая настройка: по умолчанию проверять запросы мутации."}]}]} />

Проверяет запросы мутации перед их принятием. Мутации выполняются в фоновом режиме, и запуск некорректного запроса приведёт к их зависанию, из-за чего потребуется ручное вмешательство.

Изменяйте эту настройку только если столкнулись с ошибкой, нарушающей обратную совместимость.

<div id="validate_polygons">
  ## validate\_polygons
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.4"},{"label": "1"},{"label": "По умолчанию генерировать исключение в функции pointInPolygon, если полигон некорректен, вместо возврата потенциально неверных результатов"}]}]} />

Включает или отключает генерирование исключения в функции [pointInPolygon](/ru/reference/functions/regular-functions/geo/coordinates#pointinpolygon), если полигон самопересекающийся или самокасающийся.

Возможные значения:

* 0 — Генерирование исключения отключено. `pointInPolygon` принимает некорректные полигоны и может возвращать для них неверные результаты.
* 1 — Генерирование исключения включено.

<div id="variant_throw_on_type_mismatch">
  ## variant\_throw\_on\_type\_mismatch
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Новая настройка для управления поведением при несоответствии типов в стандартной реализации Variant"}]}]} />

При применении функции к столбцу [Variant](/ru/reference/data-types/variant) со стандартной реализацией
определяет, что происходит со строками, фактический тип которых несовместим с функцией:

* `true` (по умолчанию) — сгенерировать исключение.
* `false` — вместо этого возвращать `NULL` для этих строк.

<div id="vector_search_filter_strategy">
  ## vector\_search\_filter\_strategy
</div>

<SettingsInfoBlock type="VectorSearchFilterStrategy" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "auto"},{"label": "новая настройка"}]}]} />

Если запрос векторного поиска содержит предложение WHERE, этот параметр определяет, будет ли оно применяться сначала (префильтрация) или сначала будет использоваться индекс векторного сходства (постфильтрация). Возможные значения:

* 'auto' - Постфильтрация (точная семантика может измениться в будущем).
* 'postfilter' - Использовать индекс векторного сходства для определения ближайших соседей, затем применить другие фильтры
* 'prefilter' - Сначала применить другие фильтры, затем выполнить полный перебор для определения соседей.

<div id="vector_search_index_fetch_multiplier">
  ## vector\_search\_index\_fetch\_multiplier
</div>

**Псевдонимы**: `vector_search_postfilter_multiplier`

<SettingsInfoBlock type="Float" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Псевдоним для настройки 'vector_search_postfilter_multiplier'"}]}]} />

Умножает количество получаемых ближайших соседей из индекса векторного сходства на это число. Применяется только при постфильтрации с другими предикатами или если включена настройка 'vector\_search\_with\_rescoring = 1'.

<div id="vector_search_with_rescoring">
  ## vector\_search\_with\_rescoring
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Определяет, выполняет ли ClickHouse пересчёт оценок для запросов, использующих индекс векторного сходства.
Без пересчёта оценок индекс векторного сходства сразу возвращает строки с наилучшими совпадениями.
При пересчёте оценок результаты расширяются до уровня гранулы, после чего все строки в этой грануле проверяются повторно.
В большинстве случаев пересчёт оценок лишь незначительно повышает точность, но при этом существенно снижает производительность запросов векторного поиска.
Примечание: запрос, выполняемый без пересчёта оценок при включённых параллельных репликах, может переключиться на пересчёт оценок.

<div id="wait_changes_become_visible_after_commit_mode">
  ## wait\_changes\_become\_visible\_after\_commit\_mode
</div>

<SettingsInfoBlock type="TransactionsWaitCSNMode" default_value="wait_unknown" />

Ожидать, пока зафиксированные изменения станут действительно видимыми в последнем снимке

<div id="wait_for_async_insert">
  ## wait\_for\_async\_insert
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Если true, ожидать обработки асинхронной вставки

<div id="wait_for_async_insert_timeout">
  ## wait\_for\_async\_insert\_timeout
</div>

<SettingsInfoBlock type="Секунды" default_value="120" />

Тайм-аут ожидания обработки асинхронной вставки

<div id="wait_for_window_view_fire_signal_timeout">
  ## wait\_for\_window\_view\_fire\_signal\_timeout
</div>

<SettingsInfoBlock type="Seconds" default_value="10" />

Тайм-аут ожидания сигнала срабатывания оконного представления при обработке по времени событий

<div id="webassembly_udf_max_fuel">
  ## webassembly\_udf\_max\_fuel
</div>

<SettingsInfoBlock type="UInt64" default_value="100000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "100000"},{"label": "Новая настройка, ограничивающая число инструкций CPU (fuel) при одном выполнении экземпляра WebAssembly UDF."}]}]} />

Лимит fuel на одно выполнение экземпляра WebAssembly UDF. Каждая инструкция WebAssembly расходует некоторое количество fuel.
Установите 0, чтобы снять ограничение.

<div id="webassembly_udf_max_input_block_size">
  ## webassembly\_udf\_max\_input\_block\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Новая настройка для ограничения размера входного блока для WebAssembly UDF."}]}]} />

Максимальное количество строк, передаваемых в WebAssembly UDF в одном block. Установите значение 0, чтобы обрабатывать все строки одновременно.

<div id="webassembly_udf_max_instances">
  ## webassembly\_udf\_max\_instances
</div>

<SettingsInfoBlock type="UInt64" default_value="32" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "32"},{"label": "Новая настройка для ограничения количества экземпляров WebAssembly UDF, которые могут выполняться параллельно для каждой функции."}]}]} />

Максимальное количество экземпляров WebAssembly UDF, которые могут выполняться параллельно для каждой функции.

<div id="webassembly_udf_max_memory">
  ## webassembly\_udf\_max\_memory
</div>

<SettingsInfoBlock type="UInt64" default_value="134217728" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "134217728"},{"label": "Новая настройка для ограничения объёма памяти для каждого экземпляра WebAssembly UDF."}]}]} />

Лимит памяти в байтах для каждого экземпляра WebAssembly UDF.

<div id="window_view_clean_interval">
  ## window\_view\_clean\_interval
</div>

<SettingsInfoBlock type="Seconds" default_value="60" />

Интервал очистки оконного представления в секундах, используемый для удаления устаревших данных.

<div id="window_view_heartbeat_interval">
  ## window\_view\_heartbeat\_interval
</div>

<SettingsInfoBlock type="Секунды" default_value="15" />

Интервал сигнала активности в секундах, показывающий, что watch-запрос активен.

<div id="workload">
  ## рабочая нагрузка
</div>

<SettingsInfoBlock type="String" default_value="default" />

Имя рабочей нагрузки для доступа к ресурсам

<div id="write_full_path_in_iceberg_metadata">
  ## write\_full\_path\_in\_iceberg\_metadata
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Записывает полные пути (включая s3://) в файлы метаданных Iceberg.

<div id="write_through_distributed_cache">
  ## write\_through\_distributed\_cache
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Настройка для ClickHouse Cloud"}]}]} />

Действует только в ClickHouse Cloud. Разрешает запись в distributed cache (запись в S3 также выполняется через distributed cache)

<div id="write_through_distributed_cache_buffer_size">
  ## write\_through\_distributed\_cache\_buffer\_size
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "Новая настройка Cloud"}]}]} />

Действует только в ClickHouse Cloud. Задаёт размер буфера для distributed cache со сквозной записью. Если указано 0, используется размер буфера, который применялся бы без distributed cache.

<div id="zstd_window_log_max">
  ## zstd\_window\_log\_max
</div>

<SettingsInfoBlock type="Int64" default_value="0" />

Позволяет задать максимальный логарифм окна для ZSTD (не используется для семейства MergeTree)
