A continuación, se ofrece un resumen de las distintas formas de eliminar datos en ClickHouse:
Eliminaciones ligeras
SELECT posteriores. La eliminación posterior de estas filas se produce durante los ciclos naturales de merge y, por lo tanto, conlleva menos E/S. Como resultado, es posible que, durante un período no especificado, los datos no se eliminen realmente del almacenamiento y solo queden marcados como eliminados. Si necesita garantizar que los datos se eliminen, considere el comando de mutación anterior.
DELETE también puede afectar negativamente al rendimiento de las consultas SELECT. Además, este comando no es compatible con tablas que tengan proyecciones.
Tenga en cuenta que en esta operación se utiliza una mutación para marcar las filas eliminadas (añadiendo una columna _row_exists), lo que genera cierta E/S.
En general, deben preferirse las eliminaciones ligeras frente a las mutaciones si se puede tolerar que los datos eliminados sigan existiendo en disco (por ejemplo, en casos sin requisitos de cumplimiento). Aun así, debe evitarse este enfoque si es necesario eliminar todos los datos.
Obtenga más información sobre las eliminaciones ligeras.
Mutaciones de eliminación
ALTER TABLE ... DELETE, por ejemplo.
WHERE. Este proceso no tiene atomicidad: las partes se sustituyen por partes mutadas en cuanto están listas, y una consulta SELECT que comience a ejecutarse durante una mutación verá datos de partes que ya han sido mutadas junto con datos de partes que aún no han sido mutadas. Los usuarios pueden seguir el progreso mediante la tabla system.mutations. Estas son operaciones intensivas en I/O y deben usarse con moderación, ya que pueden afectar al rendimiento de SELECT en el cluster.
Lea más sobre las mutaciones de eliminación.
Truncar tabla
TRUNCATE TABLE que se muestra a continuación. Esta es una operación ligera.