use_adaptive_write_buffer_for_dynamic_subcolumns
use_async_block_ids_cache
use_compact_variant_discriminators_serialization
use_const_adaptive_granularity
index_granularity_bytes não é 0) mantém
os grânulos com tamanho constante em bytes, de modo que o número de linhas varia: em cada
bloco gravado, o número de linhas por grânulo é index_granularity_bytes dividido pelo
tamanho médio de uma linha nesse bloco, limitado a index_granularity. Como esse número difere
entre os grânulos, o número de linhas de cada grânulo da parte precisa ser mantido em
memória, a razão de 8 bytes por grânulo, o que, em tabelas grandes, soma dezenas de gigabytes.
Ao ativar a granularidade adaptativa constante (esta configuração), os grânulos passam a ter um número constante de linhas,
de modo que seu tamanho em bytes varia. Esse número é calculado uma única vez com base no tamanho médio de uma
linha da parte que está sendo gravada, e a parte armazena esse único valor
em vez de um valor por grânulo. Como todos os grânulos contêm o mesmo número de linhas,
não é necessário armazenar um número de linhas adicional por grânulo.
A quantidade de memória atualmente usada por esses valores é informada pela
métrica TotalIndexGranularityBytesInMemory em system.asynchronous_metrics
e, por parte, em system.parts.index_granularity_bytes_in_memory.
A configuração é aplicada apenas às partes gravadas após sua alteração. Use
ALTER TABLE … REWRITE PARTS
para aplicá-la às partes existentes. As partes Compact sempre usam granularidade adaptativa.