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

# 其他会话设置

> 位于自动生成的“其他”分组中的 ClickHouse 会话设置。

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>类型</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>默认值</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          无需重启即可更改
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

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'}
        </div>;
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <Icon />
                <span>Beta</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                Beta 版功能。 
                <u>
                    <a href="/docs/docs/beta-and-experimental-features#beta-features">
                        了解更多。
                    </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 功能。 <u><a href="/docs/docs/beta-and-experimental-features#experimental-features">了解详情。</a></u>
        </div>;
};

这些设置可在 [system.settings](/docs/zh/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="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_inline_views">
  ## analyzer\_inline\_views
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "新设置"}]}]} />

启用后，analyzer 会用定义这些普通 (非物化、非参数化) 视图的子查询替换它们，从而实现跨边界优化，例如谓词下推和列裁剪。

<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，以避免不一致"}]}]} />

启用 `ANY INNER|LEFT JOIN` 操作中的旧版 ClickHouse server 行为。

<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 strictness](/docs/zh/reference/statements/select/join#settings)

<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' 会将数据集名称作为路径描述符发送。'command' 会将 SQL 查询作为命令描述符发送 (Dremio 需要这种方式) 。

可能的值：

* 'path' — 使用 FlightDescriptor::Path (默认值，适用于大多数 Arrow Flight 服务器)
* 'command' — 使用包含 SELECT 查询的 FlightDescriptor::Command (Dremio 需要这种方式)

<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 错误 (例如 'Slow Down') ，
所有向同一备份端点发起 S3 请求的线程都会被放慢。
当设置为 `false` 时，每个线程都会独立处理 S3 请求的退避，而不受其他线程影响。

<div id="cache_warmer_threads">
  ## cache\_warmer\_threads
</div>

<CloudOnlyBadge />

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

仅在 ClickHouse Cloud 中生效。启用 [cache\_populated\_by\_fetch](/docs/zh/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="checksum_on_read">
  ## checksum\_on\_read
</div>

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

在读取时验证校验和。此设置默认启用，并且在生产环境中应始终保持启用。不要期望禁用此设置会带来任何好处。它仅可用于实验和基准测试。该设置仅适用于 MergeTree 家族的表。对于其他表引擎，以及通过网络接收数据时，始终都会验证校验和。

<div id="connection_pool_max_wait_ms">
  ## connection\_pool\_max\_wait\_ms
</div>

<SettingsInfoBlock type="毫秒" default_value="0" />

当连接池已满时，获取连接的等待时间 (以毫秒为单位) 。

可能的取值：

* 正整数。
* 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` 子句虽已重写为 CNF，但结果集完全相同——布尔逻辑并未改变：

```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="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="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"}]}]} />

如果 WHERE 子句中存在连接表达式，则使用 INNER JOIN 代替逗号/CROSS JOIN。取值：0 - 不重写，1 - 如果可能，则对逗号/CROSS 应用此重写，2 - 强制重写所有逗号 join，cross - 如果可能

<div id="data_type_default_nullable">
  ## data\_type\_default\_nullable
</div>

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

允许将列定义中未显式使用修饰符 [NULL or NOT NULL](/docs/zh/reference/statements/create/table#null-or-not-null-modifiers) 的数据类型设为 [Nullable](/docs/zh/reference/data-types/nullable)。

可能的值：

* 1 — 列定义中的数据类型默认设置为 `Nullable`。
* 0 — 列定义中的数据类型默认不设置为 `Nullable`。

<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 启用去重。"}]}]} />

启用或禁用对接收来自 Replicated\* 表数据的 materialized view 的去重检查。

可能的值：

* 0 — 禁用。
* 1 — 启用。

启用后，ClickHouse 会对依赖于 Replicated\* 表的 materialized view 中的块执行去重。
当插入操作因故障而重试时，此设置有助于确保 materialized view 中不会包含重复数据。

**另请参阅**

* [IN 运算符中的 NULL 处理](/docs/zh/concepts/features/operations/insert/deduplicating-inserts-on-retries#insert-deduplication-with-materialized-views)

<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 新增，用于控制 26.3 中静默引入的 FINAL 分区裁剪行为 (https:\/\/github.com\/ClickHouse\/ClickHouse\/pull\/98242)。真正有意义的语义变更记录在 26.3 条目下，因此 `compatibility = '26.2'` 会回退该变更；添加此条目是为了让从 26.4 升级时的检查能够接受这个新引入的名称。"}]}, {"id": "row-2","items": [{"label": "26.3"},{"label": "1"},{"label": "控制当分区键列不在 sorting key 中时，FINAL planner 无条件跳过分区裁剪的行为。该行为变更本身已通过 https:\/\/github.com\/ClickHouse\/ClickHouse\/pull\/98242 在 26.3 中静默发布；此条目为事后补充文档，以便 `compatibility = '26.2'` 可恢复回归前的行为（0 = 在 FINAL 之前裁剪，更快；1 = 延后裁剪，确保正确性）。"}]}]} />

启用时 (默认) ，对于分区键列不属于 sorting key 的表，`FINAL` 查询会跳过分区裁剪。这是 26.3 引入的、可确保正确性的行为：`FINAL` 可能需要对主键相同但位于不同分区的行进行去重，而分区裁剪会在不提示的情况下将这些行排除在去重输入之外。

禁用时，即使使用 `FINAL` 也会应用分区裁剪，从而恢复 26.3 之前的行为。对于在分区列上带有 `WHERE` 条件的查询，这种方式可能会显著更快，但只有在不同分区中不可能存在主键相同的行时才是正确的——例如事件日志表，其分区列在 insert 时设定，之后永不更改。

此设置仅影响分区键列未包含在 sorting key 中的分区表；对于其他表，始终会应用分区裁剪。

可能的值：

* 0 — 在 `FINAL` 之前应用分区裁剪 (26.3 之前的行为，更快，但一般情况下不安全) 。
* 1 — 将分区裁剪延后到 `FINAL` 之后 (默认，确保正确性) 。

<div id="describe_compact_output">
  ## describe\_compact\_output
</div>

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

如果为 true，则 DESCRIBE 查询结果中仅包含列名和类型

<div id="dialect">
  ## 方言
</div>

<SettingsInfoBlock type="Dialect" default_value="clickhouse" />

用于解析查询的方言

<div id="discard_query_data">
  ## discard\_query\_data
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "新增设置，可跳过通过原生 TCP 协议向客户端发送查询结果行。"}]}]} />

