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

Команды KILL

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

KILL QUERY

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

Примеры:

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

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

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

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

подсказка

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

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

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