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