启用后，服务器会跳过向客户端发送查询结果行。查询仍会执行，并在服务器上完整记录，客户端仍会接收其余数据包。

用于影子流量、基准测试和模糊测试。

对次级查询无影响。

仅影响原生 TCP 协议。

<div id="distinct_overflow_mode">
  ## distinct\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

设置当数据量超过某一限制时的处理方式。

可能的值：

* `throw`：抛出异常 (默认) 。
* `break`：停止执行查询并返回部分结果，就像源数据已耗尽一样。

<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 查询期间，来自不同分区的 parts 不会被合并到一起，而是只会在各个分区内分别进行合并。这在处理分区表时可以显著提升查询性能。

<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](/docs/zh/reference/data-types/dynamic) 列应用函数时，
该设置用于控制那些实际类型与函数不兼容的行的处理方式：

* `true` (默认) — 抛出异常。
* `false` — 对这些行返回 `NULL`。

<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_url_skip_empty_files">
  ## engine\_url\_skip\_empty\_files
</div>

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

启用或禁用在 [URL](/docs/zh/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 统计信息提供精确值，但代价是必须将 limit 之前的数据全部读取完毕

<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 期间不构建和存储某些跳过索引。被排除的跳过索引仍会在[合并期间](/docs/zh/reference/settings/merge-tree-settings#materialize_skip_indexes_on_merge)构建并存储，或通过显式执行
[MATERIALIZE INDEX](/docs/zh/reference/statements/alter/skipping-index#materialize-index)查询来构建并存储。

如果 [materialize\_skip\_indexes\_on\_insert](/docs/zh/reference/settings/session-settings/materialize#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 will be not be updated upon insert
--SET exclude_materialize_skip_indexes_on_insert='idx_a, idx_b'; -- neither index would be updated on insert

INSERT INTO tab SELECT number, number / 50 FROM numbers(100); -- only idx_b is updated

-- since it is a session setting it can be set on a per-query level
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; -- this query can be used to explicitly materialize the index

SET exclude_materialize_skip_indexes_on_insert = DEFAULT; -- reset setting to 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="explain_query_plan_default">
  ## explain\_query\_plan\_default
</div>

<SettingsInfoBlock type="ExplainQueryPlanDefault" default_value="pretty" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "pretty"},{"label": "从 26.7 开始，`EXPLAIN PLAN` 默认采用 `actions=1, compact=1, pretty=1`。将其设为 `legacy` 可恢复 26.7 之前的输出。"}]}]} />

