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. Поскольку это значение различается
для разных гранул, число строк каждой гранулы в части необходимо хранить в
памяти — по 8 байт на гранулу; в больших таблицах это в сумме составляет десятки гигабайт.
При включении постоянной адаптивной гранулярности (этого параметра) число строк в гранулах, напротив, остаётся постоянным,
а их размер в байтах различается. Это число вычисляется один раз на основе среднего размера
строки в записываемой части, и в части хранится одно значение
вместо отдельного значения для каждой гранулы. Поскольку все гранулы содержат одинаковое число строк,
дополнительно хранить число строк для каждой гранулы не требуется.
Объём памяти, занимаемый этими значениями, отражается метрикой
TotalIndexGranularityBytesInMemory в system.asynchronous_metrics,
а для каждой части — в system.parts.index_granularity_bytes_in_memory.
Параметр применяется только к частям, записанным после его изменения. Используйте
ALTER TABLE … REWRITE PARTS,
чтобы применить его к существующим частям. Части Compact всегда используют адаптивную гранулярность.