
OPTIMIZE FINAL na maioria dos casos, pois ela inicia
operações que consomem muitos recursos e podem afetar o desempenho do cluster.
OPTIMIZE FINAL vs FINAL
OPTIMIZE FINAL não é o mesmo que FINAL, cujo uso às vezes é necessário
para obter resultados sem duplicatas, como no ReplacingMergeTree. Em geral,
FINAL pode ser usado sem problemas se suas consultas estiverem filtrando as mesmas colunas
da sua chave primária.Por que evitar?
É caro
OPTIMIZE FINAL força o ClickHouse a mesclar todas as partes ativas em uma única parte, mesmo que grandes mesclas já tenham ocorrido. Isso envolve:
- Descomprimir todas as partes
- Mesclar os dados
- Comprimir tudo novamente
- Gravar a parte final em disco ou no armazenamento de objetos
Ignora os limites de segurança
OPTIMIZE FINAL ignora essa proteção, o que significa que:
- Ele pode tentar mesclar várias partes de 150 GB em uma única parte enorme
- Isso pode resultar em tempos de mesclagem longos, pressão de memória ou até mesmo erros de falta de memória
- Essas partes grandes podem se tornar difíceis de mesclar; ou seja, as tentativas de mesclá-las ainda mais falham pelos motivos mencionados acima. Nos casos em que mesclagens são necessárias para o comportamento correto em query time, isso pode resultar em consequências indesejadas, como o acúmulo de duplicatas em uma ReplacingMergeTree, reduzindo o desempenho em query time.