KILL Операторы
Существует два типа операторов KILL: для завершения запроса и для завершения мутации
KILL QUERY
Оператор пытается принудительно завершить выполняющиеся запросы.
Запросы для завершения выбираются из таблицы system.processes с использованием критериев, определенных в предложении WHERE
оператора KILL
.
Примеры:
Сначала вам нужно получить список незавершенных запросов. Этот SQL-запрос предоставляет их в зависимости от времени выполнения:
Список с одного узла ClickHouse:
Список из кластера ClickHouse:
Завершение запроса:
Если вы завершаете запрос в ClickHouse Cloud или в самоуправляемом кластере, обязательно используйте опцию ON CLUSTER [cluster-name]
, чтобы убедиться, что запрос завершен на всех репликах.
Пользователи с правами только для чтения могут останавливать только свои собственные запросы.
По умолчанию используется асинхронная версия запросов (ASYNC
), которая не ждет подтверждения о том, что запросы остановлены.
Синхронная версия (SYNC
) ожидает завершения всех запросов и отображает информацию о каждом процессе в момент его остановки.
В ответе содержится колонка kill_status
, которая может принимать следующие значения:
finished
– Запрос был успешно завершен.waiting
– Ожидание завершения запроса после отправки ему сигнала для завершения.- Другие значения объясняют, почему запрос не может быть остановлен.
Тестовый запрос (TEST
) просто проверяет права пользователя и отображает список запросов для остановки.
KILL MUTATION
Наличие долгосрочных или незавершенных мутаций часто указывает на то, что служба 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
в течение продолжительного времени. Это может произойти, если другая долгосрочная мутация блокирует завершенную мутацию. Это нормальная ситуация.