Перейти к основному содержанию
Существует два вида операторов KILL: для завершения запроса и для завершения мутации

KILL QUERY

KILL QUERY [ON CLUSTER cluster]
  WHERE <where expression to SELECT FROM system.processes query>
  [SYNC|ASYNC|TEST]
  [FORMAT format]
Попытка принудительно завершить выполняющиеся в данный момент запросы. Запросы для завершения выбираются из таблицы system.processes по критериям, заданным в условии WHERE запроса KILL. Примеры: Сначала нужно получить список незавершённых запросов. Этот SQL-запрос выводит их, начиная с тех, которые выполняются дольше всего: Список с одного узла 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;
Список в кластере 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;
Завершите запрос:
-- Принудительно завершает все запросы с указанным query_id:
KILL QUERY WHERE query_id='2-857d-4a57-9ee0-327da5d60a90'

-- Синхронно завершает все запросы, запущенные пользователем 'username':
KILL QUERY WHERE user='username' SYNC
Если вы завершаете запрос в ClickHouse Cloud или в самоуправляемом кластере, обязательно используйте предложение ON CLUSTER [cluster-name], чтобы запрос был завершён на всех репликах.
Пользователи в режиме только для чтения могут останавливать только собственные запросы. По умолчанию используется асинхронная версия запросов (ASYNC), которая не ждёт подтверждения остановки запросов. Синхронная версия (SYNC) ждёт остановки всех запросов и показывает информацию о каждом процессе по мере его остановки. Ответ содержит столбец kill_status, который может принимать следующие значения:
  1. finished – Запрос был успешно завершён.
  2. waiting – Ожидание завершения запроса после отправки ему сигнала на завершение.
  3. Другие значения объясняют, почему запрос не удаётся остановить.
Тестовый запрос (TEST) только проверяет права пользователя и показывает список запросов для остановки.

KILL MUTATION

Наличие долго выполняющихся или незавершённых мутаций часто указывает на то, что сервис ClickHouse работает некорректно. Асинхронная природа мутаций может приводить к тому, что они потребляют все доступные ресурсы системы. Вам может потребоваться:
  • Приостановить все новые мутации, INSERTы и SELECTы и дождаться обработки очереди мутаций.
  • Или вручную завершить некоторые из этих мутаций, отправив команду KILL.
KILL MUTATION
  WHERE <where expression to SELECT FROM system.mutations query>
  [TEST]
  [FORMAT format]
Пытается отменить и удалить мутации, которые выполняются в данный момент. Мутации для отмены выбираются из таблицы system.mutations с помощью фильтра, заданного в условии WHERE запроса KILL. Тестовый запрос (TEST) лишь проверяет права пользователя и выводит список мутаций, которые будут остановлены. Примеры: Получить count() незавершённых мутаций: Количество мутаций на отдельном узле ClickHouse:
SELECT count(*)
FROM system.mutations
WHERE is_done = 0;
Количество мутаций в кластере реплик ClickHouse:
SELECT count(*)
FROM clusterAllReplicas('default', system.mutations)
WHERE is_done = 0;
Запросите список незавершённых мутаций: Список мутаций на одном узле ClickHouse:
SELECT mutation_id, *
FROM system.mutations
WHERE is_done = 0;
Список мутаций в кластере ClickHouse:
SELECT mutation_id, *
FROM clusterAllReplicas('default', system.mutations)
WHERE is_done = 0;
При необходимости завершите мутации:
-- Отменить и удалить все мутации указанной таблицы:
KILL MUTATION WHERE database = 'default' AND table = 'table'

-- Отменить конкретную мутацию:
KILL MUTATION WHERE database = 'default' AND table = 'table' AND mutation_id = 'mutation_3.txt'
Запрос полезен, когда мутация зависла и не может завершиться (например, если какая-либо функция в запросе мутации генерирует исключение при применении к данным, содержащимся в таблице). Изменения, уже внесённые мутацией, не откатываются.
столбец is_killed=1 (Только в ClickHouse Cloud) в таблице system.mutations не обязательно означает, что мутация полностью завершена. В некоторых случаях мутация может долго оставаться в состоянии, когда is_killed=1, а is_done=0. Это может происходить, если другая долго выполняющаяся мутация блокирует завершённую мутацию. Это нормальная ситуация.
Последнее изменение 10 июня 2026 г.