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

KILL Операторы

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

KILL QUERY

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

Примеры:

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

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

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

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

подсказка

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

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

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