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

KILL QUERY

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 :
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 :
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 :
-- 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
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
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.

KILL MUTATION

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.
KILL MUTATION
  WHERE <where expression to SELECT FROM system.mutations query>
  [TEST]
  [FORMAT format]
Tente d’annuler et de supprimer les mutations en cours d’exécution. Les mutations à annuler sont sélectionnées dans la table system.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 :
SELECT count(*)
FROM system.mutations
WHERE is_done = 0;
Nombre de mutations d’un cluster de répliques ClickHouse :
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 :
SELECT mutation_id, *
FROM system.mutations
WHERE is_done = 0;
Liste des mutations d’un cluster ClickHouse :
SELECT mutation_id, *
FROM clusterAllReplicas('default', system.mutations)
WHERE is_done = 0;
Interrompez les mutations au besoin :
-- 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.
La colonne is_killed=1 (ClickHouse Cloud uniquement) dans la table system.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.
Dernière modification le 25 juin 2026