`EXPLAIN PLAN` 使用的默认输出格式。

可能的值：

* `pretty` (自 26.7 起为默认值) — `actions`、`compact` 和 `pretty` 默认均为 `true`，生成紧凑、美观且带有 action 注释的计划。
* `legacy` — 26.7 之前的输出。

在 `EXPLAIN` 语句中显式指定 `actions`、`compact` 或 `pretty` 选项 (例如，`EXPLAIN actions = 0, compact = 0, pretty = 0 SELECT ...`) 始终会覆盖此设置。

带有 `json = 1` 或 `distributed = 1` 的 `EXPLAIN PLAN` 无论此设置如何，都会保留 legacy (26.7 之前) 的默认值，除非显式设置了 `actions`、`compact` 或 `pretty`。pretty 输出无法表示 JSON 结果或按分片划分的分布式查询计划，因此这些模式只有以 legacy 形式呈现时才能正确显示。

<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" />

如果最新数据不可用，则强制将查询发送到过时的副本。参见 [Replication](/docs/zh/reference/engines/table-engines/mergetree-family/replication)。

ClickHouse 会从该表的过时副本中选择最合适的一个。

用于从指向复制表的分布式表执行 `SELECT` 时。

默认值为 1 (已启用) 。

<div id="file_like_engine_default_partition_strategy">
  ## file\_like\_engine\_default\_partition\_strategy
</div>

<SettingsInfoBlock type="FileLikeEngineDefaultPartitionStrategy" default_value="hive" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "hive"},{"label": "未提供 `partition_strategy` 时，将类文件表引擎（S3、AzureBlobStorage 等）的默认分区策略从 `wildcard` 改为 `hive`。"}]}]} />

类文件表引擎的默认分区策略。

