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