Este guia faz parte de uma coletânea de aprendizados obtidos em encontros da comunidade. Para ver mais soluções e insights do mundo real, você pode explorar por problema específico. Partes demais sobrecarregando seu banco de dados? Confira o guia de insights da comunidade sobre Too Many Parts. Saiba mais sobre visões materializadas.
O antipadrão de armazenamento 10x
Problema real de produção: "Tínhamos uma visão materializada. A tabela bruta de logs tinha cerca de 20 GB, mas a visão materializada dessa tabela de logs explodiu para 190 GB — quase 10x o tamanho da tabela bruta. Isso aconteceu porque estávamos criando uma linha por atributo, e cada log pode ter 10 atributos."
Regra: Se o seu GROUP BY cria mais linhas do que elimina, você está criando um índice caro, não uma visão materializada.
Validação da saúde de visões materializadas em produção
Esta consulta ajuda você a prever se uma visão materializada vai comprimir seus dados ou fazê-los explodir antes de criá-la. Execute-a na sua tabela e nas colunas reais para evitar o cenário da "explosão de 190GB".
O que ela mostra:
- Baixa taxa de agregação (<10%) = Boa MV, compressão significativa
- Alta taxa de agregação (>70%) = MV ruim, risco de explosão no armazenamento
- Multiplicador de armazenamento = Quanto maior ou menor sua MV ficará
-- Substitua pela sua tabela e colunas reais
SELECT
count() as total_rows,
uniq(your_group_by_columns) as unique_combinations,
round(uniq(your_group_by_columns) / count() * 100, 2) as aggregation_ratio
FROM your_table
WHERE your_filter_conditions;
-- Se aggregation_ratio > 70%, reconsidere o design da sua MV
-- Se aggregation_ratio < 10%, você terá boa compressãoQuando visões materializadas se tornam um problema
Sinais de alerta para acompanhar:
- A latência de inserção aumenta (consultas que levavam 10 ms agora levam 100 ms+)
- Erros de "Too many parts" aparecendo com mais frequência
- Picos de CPU durante operações de inserção
- Timeouts de inserção que antes não aconteciam
Você pode comparar o desempenho das inserções antes e depois de adicionar MVs usando system.query_log para acompanhar tendências na duração das consultas.
Fontes em vídeo
- ClickHouse na CommonRoom - Kirill Sapchuk - Fonte do estudo de caso sobre o “entusiasmo excessivo com visões materializadas” e a “explosão de 20 GB→190 GB”