Descrição
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 dadosMergeTree, 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.
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.
Colunas
database(String) — Nome do banco de dados da tabela à qual a parte pertence.table(String) — Nome da tabela.table_uuid(UUID) — UUID da tabela. Permanece o mesmo mesmo após renomeações.part(String) — Nome da parte de dados.column(String) — Nome da coluna.row_begin(UInt64) — Índice da linha inicial do intervalo em cache (inclusivo).row_end(UInt64) — Índice da linha final do intervalo em cache (exclusivo).rows(UInt64) — Número de linhas no intervalo em cache (row_end - row_begin).bytes(UInt64) — 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 ultrapassacolumns_cache_size. Pode ser maior que o tamanho lógico das linhas, pois uma coluna mantém a capacidade com que foi alocada.
Exemplos
Memória total consumida pelas colunas em cache, por tabela:Veja também
- SYSTEM DROP COLUMNS CACHE — Instrução que remove todas as entradas do cache de colunas.