use_adaptive_write_buffer_for_dynamic_subcolumns
use_async_block_ids_cache
use_compact_variant_discriminators_serialization
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始终使用自适应粒度。