Команды 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 в течение длительного времени. Это может произойти, если другая длительно выполняющаяся мутация блокирует убитую мутацию. Это нормальная ситуация.