Skip to main content
这些设置可在 system.merge_tree_settings 中查看,且由 ClickHouse 源代码自动生成。

use_adaptive_write_buffer_for_dynamic_subcolumns

允许在写入 Dynamic 子列时使用自适应写入缓冲区,以 降低内存占用

use_async_block_ids_cache

已废弃,不起任何作用。

use_compact_variant_discriminators_serialization

为 Variant 数据类型中判别值的二进制序列化启用紧凑模式。 当大多数情况下只有一种 Variant,或存在大量 NULL 值时, 此模式可显著减少在 parts 中存储判别值所需的内存。

use_const_adaptive_granularity

非常量自适应粒度 (默认设置,即 index_granularity_bytes 不为 0) 会使 粒度的字节大小保持恒定,因此行数会变化:对于每个 写入的块,每个粒度的行数为 index_granularity_bytes 除以该 块中行的平均大小,且不超过 index_granularity。由于各粒度的行数不同, 必须将parts中每个粒度的行数保存在 内存中,每个占用 8 字节;对于大型表,这些值累计可达数十 GB。 启用常量自适应粒度 (即此设置) 后,粒度的行数将保持恒定, 而字节大小会变化。该行数根据正在写入的parts中行的平均大小计算一次, parts仅存储这一个值, 而非每个粒度存储一个值。由于所有粒度包含相同数量的行, 因此无需额外存储每个粒度的行数。 这些值当前占用的内存量可通过 system.asynchronous_metrics 中的 TotalIndexGranularityBytesInMemory 指标查看, 每个parts的值可通过 system.parts.index_granularity_bytes_in_memory 查看。 此设置仅应用于更改后写入的parts。使用 ALTER TABLE … REWRITE PARTS 将其应用于现有parts。Compact parts始终使用自适应粒度。

use_metadata_cache

已废弃,不起任何作用。

use_primary_key_cache

使用缓存来存储主索引, 而不是将所有索引都保存在内存中。对于非常大的表,这可能很有用
最后修改于 2026年8月14日