use_adaptive_write_buffer_for_dynamic_subcolumns
use_async_block_ids_cache
use_compact_variant_discriminators_serialization
use_const_adaptive_granularity
index_granularity_bytes no es 0) mantiene los
gránulos con un tamaño constante en bytes, por lo que su número de filas varía: para cada
bloque escrito, el número de filas por gránulo es index_granularity_bytes dividido por el
tamaño medio de una fila de ese bloque, con un máximo de index_granularity. Como este valor difiere
entre gránulos, el número de filas de cada gránulo de la parte debe mantenerse en
memoria (8 bytes por gránulo), lo que en tablas grandes puede sumar decenas de gigabytes.
Al habilitar la granularidad adaptativa constante (esta configuración), los gránulos mantienen un número constante de filas,
por lo que su tamaño en bytes varía. El número se calcula una sola vez a partir del tamaño medio de una
fila de la parte que se está escribiendo, y la parte almacena ese único valor
en lugar de un valor por gránulo. Como todos los gránulos contienen el mismo número de filas,
no es necesario almacenar un número de filas adicional por gránulo.
La cantidad de memoria que ocupan actualmente estos valores se informa mediante la
métrica TotalIndexGranularityBytesInMemory en system.asynchronous_metrics,
y por parte en system.parts.index_granularity_bytes_in_memory.
La configuración se aplica únicamente a las partes escritas después de modificarla. Use
ALTER TABLE … REWRITE PARTS
para aplicarla a las partes existentes. Las partes Compact siempre usan granularidad adaptativa.