> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по KILL

# Операторы KILL

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

<div id="kill-query">
  ## KILL QUERY
</div>

```sql theme={null}
KILL QUERY [ON CLUSTER cluster]
  WHERE <where expression to SELECT FROM system.processes query>
  [SYNC|ASYNC|TEST]
  [FORMAT format]
```

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

Примеры:

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

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

```sql theme={null}
SELECT
  initial_query_id,
  query_id,
  formatReadableTimeDelta(elapsed) AS time_delta,
  query,
  *
  FROM system.processes
  WHERE query ILIKE 'SELECT%'
  ORDER BY time_delta DESC;
```

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

```sql theme={null}
SELECT
  initial_query_id,
  query_id,
  formatReadableTimeDelta(elapsed) AS time_delta,
  query,
  *
  FROM clusterAllReplicas(default, system.processes)
  WHERE query ILIKE 'SELECT%'
  ORDER BY time_delta DESC;
```

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

```sql theme={null}
-- Принудительно завершает все запросы с указанным query_id:
KILL QUERY WHERE query_id='2-857d-4a57-9ee0-327da5d60a90'

-- Синхронно завершает все запросы, запущенные пользователем 'username':
KILL QUERY WHERE user='username' SYNC
```

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

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

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

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

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

Тестовый запрос (`TEST`) только проверяет права пользователя и показывает список запросов для остановки.

<div id="kill-mutation">
  ## KILL MUTATION
</div>

Наличие долго выполняющихся или незавершённых мутаций часто указывает на то, что сервис ClickHouse работает некорректно. Асинхронная природа мутаций может приводить к тому, что они потребляют все доступные ресурсы системы. Вам может потребоваться:

* Приостановить все новые мутации, `INSERT`ы и `SELECT`ы и дождаться обработки очереди мутаций.
* Или вручную завершить некоторые из этих мутаций, отправив команду `KILL`.

```sql theme={null}
KILL MUTATION
  WHERE <where expression to SELECT FROM system.mutations query>
  [TEST]
  [FORMAT format]
```

Пытается отменить и удалить [мутации](/ru/reference/statements/alter/index#mutations), которые выполняются в данный момент. Мутации для отмены выбираются из таблицы [`system.mutations`](/ru/reference/system-tables/mutations) с помощью фильтра, заданного в условии `WHERE` запроса `KILL`.

Тестовый запрос (`TEST`) лишь проверяет права пользователя и выводит список мутаций, которые будут остановлены.

Примеры:

Получить `count()` незавершённых мутаций:

Количество мутаций на отдельном узле ClickHouse:

```sql theme={null}
SELECT count(*)
FROM system.mutations
WHERE is_done = 0;
```

Количество мутаций в кластере реплик ClickHouse:

```sql theme={null}
SELECT count(*)
FROM clusterAllReplicas('default', system.mutations)
WHERE is_done = 0;
```

Запросите список незавершённых мутаций:

Список мутаций на одном узле ClickHouse:

```sql theme={null}
SELECT mutation_id, *
FROM system.mutations
WHERE is_done = 0;
```

Список мутаций в кластере ClickHouse:

```sql theme={null}
SELECT mutation_id, *
FROM clusterAllReplicas('default', system.mutations)
WHERE is_done = 0;
```

При необходимости завершите мутации:

```sql theme={null}
-- Cancel and remove all mutations of the single table:
KILL MUTATION WHERE database = 'default' AND table = 'table'

-- Cancel the specific mutation:
KILL MUTATION WHERE database = 'default' AND table = 'table' AND mutation_id = 'mutation_3.txt'
```

Запрос полезен, когда мутация зависла и не может завершиться (например, если какая-либо функция в запросе мутации генерирует исключение при применении к данным, содержащимся в таблице).

Изменения, уже внесённые мутацией, не откатываются.

<Note>
  столбец `is_killed=1` (Только в ClickHouse Cloud) в таблице [system.mutations](/ru/reference/system-tables/mutations) не обязательно означает, что мутация полностью завершена. В некоторых случаях мутация может долго оставаться в состоянии, когда `is_killed=1`, а `is_done=0`. Это может происходить, если другая долго выполняющаяся мутация блокирует завершённую мутацию. Это нормальная ситуация.
</Note>
