Команды KILL
Существует два типа команд KILL: одна для завершения запроса и другая для завершения мутации.
KILL QUERY
Пробует принудительно завершить в настоящее время выполняющиеся запросы. Запросы для завершения выбираются из таблицы system.processes, используя критерии, определенные в WHERE
условии команды KILL
.
Примеры:
Сначала вам нужно получить список незавершенных запросов. Этот SQL-запрос предоставляет их в зависимости от времени выполнения:
Список из одной узла ClickHouse:
Список из кластера ClickHouse:
Завершите запрос:
Если вы завершаете запрос в ClickHouse Cloud или в самоуправляемом кластере, обязательно используйте опцию ON CLUSTER [имя-кластера]
, чтобы гарантировать завершение запроса на всехReplica.
Пользователи с правами только на чтение могут останавливать только свои собственные запросы.
По умолчанию используется асинхронная версия запросов (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
в течение длительного времени. Это может произойти, если другая долгосрочная мутация блокирует завершенную мутацию. Это нормальная ситуация.