
OPTIMIZE FINAL en la mayoría de los casos, ya que inicia
operaciones que consumen muchos recursos y pueden afectar al rendimiento del clúster.
OPTIMIZE FINAL vs FINAL
OPTIMIZE FINAL no es lo mismo que FINAL, cuyo uso a veces es necesario
para obtener resultados sin duplicados, como ocurre con ReplacingMergeTree. En general,
se puede usar FINAL si tus consultas filtran por las mismas columnas que las
de tu clave primaria.¿Por qué evitarlo?
Es costoso
OPTIMIZE FINAL obliga a ClickHouse a fusionar todas las partes activas en una sola parte, incluso si ya se han realizado fusiones de gran tamaño. Esto implica:
- Descomprimir todas las partes
- Fusionar los datos
- Comprimirlos de nuevo
- Escribir la parte final en disco o en almacenamiento de objetos
Ignora los límites de seguridad
OPTIMIZE FINAL ignora esta salvaguarda, lo que significa que:
- Puede intentar fusionar varias partes de 150 GB en una sola parte enorme
- Esto puede provocar tiempos de fusión prolongados, presión de memoria o incluso errores por falta de memoria
- Estas partes grandes pueden volverse difíciles de fusionar; es decir, los intentos de seguir fusionándolas pueden fallar por las razones indicadas anteriormente. En los casos en que las fusiones son necesarias para que el comportamiento en query time sea correcto, esto puede tener consecuencias no deseadas, como la acumulación de duplicados en un ReplacingMergeTree, lo que reduce el rendimiento en query time.