概述
SELECT 查询;而在分布式
查询处理场景中,这些限制会在每台服务器上分别生效。
ClickHouse 通常只会在数据分区片段
完成处理后才检查这些限制,而不是对每一行都进行检查。这可能
导致在处理分区片段期间
就已经出现超出限制的情况。
overflow_mode 设置
overflow_mode 设置,用于定义
超出限制时的处理方式,可取以下两个值之一:
throw:抛出异常 (默认) 。break:停止执行查询并返回部分结果,就像 源数据已耗尽一样。
group_by_overflow_mode 设置
group_by_overflow_mode 设置还有
一个值 any:
any:继续对已进入该集合的键进行聚合,但不再 将新键添加到该集合中。
设置列表
对“某项内容的最大值”的限制可以设为
0,
这表示其“不受限制”。| 设置项 | 简要说明 |
|---|---|
max_memory_usage | 在单台服务器上运行查询时可使用的最大 RAM 量。 |
max_memory_usage_for_user | 在单台服务器上运行用户查询时可使用的最大 RAM 量。 |
max_rows_to_read | 运行查询时可从表中读取的最大行数。 |
max_bytes_to_read | 运行查询时可从表中读取的最大字节数 (未压缩数据) 。 |
read_overflow_mode_leaf | 设置当读取的数据量超过某个叶子节点限制时的处理方式。 |
max_rows_to_read_leaf | 运行分布式查询时,可从叶子节点上的本地表读取的最大行数。 |
max_bytes_to_read_leaf | 运行分布式查询时,可从叶子节点上的本地表读取的最大字节数 (未压缩数据) 。 |
read_overflow_mode_leaf | 设置当读取的数据量超过某个叶子节点限制时的处理方式。 |
max_rows_to_group_by | 聚合产生的唯一键的最大数量。 |
group_by_overflow_mode | 设置当聚合的唯一键数量超过限制时的处理方式。 |
max_bytes_before_external_group_by | 启用或禁用在外部内存中执行 GROUP BY 子句。 |
max_bytes_ratio_before_external_group_by | GROUP BY 可使用的可用内存比例。达到该比例后,将使用外部内存进行聚合。 |
max_bytes_before_external_sort | 启用或禁用在外部内存中执行 ORDER BY 子句。 |
max_bytes_ratio_before_external_sort | ORDER BY 可使用的可用内存比例。达到该比例后,将使用外部排序。 |
max_rows_to_sort | 排序前允许的最大行数。可用于限制排序时的内存消耗。 |
max_bytes_to_sort | 排序前允许的最大字节数。 |
sort_overflow_mode | 设置当排序前接收的行数超过某个限制时的处理方式。 |
max_result_rows | 限制结果中的行数。 |
max_result_bytes | 限制结果大小 (按字节计,未压缩) 。 |
result_overflow_mode | 设置当结果数据量超过某个限制时的处理方式。 |
max_execution_time | 查询执行时间上限,以秒为单位。 |
timeout_overflow_mode | 设置当查询运行时间超过 max_execution_time,或预估运行时间超过 max_estimated_execution_time 时的处理方式。 |
max_execution_time_leaf | 在语义上与 max_execution_time 类似,但仅适用于分布式或远程查询中的叶子节点。 |
timeout_overflow_mode_leaf | 设置当叶子节点上的查询运行时间超过 max_execution_time_leaf 时的处理方式。 |
min_execution_speed | 最低执行速度,以每秒行数计。 |
min_execution_speed_bytes | 最低执行速度,以每秒字节数计。 |
max_execution_speed | 最高执行速度,以每秒行数计。 |
max_execution_speed_bytes | 最高执行速度,以每秒字节数计。 |
timeout_before_checking_execution_speed | 在指定秒数过去后,检查执行速度是否过慢 (不低于 min_execution_speed) 。 |
max_estimated_execution_time | 查询预估执行时间上限,以秒为单位。 |
max_columns_to_read | 单个查询可从一张表中读取的最大列数。 |
max_temporary_columns | 运行查询时必须同时保存在 RAM 中的临时列的最大数量,包括常量列。 |
max_temporary_non_const_columns | 运行查询时必须同时保存在 RAM 中的临时列的最大数量,但不包括常量列。 |
max_subquery_depth | 设置当查询中的嵌套子查询数量超过指定值时的处理方式。 |
max_ast_depth | 查询语法树的最大嵌套深度。 |
max_ast_elements | 查询语法树中的最大元素数量。 |
max_rows_in_set | 由子查询创建的 IN 子句中数据集的最大行数。 |
max_bytes_in_set | 由子查询创建的 IN 子句中集合可使用的最大字节数 (未压缩数据) 。 |
set_overflow_mode | 设置当数据量超过某个限制时的处理方式。 |
max_rows_in_distinct | 使用 DISTINCT 时不同行的最大数量。 |
max_bytes_in_distinct | 使用 DISTINCT 时,内存中由哈希表使用的状态的最大字节数 (按未压缩字节计) 。 |
distinct_overflow_mode | 设置当数据量超过某个限制时的处理方式。 |
max_rows_to_transfer | 执行 GLOBAL IN/JOIN 子句时,可传递到远程服务器或保存到临时表中的最大大小 (以行为单位) 。 |
max_bytes_to_transfer | 执行 GLOBAL IN/JOIN 子句时,可传递到远程服务器或保存到临时表中的最大字节数 (未压缩数据) 。 |
transfer_overflow_mode | 设置当数据量超过某个限制时的处理方式。 |
max_rows_in_join | 限制表连接时所使用哈希表中的最大行数。 |
max_bytes_in_join | 限制表连接时所使用哈希表的最大大小 (按字节数计) 。 |
join_overflow_mode | 定义达到以下任一 join 限制时 ClickHouse 会执行的操作。 |
max_partitions_per_insert_block | 限制单个插入块中的最大分区数;如果块中包含过多分区,则会抛出异常。 |
throw_on_max_partitions_per_insert_block | 允许控制达到 max_partitions_per_insert_block 时的行为。 |
max_temporary_data_on_disk_size_for_user | 所有并发运行的用户查询在磁盘上由临时 File 消耗的最大数据量 (以字节为单位) 。 |
max_temporary_data_on_disk_size_for_query | 所有并发运行的查询在磁盘上由临时 File 消耗的最大数据量 (以字节为单位) 。 |
max_sessions_for_user | 每个已认证用户连接到 ClickHouse 服务器的最大并发会话数。 |
max_partitions_to_read | 限制单个查询中可访问的最大分区数。 |
已废弃的设置
以下设置已废弃