Перейти к основному содержимому
Перейти к основному содержимому

Команды KILL

Существует два типа команд KILL: для завершения запроса и для завершения мутации.

KILL QUERY

Команда пытается принудительно завершить выполняющиеся в данный момент запросы. Запросы для завершения выбираются из таблицы system.processes с использованием критериев, определенных в WHERE клаузе запроса KILL.

Примеры:

Сначала вам нужно получить список незавершённых запросов. Этот SQL-запрос предоставляет их согласно времени выполнения:

Список с одного узла ClickHouse:

Список из кластера ClickHouse:

Завершить запрос:

подсказка

Если вы завершаете запрос в ClickHouse Cloud или в самоуправляемом кластере, обязательно используйте опцию ON CLUSTER [имя-кластера], чтобы гарантировать, что запрос завершится на всех репликах.

Пользователи с правами только для чтения могут останавливать только свои собственные запросы.

По умолчанию используется асинхронная версия запросов (ASYNC), которая не ждёт подтверждения о том, что запросы завершены.

Синхронная версия (SYNC) ждёт завершения всех запросов и отображает информацию о каждом процессе по мере его завершения. Ответ содержит колонку kill_status, которая может принимать следующие значения:

  1. finished – Запрос был успешно завершён.
  2. waiting – Ожидает завершения запроса после отправки ему сигнала на завершение.
  3. Остальные значения объясняют, почему запрос не может быть остановлен.

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