Существует два вида операторов KILL: для завершения запроса и для завершения мутации
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, который может принимать следующие значения:
finished – Запрос был успешно завершён.
waiting – Ожидание завершения запроса после отправки ему сигнала на завершение.
- Другие значения объясняют, почему запрос не удаётся остановить.
Тестовый запрос (TEST) только проверяет права пользователя и показывает список запросов для остановки.
Наличие долго выполняющихся или незавершённых мутаций часто указывает на то, что сервис 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 г.