- Índice primário esparso - Ordena os dados em disco por uma chave escolhida, permitindo que o ClickHouse ignore grandes intervalos de linhas irrelevantes durante as consultas.
- Tipos de dados avançados - Suporte nativo a tipos como JSON, LowCardinality e Enum, possibilitando armazenamento mais compacto e processamento mais rápido.
- Índices de omissão e índices de texto completo - Estruturas de índice secundário que permitem ao ClickHouse ignorar grânulos que não correspondem aos predicados de filtro de uma consulta, sendo particularmente eficazes para cargas de trabalho de busca textual.
- Inserções rápidas com compactação automática - O ClickHouse foi projetado para inserções de alta vazão e mescla automaticamente partes de dados em segundo plano, de forma análoga à compactação em formatos de tabela abertos.
- Otimizado para leituras concorrentes - O layout de armazenamento colunar do MergeTree, combinado com múltiplas camadas de cache, oferece suporte a cargas de trabalho analíticas em tempo real com alta concorrência — algo para o qual formatos de tabela abertos não foram projetados.
INSERT INTO SELECT para análises mais rápidas.
Conectar-se ao catálogo
Liste as tabelas
Explore o esquema
Consulta na tabela do lago de dados
logger_name podem ter cardinalidade alta demais para particionar de forma eficaz. Também não temos índices, como índices de texto, para restringir ainda mais os dados lidos. É aqui que o MergeTree se destaca.
Carregue dados no MergeTree
Crie uma tabela otimizada
- Sem os wrappers
Nullable- removerNullablemelhora a eficiência de armazenamento e o desempenho das consultas. LowCardinality(String)nas colunaslevel,instance_type,thread_nameecheck_name- codifica colunas com poucos valores distintos usando dicionário, para melhor compressão e filtragem mais rápida.- Um índice de texto completo na coluna
message- acelera pesquisas de texto baseadas em tokens, comohasToken(message, 'error'). - Uma chave
ORDER BYde(instance_type, thread_name, toStartOfMinute(event_time))- alinha os dados em disco com padrões de filtro comuns para que o índice primário esparso possa ignorar grânulos irrelevantes.
Inserir dados do catálogo
INSERT INTO SELECT para carregar os ~300m da tabela no lago de dados para nossa tabela no ClickHouse:
Execute a consulta novamente
- Índice primário esparso — A chave
ORDER BY (instance_type, thread_name, ...)permite que o ClickHouse vá direto aos grânulos que correspondem ainstance_type = 'm6i.4xlarge'ethread_name = 'TCPHandler', reduzindo as linhas processadas de 283 milhões para apenas 14 milhões. - Índice de texto completo — O índice
text_idxna colunamessagepermite quehasToken(message, 'error')seja resolvido pelo índice, em vez de percorrer cada string de mensagem, reduzindo ainda mais a quantidade de dados que o ClickHouse precisa ler.