> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation de l’instruction KILL

# Instructions KILL

Il existe deux types d’instructions KILL : l’une pour interrompre une requête et l’autre pour arrêter une mutation

<div id="kill-query">
  ## KILL QUERY
</div>

```sql theme={null}
KILL QUERY [ON CLUSTER cluster]
  WHERE <where expression to SELECT FROM system.processes query>
  [SYNC|ASYNC|TEST]
  [FORMAT format]
```

Tente de terminer de force les requêtes en cours d'exécution.
Les requêtes à arrêter sont sélectionnées dans la table system.processes à l'aide des critères définis dans la clause `WHERE` de la requête `KILL`.

Exemples :

Tout d'abord, vous devez obtenir la liste des requêtes inachevées. Cette requête SQL les renvoie en les classant selon leur durée d'exécution :

Liste à partir d'un seul nœud ClickHouse :

```sql theme={null}
SELECT
  initial_query_id,
  query_id,
  formatReadableTimeDelta(elapsed) AS time_delta,
  query,
  *
  FROM system.processes
  WHERE query ILIKE 'SELECT%'
  ORDER BY time_delta DESC;
```

Lister à partir d’un cluster ClickHouse :

```sql theme={null}
SELECT
  initial_query_id,
  query_id,
  formatReadableTimeDelta(elapsed) AS time_delta,
  query,
  *
  FROM clusterAllReplicas(default, system.processes)
  WHERE query ILIKE 'SELECT%'
  ORDER BY time_delta DESC;
```

Interrompez la requête :

```sql theme={null}
-- Forcibly terminates all queries with the specified query_id:
KILL QUERY WHERE query_id='2-857d-4a57-9ee0-327da5d60a90'

-- Synchronously terminates all queries run by 'username':
KILL QUERY WHERE user='username' SYNC
```

<Tip>
  Si vous interrompez une requête dans ClickHouse Cloud ou dans un cluster autogéré, veillez à utiliser l’option `ON CLUSTER [cluster-name]` afin de garantir que la requête est interrompue sur toutes les répliques
</Tip>

Les utilisateurs en lecture seule ne peuvent arrêter que leurs propres requêtes.

Par défaut, la version asynchrone des requêtes (`ASYNC`) est utilisée et n’attend pas la confirmation de leur arrêt.

La version synchrone (`SYNC`) attend l’arrêt de toutes les requêtes et affiche des informations sur chaque processus à mesure qu’il s’arrête.
La réponse contient la colonne `kill_status`, qui peut prendre les valeurs suivantes :

1. `finished` – La requête a été interrompue avec succès.
2. `waiting` – En attente de la fin de la requête après l’envoi d’un signal d’arrêt.
3. Les autres valeurs expliquent pourquoi la requête ne peut pas être arrêtée.

Une requête de test (`TEST`) vérifie uniquement les droits de l’utilisateur et affiche la liste des requêtes à arrêter.

<div id="kill-mutation">
  ## KILL MUTATION
</div>

La présence de mutations longues ou de mutations incomplètes indique souvent qu’un service ClickHouse fonctionne mal. La nature asynchrone des mutations peut les amener à consommer toutes les ressources disponibles du système. Vous devrez peut-être soit :

* Suspendre toutes les nouvelles mutations, les `INSERT` et les `SELECT`, puis laisser la file d’attente des mutations se résorber.
* Ou interrompre manuellement certaines de ces mutations en envoyant une commande `KILL`.

```sql theme={null}
KILL MUTATION
  WHERE <where expression to SELECT FROM system.mutations query>
  [TEST]
  [FORMAT format]
```

Tente d’annuler et de supprimer les [mutations](/fr/reference/statements/alter/index#mutations) en cours d’exécution. Les mutations à annuler sont sélectionnées dans la table [`system.mutations`](/fr/reference/system-tables/mutations) à l’aide du filtre spécifié par la clause `WHERE` de la requête `KILL`.

Une requête de test (`TEST`) vérifie uniquement les droits de l’utilisateur et affiche la liste des mutations à arrêter.

Exemples :

Obtenir le `count()` du nombre de mutations incomplètes :

Nombre de mutations sur un seul nœud ClickHouse :

```sql theme={null}
SELECT count(*)
FROM system.mutations
WHERE is_done = 0;
```

Nombre de mutations d’un cluster de répliques ClickHouse :

```sql theme={null}
SELECT count(*)
FROM clusterAllReplicas('default', system.mutations)
WHERE is_done = 0;
```

Consultez la liste des mutations incomplètes :

Liste des mutations pour un seul nœud ClickHouse :

```sql theme={null}
SELECT mutation_id, *
FROM system.mutations
WHERE is_done = 0;
```

Liste des mutations d’un cluster ClickHouse :

```sql theme={null}
SELECT mutation_id, *
FROM clusterAllReplicas('default', system.mutations)
WHERE is_done = 0;
```

Interrompez les mutations au besoin :

```sql theme={null}
-- Cancel and remove all mutations of the single table:
KILL MUTATION WHERE database = 'default' AND table = 'table'

-- Cancel the specific mutation:
KILL MUTATION WHERE database = 'default' AND table = 'table' AND mutation_id = 'mutation_3.txt'
```

La requête est utile lorsqu'une mutation est bloquée et ne peut pas aboutir (par ex. si une fonction de la requête de mutation génère une exception lorsqu'elle est appliquée aux données contenues dans la table).

Les modifications déjà effectuées par la mutation ne sont pas annulées.

<Note>
  La colonne `is_killed=1` (ClickHouse Cloud uniquement) dans la table [system.mutations](/fr/reference/system-tables/mutations) ne signifie pas nécessairement que la mutation est complètement terminée. Il est possible qu'une mutation reste pendant une longue période dans un état où `is_killed=1` et `is_done=0`. Cela peut se produire si une autre mutation de longue durée bloque la mutation interrompue. Il s'agit d'une situation normale.
</Note>
