adaptive_aggregator_freeze_threshold
enable_adaptive_aggregator) 。较小的值可使冻结后的表保持在缓存中,较大的值则可让其吸收更多高频键。值为 0 时,表会在首次有机会时冻结,这会使该算法的行为类似于分片聚合器 (enable_sharding_aggregator) :每个键都根据其哈希进行路由,并由单个所有者聚合;区别仅在于,聚合会延后到合并阶段,而不是在扫描期间在线程之间交换。
add_http_cors_header
analyze_index_with_space_filling_curves
ORDER BY mortonEncode(x, y) 或 ORDER BY hilbertEncode(x, y),并且查询对其参数指定了条件,例如 x >= 10 AND x <= 20 AND y >= 20 AND y <= 30,则会使用空间填充曲线进行索引分析。
analyzer_inline_views
any_join_distinct_right_table_keys
ANY INNER|LEFT JOIN 操作中的旧版 ClickHouse server 行为。
仅当你的用例依赖旧版
JOIN 行为时,才应出于向后兼容目的使用此设置。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 — 旧版行为已启用。
archive_adaptive_buffer_max_size_bytes
arrow_flight_request_descriptor_type
- ‘path’ — 使用 FlightDescriptor::Path (默认值,适用于大多数 Arrow Flight 服务器)
- ‘command’ — 使用包含 SELECT 查询的 FlightDescriptor::Command (Dremio 需要这种方式)
backup_slow_all_threads_after_retryable_s3_error
true 时,只要有任意一个 S3 请求遇到可重试的 S3 错误 (例如 ‘Slow Down’) ,
所有向同一备份端点发起 S3 请求的线程都会被放慢。
当设置为 false 时,每个线程都会独立处理 S3 请求的退避,而不受其他线程影响。
cache_warmer_threads
calculate_text_stack_trace
cancel_http_readonly_queries_on_client_close
SELECT) 。
Cloud 默认值:1。
checksum_on_read
compression
compression=gz。请注意,此设置独立于 Content-Encoding (HTTP 压缩) 和旧版 compress 参数 (ClickHouse 原生压缩) 。在 URL 路径中指定压缩文件扩展名也可达到相同效果。
这是一个用于调整 HTTP 接口响应的设置:它会在查询执行前被处理 (响应缓冲区会预先设置) ,因此必须通过 HTTP URL 参数、URL 路径中的文件扩展名或用户 profile 提供,不能通过查询内的 SETTINGS 子句提供 (在该子句中无效,并且会被拒绝) 。
connection_pool_max_wait_ms
- 正整数。
- 0 — 无限等待。
connections_with_failover_max_tries
convert_query_to_cnf
true 时,SELECT 查询会被转换为合取范式 (CNF) 。在某些情况下,将查询重写为 CNF 可能会执行得更快 (说明请参见这个 Github issue) 。
例如,请注意下面这个 SELECT 查询不会被修改 (这是默认行为) :
convert_query_to_cnf 设为 true,看看会有哪些变化:
WHERE 子句虽已重写为 CNF,但结果集完全相同——布尔逻辑并未改变:
count_matches_stop_at_empty_match
countMatches 函数中,一旦模式匹配到零长度内容,就停止计数。
cross_to_inner_join_rewrite
data_type_default_nullable
- 1 — 列定义中的数据类型默认设置为
Nullable。 - 0 — 列定义中的数据类型默认不设置为
Nullable。
decimal_check_overflow
deduplicate_blocks_in_dependent_materialized_views
- 0 — 禁用。
- 1 — 启用。
defer_partition_pruning_after_final
FINAL 查询会跳过分区裁剪。这是 26.3 引入的、可确保正确性的行为:FINAL 可能需要对主键相同但位于不同分区的行进行去重,而分区裁剪会在不提示的情况下将这些行排除在去重输入之外。
禁用时,即使使用 FINAL 也会应用分区裁剪,从而恢复 26.3 之前的行为。对于在分区列上带有 WHERE 条件的查询,这种方式可能会显著更快,但只有在不同分区中不可能存在主键相同的行时才是正确的——例如事件日志表,其分区列在 insert 时设定,之后永不更改。
此设置仅影响分区键列未包含在 sorting key 中的分区表;对于其他表,始终会应用分区裁剪。
可能的值:
- 0 — 在
FINAL之前应用分区裁剪 (26.3 之前的行为,更快,但一般情况下不安全) 。 - 1 — 将分区裁剪延后到
FINAL之后 (默认,确保正确性) 。
describe_compact_output
dialect
clickhouse(默认) — 标准 ClickHouse SQL。kusto— Kusto 查询语言。需要启用 Experimental 设置allow_experimental_kusto_dialect。prql— PRQL。需要启用 Experimental 设置allow_experimental_prql_dialect。polyglot— 将其他方言 (MySQL、PostgreSQL 等) 的 SQL 转译为 ClickHouse SQL。需要启用 Experimental 设置allow_experimental_polyglot_dialect。promql— PromQL (Prometheus 查询语言) ,基于由promql_database、promql_table和promql_evaluation_time设置指定的 TimeSeries 表进行计算。clickhouse_json— 查询将不作为 SQL 文本处理,而是解释为 JSON AST (parseQueryToJSON的输出) 。仍可使用普通形式的SET查询,以便切换回其他方言。需要启用 Experimental 设置enable_json_ast_dialect。
discard_query_data
distinct_overflow_mode
throw:抛出异常 (默认) 。break:停止执行查询并返回部分结果,就像源数据已耗尽一样。
do_not_merge_across_partitions_select_final
dynamic_throw_on_type_mismatch
true(默认) — 抛出异常。false— 对这些行返回NULL。
enforce_strict_identifier_format
engine_url_skip_empty_files
- 0 — 如果空文件与所请求的格式不兼容,
SELECT会抛出异常。 - 1 — 对于空文件,
SELECT返回空结果。
exact_rows_before_limit
except_default_mode
exclude_materialize_skip_indexes_on_insert
execute_exists_as_scalar_subquery
0。
explain_query_plan_default
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 形式呈现时才能正确显示。
extract_key_value_pairs_max_pairs_per_row
extract_kvp_max_pairs_per_row
extractKeyValuePairs 函数可生成的键值对的最大数量。用于防止占用过多内存。
extremes
fallback_to_stale_replicas_for_distributed_queries
SELECT 时。
默认值为 1 (已启用) 。
file_like_engine_default_partition_strategy
{_partition_id} 占位符时适用:此类路径仅兼容 wildcard 策略,因此始终采用 wildcard。
filesystem_prefetches_limit
filesystem_prefetches_max_memory_usage
filter
WHERE 子句。多个过滤器会使用 AND 组合。HTTP 接口支持多个 filter URL 参数,这些参数会按顺序使用 AND 相互组合,并与此设置的值组合。
这是一项由引擎应用于已解析查询的查询构造设置 (将查询包装为派生表) ,因此可与现有查询组合使用,并适用于所有协议:可通过 HTTP URL 参数、查询内的 SETTINGS 子句或用户 profile 提供。
它会影响产生结果的 SELECT / UNION 查询。对于写入查询 (INSERT … SELECT、CREATE … AS SELECT) ,仅当源 SELECT 在自身的 SETTINGS 子句中指定此设置时才会生效;从 profile 或 session 继承的值,或在 INSERT / CREATE 语句本身中设置的值,不会传播到源 SELECT——这与其他所有设置的非传播规则相同。
filter 不是访问控制机制,不得用作 行级安全策略 或 additional_table_filters 设置的替代方案。它只会在包装子查询的外层添加 WHERE,因此在应用过滤器前,底层数据仍会被读取和处理——查询在处理过程中仍可能观察到被过滤掉的行 (例如,使用 throwIf 通过错误路径泄露信息) 。如需限制用户可访问的行,请使用行级安全或 additional_table_filters。final
- 0 - 已禁用
- 1 - 已启用
finalize_projection_parts_synchronously
flatten_nested
- 1 — Nested 列会被展平为单独的数组。
- 0 — Nested 列保持为单个元组数组。
0,则可以使用任意层级的嵌套。
示例
查询:
format
FORMAT。其优先级高于查询中指定的 format 和文件扩展名。对于各自的方向,更具体的 input_format 和 output_format 设置优先于通用的 format 设置。
framing_output_format
data、totals 和 extremes 数据包的载荷拼接后,与不使用 framing 时输出格式生成的内容完全一致。辅助数据包 (Progress 信息、日志、profile events、exceptions) 以 JSON 表示。
有一个特意设计的例外:某些输出格式因无法表示 totals 和 extremes 而在普通输出中省略它们 (JSONCompactEachRow 系列) ,但在 framing 下会将它们写入 totals 和 extremes 数据包。对于此类 formats,仅拼接 data 数据包即可得到与未分帧输出完全相同的结果,而 totals 和 extremes 数据包则携带未分帧输出中没有的额外行。
设置了 send_logs_level 时会包含 server logs;启用 send_profile_events 时会包含 profile events (它们最多每 interactive_delay 微秒发送一次,Progress 信息数据包同样受 interactive_delay 限流) 。
成功的 stream 会以最终的 progress 数据包结束。该数据包携带最终计数器 (result_rows、result_bytes、memory_usage) ,在查询完成日志记录产生的尾随 log 和 profile_events 数据包之后写入,类似于 native protocol 中的最终 Progress 信息数据包。失败时,exception 数据包会成为最后一个数据包;但有一个例外:如果在响应中已生成部分数据包 stream、无法再丢弃时发生失败 (例如数据包写入中途失败、exception 数据包本身发送失败,或响应 stream 在刷新或关闭时失败) ,framing 会以失败关闭的方式处理:stream 会在没有终止 exception 数据包的情况下结束,客户端看到的是截断的响应和中止的 HTTP connection,而不是可解析的终止数据包。部分数据包 stream 之后绝不会追加任何内容,因此普通 HTTP 错误正文绝不会混入其中。
查询仅通过自身的 SETTINGS clause 启用的内容——帧格式、send_logs_level 或 send_profile_events——在查询解析完成前无法得知,因此相应的日志和 profile events 只能从查询执行开始后捕获。只有当设置来自 session 或 URL 时,才能捕获 parse、plan 和 analysis 阶段的日志和 profile events。例如,某个查询在 analysis 期间失败 (如引用未知表) ,且仅在其 SETTINGS clause 中启用 send_logs_level,则只会传递 exception 数据包,不会传递 analysis 阶段的日志;请在 session 或 URL 中设置 send_logs_level 以捕获这些日志。
同样的延迟发现限制也适用于 send_logs_source_regexp:日志队列会在捕获每个条目时按 source 过滤,因此仅在查询自身的 SETTINGS clause 中设置的 regexp 会从查询执行开始后生效。parse、plan 和 analysis 阶段的 log 数据包会按该设置的 session 或 URL 值过滤 (如果未在其中设置,则不过滤) ,因此其中可能包含不匹配查询级别 regexp 的 sources;反之,被更严格的 session 或 URL regexp 丢弃的条目,也无法通过更宽泛的查询级别 regexp 恢复。请在 session 或 URL 中设置 send_logs_source_regexp,以过滤整个查询生命周期。
该设置目前仅适用于 HTTP protocol,其他 interfaces 会忽略它。
可能的值:
None- 将所有适用内容 (数据、totals、extremes、Progress 信息) 透明地传递给输出格式,并忽略所有不适用内容 (指标、日志) ,因此默认情况下即可正常工作。EventStream- 将数据包封装为 HTTP 服务器发送事件 (text/event-stream) 。每个数据包都会作为具有相应名称的事件发送:data、totals、extremes、progress、log、profile_events、exception。Progress 信息和其他辅助数据包以 JSON 格式发送。由于服务器发送事件是一种将换行符 (包括回车符\r) 视为分隔符的文本协议,格式化数据块会经过 base64 编码并置于事件的单个data字段中;解码后即可得到包含所有换行符的完整格式化载荷。Content-Type包含payload=base64参数以表明这一点。通过这种方式,任何输出格式都可进行字节精确传输,无论是文本还是二进制格式。JSONEachPacketBase64- 每个数据包都是单独一行中的 JSON 对象,格式化数据经过 base64 编码,例如{"packet":"data","data":"eyJ4IjoxfQo="}。适用于二进制输出格式。JSONEachPacketString- 每个数据包都是单独一行中的 JSON 对象,格式化数据会放入字符串中,例如{"packet":"data","data":"{\"x\":1}\n"}。
JSONEachPacketString 会将载荷字节放入 JSON 字符串中,而不对其进行验证或重新编码。String 和 FixedString 列可存储任意字节,因此文本输出格式 (如 JSONEachRow、TSV 或 CSV) 可能会为此类值输出无效的 UTF-8——正如 ClickHouse’ 自身的 JSONEachRow 在默认 output_format_json_validate_utf8 = 0 时所做的一样——因此生成的 NDJSON 流不保证是有效的 UTF-8。若要以字节精确方式传输任意字节,请使用 JSONEachPacketBase64。
示例:
fsync_metadata
.sql 文件时是否启用 fsync。默认启用。
如果 server 中有数百万个持续创建和删除的小表,禁用此项是合理的。
functions_h3_default_if_invalid
geo_distance_returns_float64_on_float64_arguments
geoDistance、greatCircleDistance 和 greatCircleAngle 这三个函数的四个参数均为 Float64,则返回 Float64,并在内部计算中使用双精度。在此前的 ClickHouse 版本中,这些函数始终返回 Float32。
geotoh3_argument_order
geoToH3 在设置为 lon_lat 时接受 (lon, lat),在设置为 lat_lon 时接受 (lat, lon)。
glob_expansion_max_elements
h3togeo_lon_lat_result_order
h3ToGeo 返回 (lon, lat);否则返回 (lat, lon)。
handshake_timeout_ms
hedged_connection_timeout_ms
highlight_max_matches_per_row
- 正整数。
hnsw_candidate_list_size_for_search
hsts_max_age
idle_connection_timeout
- 正整数 (0 表示立即关闭,即 0 秒后关闭) 。
inject_random_order_for_select_without_order_by
input_format
interactive_delay
intersect_default_mode
least_greatest_legacy_null_behavior
least 和 greatest 的任一参数为 NULL 时,将返回 NULL。
legacy_column_name_of_tuple_literal
limit
LIMIT,并接受 LIMIT 支持的所有值,包括负值 (从结果末尾开始计数) 和 (0, 1) 范围内的小数 (表示结果的占比) 。
可能的值:
- 0 — 不限制行数。
- 正整数 — 精确的行数。
- 负整数 — 返回最后 N 行。
- 开区间
(0, 1)内的实数 — 返回结果中相应比例的数据。
SELECT / UNION 查询。对于写入查询 (INSERT … SELECT、CREATE … AS SELECT) ,只有当源 SELECT 在其自身的 SETTINGS 子句中指定此设置时才会生效;从 profile 或 session 继承的值,或在 INSERT / CREATE 语句本身设置的值,都不会传播到源 SELECT。这与其他所有设置适用的“不传播”规则相同。
load_marks_asynchronously
1。
lock_acquire_timeout
DEADLOCK_AVOIDED。
Possible values:
- 正整数 (单位:秒) 。
- 0 — 不设置锁超时。
low_priority_query_wait_time_ms
priority) ,低优先级查询会等待高优先级查询完成。此设置指定等待时长。
make_distributed_plan
enable_parallel_replicas = 0和automatic_parallel_replicas_mode = 0— 分布式计划自行分配工作;correlated_subqueries_use_in_memory_buffer = 0;use_skip_indexes_on_data_read = 0;compile_expressions = 0;query_plan_direct_read_from_text_index = 0。
merge_table_max_tables_to_look_for_schema_inference
Merge 表,或使用 merge 表函数时,会将 schema 推断为匹配表的并集,数量不超过指定值。
如果表的数量更多,则只会基于前面指定数量的表来推断 schema。
mongodb_throw_on_unsupported_query
allow_experimental_analyzer=0 时,此选项不适用。
multiple_joins_try_to_keep_original_names
normalize_function_names
offset
OFFSET,可接受 OFFSET 支持的所有值,包括负值和 (0, 1) 区间内的小数。
可能的值:
- 0 — 不跳过任何行。
- 正整数。
- 负整数。
- 开区间
(0, 1)内的实数 — 跳过结果中相应比例的行。
SELECT / UNION 查询。对于写入查询 (INSERT … SELECT、CREATE … AS SELECT) ,只有当源 SELECT 在自身的 SETTINGS 子句中指定了该设置时才会生效;从 profile 或会话继承的值,或在 INSERT / CREATE 语句本身中设置的值,都不会传播到源 SELECT——这与其他任何设置的非传播规则相同。
order
ORDER BY 子句作为外层子查询添加到查询中。接受任意表达式列表。
这是引擎在已解析的查询上应用的查询构造设置 (将查询包装为派生表) ,因此可与现有查询组合使用,并适用于所有协议:可通过 HTTP URL 参数、查询内的 SETTINGS 子句或用户 profile 提供。
它会作用于产生结果的 SELECT / UNION 查询。对于写入查询 (INSERT … SELECT、CREATE … AS SELECT) ,只有源 SELECT 在自身的 SETTINGS 子句中包含该设置时才会生效;从 profile 或 会话 继承的值,或在 INSERT / CREATE 语句本身中设置的值,不会传播到源 SELECT——这与其他所有设置遵循相同的非传播规则。
output_format
default_format 指定的格式。
页码
offset = limit * (page - 1)。仅当设置了 limit 且未设置 offset 时才能指定。页码从 1 开始计数。与 limit 和 offset 一样,支持负值和小数值。
这是引擎应用于已解析查询的查询构造设置 (会将查询包装为派生表) ,因此可与现有查询组合,并适用于所有协议:可通过 HTTP URL 参数、查询内的 SETTINGS 子句或用户 profile 提供。
它会影响产生结果的 SELECT / UNION 查询。对于写入查询 (INSERT … SELECT、CREATE … AS SELECT) ,仅当源 SELECT 在其自身的 SETTINGS 子句中包含此设置时才会生效;从 profile 或会话继承的值,或在 INSERT / CREATE 语句本身中设置的值,都不会传播到源 SELECT——这与任何其他设置适用的非传播规则相同。
paimon_target_snapshot_id
parallelize_output_from_storages
partial_result_on_first_cancel
per_part_index_stats
poll_interval
polyglot_dialect
postgresql_fault_injection_probability
predicate_statistics_sample_rate
system.predicate_statistics_log。设置为 N > 0 时,将按查询 ID 对约 1/N 的查询进行采样。0 表示禁用。
prefetch_buffer_size
print_pretty_type_names
DESCRIBE 查询和 toTypeName() 函数中,以带缩进的美观格式输出深层嵌套的类型名称。
示例:
priority
push_external_roles_in_interserver_queries
query_metric_log_interval
collect_interval_milliseconds 值;如果未设置,则默认使用 1000。
要禁用单个查询的收集,请将 query_metric_log_interval 设置为 0。
默认值:-1
queue_max_wait_ms
rabbitmq_max_wait_ms
readonly
readonly 设置外的其他设置。
recursive_cte_max_steps_in_type_inference
getLeastSupertype,直到结果收敛。设为 0 可禁用类型拓宽,仅使用非递归部分的类型。
regexp_max_matches_per_row
- 正整数。
reject_expensive_hyperscan_regexps
remerge_sort_lowered_memory_bytes_ratio
remote_read_min_bytes_for_seek
rename_files_after_processing
- 类型: String
- 默认值: 空字符串
file 表函数处理的文件指定重命名模式。设置此选项后,file 表函数读取的所有文件都会在处理成功后,按照包含占位符的指定模式重命名。
占位符
%a— 原始文件的完整文件名 (例如"sample.csv") 。%f— 不含扩展名的原始文件名 (例如"sample") 。%e— 带点号的原始文件扩展名 (例如".csv") 。%t— 时间戳 (以微秒为单位) 。%%— 百分号 ("%") 。
示例
-
选项:
--rename_files_after_processing="processed_%f_%t%e" -
查询:
SELECT * FROM file('sample.csv')
sample.csv 读取成功,文件将重命名为 processed_sample_1683473210851438.csv
replication_wait_for_inactive_replica_timeout
ALTER、OPTIMIZE 或 TRUNCATE 查询的时间 (以秒为单位) 。
可能的值:
0— 不等待。- 负整数 — 无限期等待。
- 正整数 — 要等待的秒数。
reserve_memory
workload 的值进行。
如果该工作负载没有足够的可用内存,查询将无法启动,并会保持在待处理状态,直到能够满足预留要求。
值为 0 表示不预留内存。
仅当创建了 MEMORY RESERVATION 资源时,此设置才会生效。
在 RESTORE 时,将表引擎从 ReplicatedMergeTree 替换为 SharedMergeTree。
Cloud 默认值:1。
result_overflow_mode
throw:抛出异常 (默认) 。break:停止执行查询并返回部分结果,就像 源数据已经耗尽一样。
Break 只会在
块级别中断执行。这意味着返回的行数会大于
max_result_rows,且是 max_block_size
的倍数,并且取决于 max_threads。
示例
Query
Result
rows_before_aggregation
secondary_indices_enable_bulk_filtering
select
SELECT 表达式列表的子查询。非空时,会将产生结果的查询包装为 SELECT <expr_list> FROM (<query>)。
这是引擎应用于已解析查询的查询构造设置 (将其包装为派生表) ,因此可与现有查询组合使用,并适用于所有协议:可通过 HTTP URL 参数、查询内的 SETTINGS 子句或用户 profile 提供。
它会影响产生结果的 SELECT / UNION 查询。对于写入查询 (INSERT … SELECT、CREATE … AS SELECT) ,仅当源 SELECT 在其自身的 SETTINGS 子句中指定该设置时才会生效;从 profile 或 会话 继承的值,或在 INSERT / CREATE 语句本身上设置的值,不会传播到源 SELECT——这与其他任何设置均适用的不传播规则相同。
select_sequential_consistency
此设置在 SharedMergeTree 和 ReplicatedMergeTree 中的行为不同。有关
select_sequential_consistency 在 SharedMergeTree 中的行为的更多信息,请参阅 SharedMergeTree 一致性。SELECT 查询启用或禁用顺序一致性。要求禁用 insert_quorum_parallel (默认情况下启用) 。
Possible values:
- 0 — 禁用。
- 1 — 启用。
insert_quorum 执行的 INSERT 查询数据的副本上执行 SELECT 查询。如果客户端访问的是不完整的副本,ClickHouse 将抛出异常。SELECT 查询不会包含尚未写入到法定数量副本中的数据。
启用 insert_quorum_parallel (默认值) 时,select_sequential_consistency 将不起作用。这是因为并行 INSERT 查询可能会写入不同的法定数量副本集合,因此无法保证某一个副本已接收到所有写入。
See also:
session_timezone
timeZone() 和 serverTimeZone() 获取会话时区和 server 时区。
可能的值:
system.time_zones中的任意时区名称,例如Europe/Berlin、UTC或Zulu
- 第一个
SELECT查询中,未显式指定 time zone 的toDateTime()会遵循session_timezone设置和全局 time zone。 - 在第二个查询中,日期时间是从 String 解析而来,并继承现有列
d的类型和 time zone。因此,session_timezone设置和全局 time zone 都不会生效。
set_overflow_mode
throw:抛出异常 (默认值) 。break:停止执行查询并返回部分结果,就像 源数据已经耗尽一样。
single_join_prefer_left_table
skip_redundant_aliases_in_udf
- 1 — 在 UDFs 中跳过 (替换) 这些别名。
- 0 — 在 UDFs 中不跳过 (替换) 这些别名。
sleep_after_receiving_query_ms
snappy_mode
file 和 url) 中,snappy 压缩所使用的传输格式。HTTP Content-Encoding: snappy 始终使用 framing 格式,并会忽略此设置。
请注意,单次调用 snappy::Compress 生成的原始 snappy 块格式 (例如由 SnappyBasicReadBuffer 处理的 Prometheus 远程协议载荷) 属于另一种特定于协议的传输格式,不受此设置控制。
可能的值:
basic— Hadoop snappy 块格式。兼容 Hadoop 读写的文件。支持读取和写入。framed— Snappy framing 格式,即 Google 定义的标准流式格式。支持读取和写入。
sort
ORDER BY 子句作为外层子查询添加到查询中。接受以逗号分隔的标识符列表或按位置引用的列 (正整数) ,并可带有可选的 + (ASC) 或 - (DESC) 前缀。示例:sort=a,-b 按 a 升序、b 降序排序;sort=1,-2 按第一列升序、第二列降序排序。不能与 order 一起使用。
这是引擎作用于已解析查询的查询构造设置 (将其包装为派生表) ,因此可与现有查询组合使用,并适用于所有协议:可通过 HTTP URL 参数、查询内的 SETTINGS 子句或用户 profile 提供。
它会影响产生结果的 SELECT / UNION 查询。对于写入查询 (INSERT … SELECT、CREATE … AS SELECT) ,仅当源 SELECT 在其自身的 SETTINGS 子句中指定该设置时才会生效;从 profile 或会话继承的值,或在 INSERT / CREATE 语句本身中设置的值,都不会传播到源 SELECT——这与其他任何设置适用的非传播规则相同。
sort_overflow_mode
throw:抛出异常。break:停止执行查询并返回部分结果。
splitby_max_substrings_includes_remaining_string
max_substrings > 0 的 splitBy*() 函数是否会将剩余字符串包含在结果数组的最后一个元素中。
可能的值:
0- 剩余字符串不会包含在结果数组的最后一个元素中。1- 剩余字符串会包含在结果数组的最后一个元素中。这是 Spark 的split()函数和 Python 的string.split()方法的行为。
stop_refreshable_materialized_views_on_startup
SYSTEM START VIEWS 或 SYSTEM START VIEW <name> 启动它们。此设置也适用于新创建的视图。对不可刷新的 materialized view 无效。
tcp_keep_alive_timeout
temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
throw_if_no_data_to_insert
ClickHouse 客户端 或 gRPC 接口 执行的 INSERT。
timeout_before_checking_execution_speed
min_execution_speed) 。
transfer_overflow_mode
throw:抛出异常 (默认) 。break:停止执行查询并返回部分结果,仿佛 源数据已经耗尽。
transform_null_in
NULL 值不能参与比较,因为 NULL 表示未定义的值。因此,比较 expr = NULL 必须始终返回 false。启用此设置后,对于 IN 运算符,NULL = NULL 会返回 true。
可能的值:
- 0 —
IN运算符中对NULL值的比较返回false。 - 1 —
IN运算符中对NULL值的比较返回true。
null_in 表为例:
traverse_shadow_remote_data_paths
union_default_mode
SELECT 查询结果的模式。只有在使用 UNION 且未显式指定 UNION ALL 或 UNION DISTINCT 时,此设置才会生效。
可能的值:
'DISTINCT'— ClickHouse 在合并查询结果时会去除重复行。'ALL'— ClickHouse 在合并查询结果时会保留所有行,包括重复行。''— 与UNION一起使用时,ClickHouse 会引发异常。
unknown_packet_in_send_data
variant_throw_on_type_mismatch
true(默认) — 抛出异常。false— 改为对这些行返回NULL。