这些设置可在 system.settings 中查看,并由 源代码 自动生成。
force_aggregate_partitions_independently
在适用的情况下强制使用该优化,即使启发式规则判断不使用它
force_aggregation_in_order
该设置由服务器自身使用,用于支持分布式查询。请勿手动更改,否则会破坏正常运行。 (在分布式聚合期间,强制远程节点使用按顺序聚合。)
force_creating_set_partitions_independently
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.8 | 0 | 新增设置:即使分区倾斜检查会跳过,也强制在构建 `IN (subquery)` Set 时对每个分区进行预去重。 |
当按分区预去重适用,但分区倾斜检查 (最大分区超过平均值的两倍) 决定不使用时,强制在构建 IN (subquery) Set 时对每个分区进行预去重。仅绕过 allow_creating_set_partitions_independently 的倾斜检查;其余条件仍然适用。
force_data_skipping_indices
如果传入的数据跳过索引未被使用,则禁止查询执行。
请看以下示例:
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=''; -- query will produce CANNOT_PARSE_TEXT error.
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices='d1_idx'; -- query will produce INDEX_NOT_USED error.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='d1_idx'; -- Ok.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`'; -- Ok (example of full featured parser).
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- query will produce INDEX_NOT_USED error, since d1_null_idx is not used.
SELECT * FROM data_01515 WHERE d1 = 0 AND assumeNotNull(d1_null) = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- Ok.force_distinct_partitions_independently
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.8 | 0 | 新增设置:即使成本启发式算法会跳过,也强制按分区独立评估 `DISTINCT`。 |
当按分区独立评估 DISTINCT 适用,但成本启发式算法决定不使用时,强制启用该评估。此设置仅绕过 allow_distinct_partitions_independently 的成本启发式算法;其余条件仍然适用。
force_grouping_standard_compatibility
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 22.9 | 1 | 使 GROUPING 函数的返回值与 SQL 标准及其他 DBMS 一致 |
使 GROUPING 函数在参数未用作聚合键时返回 1
force_index_by_date
如果查询不能利用日期索引,则禁用查询执行。
适用于 MergeTree 家族中的表。
如果 force_index_by_date=1,ClickHouse 会检查查询是否包含可用于限制数据范围的日期键条件。如果没有合适的条件,则会抛出异常。不过,它不会检查该条件是否减少了需要读取的数据量。例如,条件 Date != ' 2000-01-01 ' 是允许的,即使它会匹配表中的所有数据 (也就是说,运行该查询需要全表扫描) 。有关 MergeTree 表中数据范围的更多信息,请参见 MergeTree。
force_primary_key
如果无法利用主键进行索引,则禁用查询执行。
适用于 MergeTree 家族中的表。
如果 force_primary_key=1,ClickHouse 会检查查询是否包含可用于限制数据范围的主键条件。如果没有合适的条件,则会抛出异常。不过,它不会检查该条件是否会减少需要读取的数据量。有关 MergeTree 表中数据范围的更多信息,请参见 MergeTree。
force_read_through_distributed_cache
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.9 | auto | 新增设置,可针对单个查询覆盖服务器设置 `enable_read_through_distributed_cache`。 |
| 26.8 | auto | 新增设置,可针对单个查询覆盖服务器设置 `enable_read_through_distributed_cache`。 |
仅在 ClickHouse Cloud 中生效。可针对单个查询覆盖服务器设置 enable_read_through_distributed_cache。auto (默认值) 表示沿用服务器设置。
force_remove_data_recursively_on_drop
在执行 DROP 查询时递归删除数据。可避免“Directory not empty”错误,但也可能在无提示的情况下删除 detached 数据
force_window_partitions_independently
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.8 | 0 | 新增设置:即使成本启发式算法决定跳过,也强制按分区独立计算窗口函数。 |
当满足适用条件但成本启发式算法决定不采用时,强制按分区独立计算窗口函数。仅绕过 allow_window_partitions_independently 的成本启发式算法;其余条件仍然适用。
force_write_through_distributed_cache
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.9 | auto | 用于针对单个查询覆盖服务器设置 `enable_write_through_distributed_cache` 的新增设置。 |
| 26.8 | auto | 用于针对单个查询覆盖服务器设置 `enable_write_through_distributed_cache` 的新增设置。 |
仅在 ClickHouse Cloud 中生效。可针对单个查询覆盖服务器设置 enable_write_through_distributed_cache。auto (默认值) 表示遵循服务器设置。