Voici un résumé des différentes façons de supprimer des données dans ClickHouse :
Suppressions légères
SELECT ultérieures. La suppression effective de ces lignes a lieu ensuite lors des cycles naturels de fusion et entraîne donc moins d’E/S. Par conséquent, il est possible que, pendant une période indéterminée, les données ne soient pas réellement supprimées du stockage et soient seulement marquées comme supprimées. Si vous devez garantir la suppression des données, envisagez la commande de mutation ci-dessus.
DELETE légère peut également nuire aux performances des requêtes SELECT. Cette commande n’est pas non plus compatible avec les tables comportant des projections.
Notez qu’une mutation est utilisée lors de l’opération pour marquer les lignes supprimées (en ajoutant une colonne _row_exists), ce qui entraîne des E/S supplémentaires.
En général, les suppressions légères sont à privilégier par rapport aux mutations si la présence des données supprimées sur le disque peut être tolérée (par exemple, dans des contextes sans contrainte de conformité). Cette approche doit toutefois être évitée si toutes les données doivent être supprimées.
Pour en savoir plus sur les suppressions légères.
Mutations de suppression
ALTER TABLE ... DELETE, par exemple.
WHERE. Ce processus n’a aucune atomicité : les parts sont remplacées par des parts mutées dès qu’elles sont prêtes, et une requête SELECT qui commence à s’exécuter pendant une mutation verra à la fois des données issues de parts déjà mutées et des données issues de parts qui ne l’ont pas encore été. Les utilisateurs peuvent suivre l’état d’avancement via la table system.mutations. Ce sont des opérations gourmandes en E/S qui doivent être utilisées avec parcimonie, car elles peuvent affecter les performances des requêtes SELECT sur le cluster.
Pour en savoir plus sur les mutations de suppression.
Tronquer une table
TRUNCATE TABLE ci-dessous. Il s’agit d’une opération légère.