> ## 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.

> Documentação sobre KILL

# Instruções KILL

Existem dois tipos de instruções KILL: para encerrar uma consulta e uma mutação

<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]
```

Tenta encerrar à força as consultas que estão em execução no momento.
As consultas a serem encerradas são selecionadas na tabela system.processes usando os critérios definidos na cláusula `WHERE` da consulta `KILL`.

Exemplos:

Primeiro, você precisará obter a lista de consultas incompletas. Esta consulta SQL as retorna em ordem das que estão em execução há mais tempo:

Lista de um único nó do 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;
```

Lista de um cluster do 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;
```

Interrompa a consulta:

```sql theme={null}
-- Encerra forçosamente todas as consultas com o query_id especificado:
KILL QUERY WHERE query_id='2-857d-4a57-9ee0-327da5d60a90'

-- Encerra de forma síncrona todas as consultas executadas pelo 'username':
KILL QUERY WHERE user='username' SYNC
```

<Tip>
  Se você estiver interrompendo uma consulta no ClickHouse Cloud ou em um cluster autogerenciado, use a opção `ON CLUSTER [cluster-name]` para garantir que a consulta seja interrompida em todas as réplicas
</Tip>

Usuários com acesso somente leitura só podem interromper as próprias consultas.

Por padrão, é usada a versão assíncrona das consultas (`ASYNC`), que não espera a confirmação de que as consultas foram interrompidas.

A versão síncrona (`SYNC`) aguarda a interrupção de todas as consultas e exibe informações sobre cada processo à medida que ele é interrompido.
A resposta contém a coluna `kill_status`, que pode assumir os seguintes valores:

1. `finished` – A consulta foi encerrada com sucesso.
2. `waiting` – Aguardando a consulta terminar após o envio de um sinal para encerrá-la.
3. Os outros valores explicam por que a consulta não pode ser interrompida.

Uma consulta de teste (`TEST`) apenas verifica as permissões do usuário e exibe uma lista de consultas a serem interrompidas.

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

A presença de mutações longas ou incompletas geralmente indica que um serviço do ClickHouse está com baixo desempenho. A natureza assíncrona das mutações pode fazer com que elas consumam todos os recursos disponíveis de um sistema. Pode ser necessário:

* Pausar todas as novas mutações, `INSERT`s e `SELECT`s e aguardar a conclusão da fila de mutações.
* Ou encerrar manualmente algumas dessas mutações enviando um comando `KILL`.

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

Tenta cancelar e remover [mutações](/pt-BR/reference/statements/alter/index#mutations) que estão em execução no momento. As mutações a cancelar são selecionadas na tabela [`system.mutations`](/pt-BR/reference/system-tables/mutations) usando o filtro especificado pela cláusula `WHERE` da consulta `KILL`.

Uma consulta de teste (`TEST`) apenas verifica as permissões do usuário e exibe uma lista das mutações a serem interrompidas.

Exemplos:

Obtenha a `count()` de mutações incompletas:

Contagem de mutações em um único nó do ClickHouse:

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

Número de mutações em um cluster de réplicas do ClickHouse:

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

Consulte a lista de mutações incompletas:

Lista de mutações de um único nó do ClickHouse:

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

Lista de mutações de um cluster do ClickHouse:

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

Cancele as mutações conforme necessário:

```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'
```

A consulta é útil quando uma mutação fica travada e não consegue ser concluída (por exemplo, se alguma função na consulta da mutação lança uma exceção ao ser aplicada aos dados contidos na tabela).

As alterações já feitas pela mutação não são revertidas.

<Note>
  A coluna `is_killed=1` (apenas no ClickHouse Cloud) na tabela [system.mutations](/pt-BR/reference/system-tables/mutations) não significa necessariamente que a mutação tenha sido completamente finalizada. É possível que uma mutação permaneça por um longo período em um estado em que `is_killed=1` e `is_done=0`. Isso pode acontecer se outra mutação de longa duração estiver bloqueando a mutação interrompida. Essa é uma situação normal.
</Note>
