> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Contém uma linha para cada entrada atualmente armazenada no cache de colunas desserializadas. O cache mantém em memória as colunas já lidas e desserializadas das partes de dados `MergeTree`, de modo que leituras repetidas do mesmo intervalo de linhas não tenham que arcar novamente com o custo de descompressão e desserialização.

# system.columns_cache

<h2 id="description">
  Descrição
</h2>

Contém uma linha para cada entrada atualmente armazenada no cache de colunas desserializadas. O cache mantém em memória colunas já lidas e desserializadas de partes de dados `MergeTree`, de modo que leituras repetidas do mesmo intervalo de linhas não precisem arcar novamente com o custo de descompressão e desserialização.

Cada entrada corresponde a um intervalo contíguo de grânulos `[row_begin, row_end)` de uma única coluna de uma única parte de dados, dentro de um stripe fixo da parte com cerca de 65536 linhas. As leituras são atendidas pelo cache grânulo a grânulo, e os stripes são os mesmos em todas as leituras da parte; assim, as entradas não dependem de como uma consulta divide a parte em intervalos de marcas: uma leitura que acessa apenas alguns grânulos de um stripe armazena somente esses grânulos em cache, e intervalos adjacentes gravados por leituras diferentes são mesclados.

O cache identifica as entradas pelo UUID da tabela; por isso, ele só fica ativo para tabelas em bancos de dados que atribuem UUIDs, como `Atomic`, `Replicated` e `Shared` (o motor de banco de dados padrão no ClickHouse Cloud). Tabelas em bancos de dados legados `Ordinary` não têm UUID e são excluídas do cache sem nenhum aviso. Somente partes wide participam do cache; partes compactas são excluídas sem nenhum aviso.

O cache é controlado pelas configurações de servidor `columns_cache_size` (por padrão, a fração `columns_cache_size_to_ram_ratio` da memória disponível para o servidor) e `columns_cache_size_ratio`, e pelas configurações em nível de consulta `use_columns_cache`, `enable_reads_from_columns_cache`, `enable_writes_to_columns_cache`, `columns_cache_max_estimated_bytes_to_write_to_cache` e `columns_cache_max_bytes_to_write_to_cache`. Ele pode ser descartado manualmente com [`SYSTEM DROP COLUMNS CACHE`](/pt-BR/reference/statements/system).

As linhas são filtradas por direitos de acesso: uma entrada só é visível para um usuário que possa ver tanto a tabela quanto a coluna correspondentes, ou seja, que tenha `SHOW TABLES` na tabela e `SHOW COLUMNS` na coluna. Conceder `SHOW COLUMNS` em `*.*` não anula uma revogação aplicada a uma tabela ou coluna específica, pois esta tabela expõe dados operacionais (nomes de partes, intervalos de linhas e tamanhos em cache), e não apenas o esquema. Entradas de uma tabela que não existe mais não têm um nome a ser verificado; por isso, só ficam visíveis para usuários que tenham `SHOW COLUMNS` globalmente.

<h2 id="columns">
  Colunas
</h2>

* `database` ([String](/pt-BR/reference/data-types/string)) — Nome do banco de dados da tabela à qual a parte pertence.
* `table` ([String](/pt-BR/reference/data-types/string)) — Nome da tabela.
* `table_uuid` ([UUID](/pt-BR/reference/data-types/uuid)) — UUID da tabela. Permanece o mesmo mesmo após renomeações.
* `part` ([String](/pt-BR/reference/data-types/string)) — Nome da parte de dados.
* `column` ([String](/pt-BR/reference/data-types/string)) — Nome da coluna.
* `row_begin` ([UInt64](/pt-BR/reference/data-types/int-uint)) — Índice da linha inicial do intervalo em cache (inclusivo).
* `row_end` ([UInt64](/pt-BR/reference/data-types/int-uint)) — Índice da linha final do intervalo em cache (exclusivo).
* `rows` ([UInt64](/pt-BR/reference/data-types/int-uint)) — Número de linhas no intervalo em cache (`row_end - row_begin`).
* `bytes` ([UInt64](/pt-BR/reference/data-types/int-uint)) — Memória retida pela entrada, em bytes: o tamanho alocado da coluna em cache mais uma pequena sobrecarga por entrada. É essa a quantidade usada como limite do cache, de modo que a soma desta coluna em todas as entradas não ultrapassa `columns_cache_size`. Pode ser maior que o tamanho lógico das linhas, pois uma coluna mantém a capacidade com que foi alocada.

<h2 id="examples">
  Exemplos
</h2>

Memória total consumida pelas colunas em cache, por tabela:

```sql theme={null}
SELECT
    database,
    table,
    formatReadableSize(sum(bytes)) AS size,
    sum(rows) AS rows,
    count() AS entries
FROM system.columns_cache
GROUP BY database, table
ORDER BY sum(bytes) DESC
```

Maiores entradas individuais do cache:

```sql theme={null}
SELECT database, table, part, column, row_begin, row_end, rows, formatReadableSize(bytes) AS size
FROM system.columns_cache
ORDER BY bytes DESC
LIMIT 10
```

<h2 id="see-also">
  Veja também
</h2>

* [SYSTEM DROP COLUMNS CACHE](/pt-BR/reference/statements/system) — Instrução que remove todas as entradas do cache de colunas.