<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](/docs/zh/reference/statements/select/from#final-modifier) 修饰符应用到查询中的所有表，以及所有可应用 [FINAL](/docs/zh/reference/statements/select/from#final-modifier) 的表，包括连接表、子查询中的表和
分布式表。

可能的值：

* 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 期间同步完成 projection parts，以降低峰值内存占用。"}]}]} />

启用后，projection parts 会在 INSERT 期间同步完成，从而降低峰值内存占用，但代价是 S3 上传并行度会下降。默认情况下，每个 projection 的输出流都会一直保持打开，直到整个 part (包括所有 projections) 都完成，这样可以让 S3 上传相互重叠，但也会使峰值内存随着 projections 的数量成比例增加。此设置仅影响 INSERT 路径；merge 和变更已经会同步完成 projections。

<div id="flatten_nested">
  ## flatten\_nested
</div>

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

设置 [Nested](/docs/zh/reference/data-types/nested-data-structures/index) 列的数据格式。

可能的值：

* 1 — Nested 列会被展平为单独的数组。
* 0 — Nested 列保持为单个元组数组。

**用法**

如果将此设置设为 `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="fsync_metadata">
  ## fsync\_metadata
</div>

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

控制在写入 `.sql` 文件时是否启用 [fsync](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html)。默认启用。

如果 server 中有数百万个持续创建和删除的小表，禁用此项是合理的。

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

<BetaBadge />

<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="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": "新增设置"}]}]} />

如果为 true，函数 `h3ToGeo` 返回 (lon, lat)；否则返回 (lat, lon)。

<div id="handshake_timeout_ms">
  ## handshake\_timeout\_ms
</div>

<SettingsInfoBlock type="毫秒" default_value="10000" />

握手过程中，从副本接收 Hello 数据包的超时时间 (毫秒) 。

<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": "在对冲请求中，50 毫秒后而非 100 毫秒后启动新连接，以与先前的连接超时设置保持一致"}]}]} />

对冲请求中与副本建立连接时的连接超时时间

<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](/docs/zh/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="idle_connection_timeout">
  ## idle\_connection\_timeout
</div>

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

空闲 TCP 连接在达到指定秒数后自动关闭的超时时间。

可能的值：

* 正整数 (0 表示立即关闭，即 0 秒后关闭) 。

<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 子句的 SELECT 查询注入 'ORDER BY rand()'。
仅在子查询深度 = 0 时生效。子查询和 INSERT INTO ... SELECT 不受影响。
如果顶层结构是 UNION，则会分别为其所有子项独立注入 'ORDER BY rand()'。
仅对测试和开发有用 (缺少 ORDER BY 是非确定性查询结果的一个来源) 。

<div id="interactive_delay">
  ## interactive\_delay
</div>

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

以微秒为单位的时间间隔，用于检查请求执行是否已取消，并发送 Progress 信息。

<div id="intersect_default_mode">
  ## intersect\_default\_mode
</div>

<SettingsInfoBlock type="SetOperationMode" default_value="ALL" />

设置 INTERSECT 查询的默认 mode。可能的值：空字符串、'ALL'、'DISTINCT'。如果为空，未指定 mode 的查询将抛出异常。

<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": "添加此设置仅为兼容性考虑。在将集群从低于 21.7 的版本滚动更新到更高版本时，建议将其设为 'true'"}]}]} />

对于大型 Tuple 字面量，在其列名中列出所有元素名称，而不是使用哈希。此设置仅为兼容性而存在。在将集群从低于 21.7 的版本滚动更新到更高版本时，建议将其设为 'true'。

<div id="limit">
  ## limit
</div>

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

设置可从查询结果中获取的最大行数。它会调整由 [LIMIT](/docs/zh/reference/statements/select/limit) 子句设定的值，因此查询中指定的限制不能超过此设置设定的限制。

可能的值：

* 0 — 行数不受限制。
* 正整数。

<div id="load_marks_asynchronously">
  ## load\_marks\_asynchronously
</div>

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

异步加载 MergeTree 标记

Cloud 默认值：`1`。

<div id="lock_acquire_timeout">
  ## lock\_acquire\_timeout
</div>

<SettingsInfoBlock type="Seconds" default_value="120" />

定义锁请求在失败前等待的秒数。

锁超时用于防止对表执行读/写操作时发生死锁。当超时时间到期且锁请求失败时，ClickHouse server 会抛出异常 "Locking attempt timed out! Possible deadlock avoided. Client should retry."，错误代码为 `DEADLOCK_AVOIDED`。

Possible values:

* 正整数 (单位：秒) 。
* 0 — 不设置锁超时。

<div id="low_priority_query_wait_time_ms">
  ## low\_priority\_query\_wait\_time\_ms
</div>

<BetaBadge />

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

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "新的实验性设置。"}]}]} />

生成分布式查询计划。

<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": "新增设置"}]}]} />

创建未显式指定 schema 的 `Merge` 表，或使用 `merge` 表函数时，会将 schema 推断为匹配表的并集，数量不超过指定值。
如果表的数量更多，则只会基于前面指定数量的表来推断 schema。

<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="multiple_joins_try_to_keep_original_names">
  ## multiple\_joins\_try\_to\_keep\_original\_names
</div>

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

在多个 JOIN 重写时，不向顶层表达式列表添加别名

<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="offset">
  ## offset
</div>

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

设置查询开始返回行之前要跳过的行数。它会调整由 [OFFSET](/docs/zh/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="paimon_target_snapshot_id">
  ## paimon\_target\_snapshot\_id
</div>

<ExperimentalBadge />

<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="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="partial_result_on_first_cancel">
  ## partial\_result\_on\_first\_cancel
</div>

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

允许查询在被取消后返回部分结果。

<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": "新设置。"}]}]} />

记录各个 part 的索引统计信息

<div id="poll_interval">
  ## poll\_interval
</div>

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

在服务器端的查询等待循环中阻塞指定秒数。

<div id="polyglot_dialect">
  ## polyglot\_dialect
</div>

<ExperimentalBadge />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": ""},{"label": "新增设置：用于指定 polyglot 转译器的源 SQL 方言。"}]}]} />

polyglot 转译器的源 SQL 方言 (例如 'sqlite'、'mysql'、'postgresql'、'snowflake'、'duckdb') 。

<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 时，将按查询 ID 对约 1/N 的查询进行采样。0 表示禁用。

<div id="prefetch_buffer_size">
  ## prefetch\_buffer\_size
</div>

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

用于从文件系统读取数据的预取缓冲区最大大小。超过 256 MiB 的值会被限制为 256 MiB，因为读取缓冲区不需要更大。

<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" />

查询的priority。1 表示最高priority，值越大priority越低；0 表示不使用priority。

<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_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](/docs/zh/reference/system-tables/query_metric_log) 的时间间隔 (以毫秒为单位) 。

如果设置为任意负值，则会采用 [query\_metric\_log 设置](/docs/zh/reference/settings/server-settings/settings#query_metric_log) 中的 `collect_interval_milliseconds` 值；如果未设置，则默认使用 1000。

要禁用单个查询的收集，请将 `query_metric_log_interval` 设置为 0。

默认值：-1

<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="Milliseconds" default_value="5000" />

重试前，从 RabbitMQ 读取的等待时间。

<div id="readonly">
  ## readonly
</div>

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

0 - 无只读限制。1 - 仅允许读取请求，以及修改明确允许更改的设置。2 - 仅允许读取请求，以及修改除 `readonly` 设置外的其他设置。

<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": "通过迭代调用 getLeastSupertype 在递归 CTE 中推断列类型的最大迭代次数"}]}]} />

在递归 CTE 中推断列类型时允许的最大迭代次数。列类型的确定方式是：在 UNION ALL 的非递归部分和递归部分之间反复应用 `getLeastSupertype`，直到结果收敛。设为 0 可禁用类型拓宽，仅使用非递归部分的类型。

<div id="regexp_max_matches_per_row">
  ## regexp\_max\_matches\_per\_row
</div>

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

设置单个正则表达式在每行中的最大匹配次数。使用 [extractAllGroupsHorizontal](/docs/zh/reference/functions/regular-functions/string-search-functions#extractAllGroupsHorizontal) 函数中的贪婪正则表达式时，可用此设置防止内存占用过高。

可能的值：

* 正整数。

<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_read_min_bytes_for_seek">
  ## remote\_read\_min\_bytes\_for\_seek
</div>

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

远程读取 (URL、S3) 执行寻道而非以 ignore 方式读取时所需的最小字节数。

<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="replication_wait_for_inactive_replica_timeout">
  ## replication\_wait\_for\_inactive\_replica\_timeout
</div>

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

指定等待非活动副本执行 [`ALTER`](/docs/zh/reference/statements/alter/index)、[`OPTIMIZE`](/docs/zh/reference/statements/optimize) 或 [`TRUNCATE`](/docs/zh/reference/statements/truncate) 查询的时间 (以秒为单位) 。

可能的值：

* `0` — 不等待。
* 负整数 — 无限期等待。
* 正整数 — 要等待的秒数。

<div id="reserve_memory">
  ## reserve\_memory
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "新增设置：在查询启动前为特定工作负载预留内存。"}]}]} />

用于工作负载调度。该设置指定在单台服务器上运行查询时预留的最小 RAM 量。预留通过 WORKLOAD 层级，基于查询设置 `workload` 的值进行。
如果该工作负载没有足够的可用内存，查询将无法启动，并会保持在待处理状态，直到能够满足预留要求。
值为 `0` 表示不预留内存。
仅当创建了 MEMORY RESERVATION 资源时，此设置才会生效。

<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": "新设置。"}]}]} />

在 RESTORE 时，将表引擎从 Replicated*MergeTree 替换为 Shared*MergeTree。

Cloud 默认值：`1`。

<div id="result_overflow_mode">
  ## result\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

设置当结果量超过某个限制时的处理方式。

可能的值：

* `throw`：抛出异常 (默认) 。
* `break`：停止执行查询并返回部分结果，就像
  源数据已经耗尽一样。

使用 'break' 与使用 LIMIT 类似。`Break` 只会在
块级别中断执行。这意味着返回的行数会大于
[`max_result_rows`](/docs/zh/reference/settings/session-settings/max-result#max_result_rows)，且是 [`max_block_size`](/docs/zh/reference/settings/session-settings/max#max_block_size)
的倍数，并且取决于 [`max_threads`](/docs/zh/reference/settings/session-settings/max-threads#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="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="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 一致性](/docs/zh/products/cloud/features/infrastructure/shared-merge-tree#consistency)。
</Note>

为 `SELECT` 查询启用或禁用顺序一致性。要求禁用 `insert_quorum_parallel` (默认情况下启用) 。

Possible values:

* 0 — 禁用。
* 1 — 启用。

Usage

启用顺序一致性后，ClickHouse 只允许客户端在包含此前所有使用 `insert_quorum` 执行的 `INSERT` 查询数据的副本上执行 `SELECT` 查询。如果客户端访问的是不完整的副本，ClickHouse 将抛出异常。`SELECT` 查询不会包含尚未写入到法定数量副本中的数据。

启用 `insert_quorum_parallel` (默认值) 时，`select_sequential_consistency` 将不起作用。这是因为并行 `INSERT` 查询可能会写入不同的法定数量副本集合，因此无法保证某一个副本已接收到所有写入。

See also:

* [insert\_quorum](/docs/zh/reference/settings/session-settings/insert-quorum#insert_quorum)
* [insert\_quorum\_timeout](/docs/zh/reference/settings/session-settings/insert-quorum#insert_quorum_timeout)
* [insert\_quorum\_parallel](/docs/zh/reference/settings/session-settings/insert-quorum#insert_quorum_parallel)

<div id="session_timezone">
  ## session\_timezone
</div>

<BetaBadge />

设置当前 session 或查询的隐式时区。
隐式时区是应用于未显式指定时区的 DateTime/DateTime64 类型值的时区。
此设置的优先次序高于全局配置的 (server 级别) 隐式时区。
值为 '' (空字符串) 表示当前 session 或查询的隐式时区与[server 时区](/docs/zh/reference/settings/server-settings/settings#timezone)相同。

你可以使用函数 `timeZone()` 和 `serverTimeZone()` 获取会话时区和 server 时区。

可能的值：

* `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"
```

将会话时区 '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 │
└─────────────────────┴──────────────────┘
```

这是由于解析流程不同所致：

* 第一个 `SELECT` 查询中，未显式指定 time zone 的 `toDateTime()` 会遵循 `session_timezone` 设置和全局 time zone。
* 在第二个查询中，日期时间是从 String 解析而来，并继承现有列 `d` 的类型和 time zone。因此，`session_timezone` 设置和全局 time zone 都不会生效。

**另请参见**

* [timezone](/docs/zh/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="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": "启用后，允许在同一表的多个 materialized 列中多次使用同一个用户自定义函数。"}]}]} />

