> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Aperçu de la suppression

> Comment supprimer des données dans ClickHouse

Il existe plusieurs façons de supprimer des données dans ClickHouse, chacune avec ses avantages et ses caractéristiques en termes de performances. Vous devez choisir la méthode appropriée en fonction de votre modèle de données et du volume de données à supprimer.

| Méthode                                                                                    | Syntaxe                      | Quand l'utiliser                                                                                                                                                                                                                                 |
| ------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [Suppression légère](/docs/fr/concepts/features/operations/delete/lightweight-delete)           | `DELETE FROM [table]`        | À utiliser pour supprimer de petites quantités de données. Les lignes sont immédiatement exclues de toutes les requêtes SELECT suivantes, mais elles sont d'abord uniquement marquées en interne comme supprimées, sans être retirées du disque. |
| [Mutation de suppression](/docs/fr/reference/statements/alter/delete)                           | `ALTER TABLE [table] DELETE` | À utiliser lorsque les données doivent être supprimées du disque immédiatement (par exemple pour des raisons de conformité). Cela affecte négativement les performances de SELECT.                                                               |
| [Tronquer une table](/docs/fr/reference/statements/truncate)                                    | `TRUNCATE TABLE [db.table]`  | Supprime efficacement toutes les données d'une table.                                                                                                                                                                                            |
| [Suppression d’une partition](/docs/fr/reference/statements/alter/partition#drop-partitionpart) | `DROP PARTITION`             | Supprime efficacement toutes les données d'une partition.                                                                                                                                                                                        |

Voici un résumé des différentes façons de supprimer des données dans ClickHouse :

<div id="lightweight-deletes">
  ## Suppressions légères
</div>

Les suppressions légères marquent immédiatement les lignes comme supprimées, ce qui permet de les filtrer automatiquement de toutes les requêtes `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.

```sql theme={null}
-- delete all data from 2018 with a lightweight delete. Not recommended.
DELETE FROM posts WHERE toYear(CreationDate) = 2018
```

La suppression de grands volumes de données avec l’instruction `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](/docs/fr/reference/statements/delete#how-lightweight-deletes-work-internally-in-clickhouse) (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](/docs/fr/concepts/features/operations/delete/lightweight-delete).

<div id="delete-mutations">
  ## Mutations de suppression
</div>

Les mutations de suppression peuvent être déclenchées à l’aide de la commande `ALTER TABLE ... DELETE`, par exemple.

```sql theme={null}
-- delete all data from 2018 with a mutation. Not recommended.
ALTER TABLE posts DELETE WHERE toYear(CreationDate) = 2018
```

Ces opérations peuvent être exécutées soit de manière synchrone (par défaut si elles sont non répliquées), soit de manière asynchrone (selon le paramètre [mutations\_sync](/docs/fr/reference/settings/session-settings#mutations_sync)). Elles sont extrêmement gourmandes en E/S, car elles réécrivent toutes les parts correspondant à l'expression `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](/docs/fr/reference/system-tables/mutations#monitoring-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](/docs/fr/reference/statements/alter/delete).

<div id="truncate-table">
  ## Tronquer une table
</div>

Si vous devez supprimer toutes les données d’une table, utilisez la commande `TRUNCATE TABLE` ci-dessous. Il s’agit d’une opération légère.

```sql theme={null}
TRUNCATE TABLE posts
```

Pour en savoir plus sur [TRUNCATE TABLE](/docs/fr/reference/statements/truncate).

<div id="drop-partition">
  ## Suppression d’une partition
</div>

Si vous avez défini une clé de partitionnement personnalisée pour vos données, les partitions peuvent être supprimées efficacement. Évitez le partitionnement à forte cardinalité.

```sql theme={null}
ALTER TABLE posts (DROP PARTITION '2008')
```

En savoir plus sur [DROP PARTITION](/docs/fr/reference/statements/alter/partition).

<div id="more-resources">
  ## Autres ressources
</div>

* [Gestion des mises à jour et des suppressions dans ClickHouse](https://clickhouse.com/blog/handling-updates-and-deletes-in-clickhouse)
