Skip to main content
Essas configurações estão disponíveis em system.settings e são geradas automaticamente a partir do código-fonte.

columns_cache_max_bytes_to_write_to_cache

Limiar flexível por consulta para os bytes que uma única consulta grava no cache de colunas. Os bytes gravados durante a consulta são contabilizados e, quando o contador atinge esse valor, as gravações subsequentes no cache são ignoradas pelo restante da consulta. Trata-se de um limiar indicativo, e não de um limite rígido: um leitor acumula as entradas dos grânulos que leu e as grava no cache em um único lote, e o lote que ultrapassa o limiar é armazenado integralmente antes de ser contabilizado no contador. Assim, a quantidade efetivamente gravada pode exceder esse valor em até o volume de entradas que um leitor acumula entre duas gravações — as colunas que ele lê, com uma entrada por faixa de cerca de 65536 linhas — e, com vários leitores em execução simultânea, nessa mesma proporção por leitor. O objetivo é evitar que uma única varredura grande expulse dados úteis do cache, e não limitar o uso do cache com exatidão. Um valor 0 significa usar metade do limite de tamanho atual do cache de colunas: o columns_cache_size configurado, ou menos enquanto o cache estiver redimensionado sob pressão de memória (consulte a métrica ColumnsCacheSizeLimit).

columns_cache_max_estimated_bytes_to_write_to_cache

Se o tamanho estimado dos dados que uma consulta lê das partes MergeTree exceder esse valor, as gravações no cache de colunas são bloqueadas para a consulta inteira. A estimativa é feita em bytes não comprimidos, que é a unidade contabilizada pelo cache, com base no tamanho das colunas que a consulta lê (incluindo colunas de PREWHERE, de mutação e de partes de patch), proporcional aos intervalos de marcas selecionados, e a consulta é cobrada por todo esse volume antes de ler qualquer dado. Isso evita que uma única varredura grande expulse dados úteis do cache e que copie para o cache dados que não conseguiriam permanecer nele. Um valor 0 significa usar metade do limite de tamanho atual do cache de colunas. Esse limite é o columns_cache_size configurado enquanto o servidor tem memória de sobra, mas o cache diminui sob pressão de memória (veja a métrica ColumnsCacheSizeLimit), e o orçamento padrão diminui junto. Com o columns_cache_size_ratio padrão, metade do limite corresponde ao tamanho do segmento probatório do cache, de modo que os dados de uma consulta que passa por esse controle podem ser armazenados integralmente em cache em uma única passagem. O controle não se aplica a uma leitura que descarta intervalos de marcas durante a execução, o que ocorre quando use_indexes_refiner_in_read_pools está habilitado: quantas das marcas selecionadas essa leitura realmente acessa só é definido no momento em que cada tarefa é dividida, de modo que a estimativa acima seria um limite superior que contabilizaria marcas que a consulta nunca lê. Nessas leituras, a quantidade gravada é limitada por columns_cache_max_bytes_to_write_to_cache.