为简化用户自定义函数的使用，冗余别名不会在其中使用，而是会被替换。

可能的值：

* 1 — 在 UDFs 中跳过 (替换) 这些别名。
* 0 — 在 UDFs 中不跳过 (替换) 这些别名。

**示例**

启用和禁用的区别：

查询：

```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="sleep_after_receiving_query_ms">
  ## sleep\_after\_receiving\_query\_ms
</div>

<SettingsInfoBlock type="毫秒" default_value="0" />

TCPHandler 收到查询后休眠的时长

<div id="snappy_mode">
  ## snappy\_mode
</div>

<SettingsInfoBlock type="SnappyMode" default_value="basic" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "basic"},{"label": "用于控制在通用文件\/URL I\/O 中，snappy 压缩所使用传输格式的新设置。默认值 `basic` 会保留与 Hadoop snappy 块格式读取的向后兼容性；HTTP `Content-Encoding: snappy` 始终使用 framing 格式，不受此设置影响。"}]}]} />

控制在通用文件 I/O 路径 (如 `file` 和 `url`) 中，snappy 压缩所使用的传输格式。HTTP `Content-Encoding: snappy` 始终使用 framing 格式，并会忽略此设置。

请注意，单次调用 `snappy::Compress` 生成的原始 snappy 块格式 (例如由 `SnappyBasicReadBuffer` 处理的 Prometheus 远程协议载荷) 属于另一种特定于协议的传输格式，不受此设置控制。

可能的值：

* `basic` — Hadoop snappy 块格式。兼容 Hadoop 读写的文件。支持读取和写入。
* `framed` — Snappy framing 格式，即 Google 定义的标准流式格式。支持读取和写入。

<div id="sort_overflow_mode">
  ## sort\_overflow\_mode
</div>

<SettingsInfoBlock type="OverflowMode" default_value="throw" />

设置在排序前接收的行数超过某个限制时的处理方式。

可能的值：

* `throw`：抛出异常。
* `break`：停止执行查询并返回部分结果。

<div id="splitby_max_substrings_includes_remaining_string">
  ## splitby\_max\_substrings\_includes\_remaining\_string
</div>

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

控制带有参数 `max_substrings` > 0 的 [splitBy\*()](/docs/zh/reference/functions/regular-functions/splitting-merging-functions) 函数是否会将剩余字符串包含在结果数组的最后一个元素中。

可能的值：

* `0` - 剩余字符串不会包含在结果数组的最后一个元素中。
* `1` - 剩余字符串会包含在结果数组的最后一个元素中。这是 Spark 的 [`split()`](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.split.html) 函数和 Python 的 [`string.split()`](https://docs.python.org/3/library/stdtypes.html#str.split) 方法的行为。

<div id="stop_refreshable_materialized_views_on_startup">
  ## stop\_refreshable\_materialized\_views\_on\_startup
</div>

<ExperimentalBadge />

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

在服务器启动时，阻止调度可刷新materialized view，效果等同于执行 SYSTEM STOP VIEWS。之后，你可以手动使用 `SYSTEM START VIEWS` 或 `SYSTEM START VIEW <name>` 启动它们。此设置也适用于新创建的视图。对不可刷新的 materialized view 无效。

<div id="tcp_keep_alive_timeout">
  ## tcp\_keep\_alive\_timeout
</div>

<SettingsInfoBlock type="Seconds" 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="throw_if_no_data_to_insert">
  ## throw\_if\_no\_data\_to\_insert
</div>

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

允许或禁止空 INSERT，默认启用 (空插入时会抛出错误) 。仅适用于通过 [`ClickHouse 客户端`](/docs/zh/concepts/features/interfaces/cli) 或 [gRPC 接口](/docs/zh/concepts/features/interfaces/grpc) 执行的 INSERT。

<div id="timeout_before_checking_execution_speed">
  ## timeout\_before\_checking\_execution\_speed
</div>

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

在指定的秒数过去后，检查执行速度是否过慢 (不低于 `min_execution_speed`) 。

<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" />

为 [IN](/docs/zh/reference/statements/in) 运算符启用 [NULL](/docs/zh/reference/syntax#null) 值之间的相等比较。

默认情况下，`NULL` 值不能参与比较，因为 `NULL` 表示未定义的值。因此，比较 `expr = NULL` 必须始终返回 `false`。启用此设置后，对于 `IN` 运算符，`NULL = NULL` 会返回 `true`。

可能的值：

* 0 — `IN` 运算符中对 `NULL` 值的比较返回 `false`。
* 1 — `IN` 运算符中对 `NULL` 值的比较返回 `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 │
└──────┴───────┘
```

**另请参见**

* [IN 运算符中的 NULL 处理](/docs/zh/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 时，除实际表数据外，也遍历冻结数据（shadow 目录）。"}]}]} />

查询 system.remote\_data\_paths 时，除实际表数据外，也遍历冻结数据 (shadow 目录)

<div id="union_default_mode">
  ## union\_default\_mode
</div>

设置用于合并 `SELECT` 查询结果的模式。只有在使用 [UNION](/docs/zh/reference/statements/select/union) 且未显式指定 `UNION ALL` 或 `UNION DISTINCT` 时，此设置才会生效。

可能的值：

* `'DISTINCT'` — ClickHouse 在合并查询结果时会去除重复行。
* `'ALL'` — ClickHouse 在合并查询结果时会保留所有行，包括重复行。
* `''` — 与 `UNION` 一起使用时，ClickHouse 会引发异常。

示例请参见 [UNION](/docs/zh/reference/statements/select/union)。

<div id="unique_key_max_encoded_size">
  ## unique\_key\_max\_encoded\_size
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "256"},{"label": "新设置：单个 UNIQUE KEY 行的保序二进制编码的最大大小（字节）"}]}]} />

单个 `UNIQUE KEY` 行的保序二进制编码的最大大小 (以字节为单位) 。

<div id="unknown_packet_in_send_data">
  ## unknown\_packet\_in\_send\_data
</div>

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

在第 N 个数据包处发送未知数据包，而不是发送数据

<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](/docs/zh/reference/data-types/variant) 列应用函数时，
控制实际类型与该函数不兼容的行应如何处理：

* `true` (默认) — 抛出异常。
* `false` — 改为对这些行返回 `NULL`。

<div id="wait_changes_become_visible_after_commit_mode">
  ## wait\_changes\_become\_visible\_after\_commit\_mode
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="TransactionsWaitCSNMode" default_value="wait_unknown" />

等待已提交的更改在最新快照中变为可见

<div id="workload">
  ## workload
</div>

<SettingsInfoBlock type="String" default_value="default" />

访问资源时使用的 workload 名称

<div id="write_full_path_in_iceberg_metadata">
  ## write\_full\_path\_in\_iceberg\_metadata
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "新增设置。"}]}]} />

将完整路径 (包括 S3://) 写入 Iceberg 元数据文件。

<div id="zstd_window_log_max">
  ## zstd\_window\_log\_max
</div>

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

允许选择 ZSTD 的最大 window log (不适用于 MergeTree 家族)
