Операторы KILL
Существуют две разновидности операторов KILL: для завершения запроса и для завершения мутации
KILL QUERY
Пытается принудительно завершить выполняющиеся в данный момент запросы.
Запросы для завершения отбираются из таблицы system.processes по критериям, заданным в WHERE-условии запроса KILL.
Примеры:
Сначала нужно получить список незавершённых запросов. Этот SQL-запрос выводит их, начиная с тех, что выполняются дольше всего:
Список с одного узла ClickHouse:
Список из кластера ClickHouse:
Прервать выполнение запроса:
Если вы завершаете запрос в ClickHouse Cloud или в самостоятельно управляемом кластере, обязательно используйте оператор ON CLUSTER [cluster-name], чтобы гарантировать, что запрос будет остановлен на всех репликах.
Пользователи с правами только на чтение могут останавливать только собственные запросы.
По умолчанию используется асинхронный режим (ASYNC), который не ожидает подтверждения остановки запросов.
Синхронный режим (SYNC) ожидает завершения всех запросов и отображает информацию о каждом процессе по мере его остановки.
Ответ содержит столбец kill_status, который может принимать следующие значения:
finished– запрос был успешно завершён.waiting– ожидание завершения запроса после отправки ему сигнала на завершение.- Другие значения объясняют, почему запрос не может быть остановлен.
Тестовый запрос (TEST) только проверяет права пользователя и отображает список запросов, подлежащих остановке.
ОТМЕНА МУТАЦИИ
Наличие долго выполняющихся или незавершённых мутаций часто указывает на некорректную работу сервиса ClickHouse. Асинхронная природа мутаций может привести к тому, что они будут потреблять все доступные ресурсы системы. Вам может потребоваться либо:
- Приостановить все новые мутации, операции
INSERTиSELECTи дать очереди мутаций полностью выполниться. - Или вручную прервать выполнение некоторых из этих мутаций, отправив команду
KILL.
Пытается отменить и удалить мутации, которые в данный момент выполняются. Мутации для отмены выбираются из таблицы system.mutations с использованием фильтра, заданного в предложении WHERE запроса KILL.
Проверочный запрос (TEST) только проверяет права пользователя и выводит список мутаций для остановки.
Примеры:
Получить count() незавершённых мутаций:
Количество мутаций с одного узла ClickHouse:
Количество мутаций из кластера реплик ClickHouse:
Выполните запрос для получения списка незавершённых мутаций:
Список мутаций на одном узле ClickHouse:
Список мутаций в кластере ClickHouse:
При необходимости остановите мутации:
Этот запрос полезен, когда мутация «застряла» и не может завершиться (например, если какая‑то функция в запросе мутации выбрасывает исключение при применении к данным, содержащимся в таблице).
Изменения, уже выполненные мутацией, не откатываются.
Значение is_killed=1 в столбце (только в ClickHouse Cloud) в таблице system.mutations не обязательно означает, что мутация полностью завершена. Возможна ситуация, когда мутация остаётся в состоянии, где is_killed=1 и is_done=0 в течение продолжительного времени. Это может произойти, если «убитую» мутацию блокирует другая, долго выполняющаяся мутация. Это нормальная ситуация.