Pular para o conteúdo principal

Descrição

A tabela contém informações sobre mutações de tabelas MergeTree e o andamento delas. Cada comando de mutação é representado por uma única linha.

Colunas:

  • database (String) — O nome do banco de dados ao qual a mutação foi aplicada.
  • table (String) — O nome da tabela à qual a mutação foi aplicada.
  • mutation_id (String) — O ID da mutação. Para tabelas replicadas, esses IDs correspondem aos nomes dos znodes no diretório <table_path_in_clickhouse_keeper>/mutations/ no ClickHouse Keeper. Para tabelas não replicadas, os IDs correspondem aos nomes de arquivos no diretório de dados da tabela.
  • command (String) — A string do comando de mutação (a parte da consulta após ALTER TABLE [db.]table).
  • create_time (DateTime) — Data e hora em que o comando de mutação foi enviado para execução.
  • block_numbers.partition_id (Array(String)) — Para mutações de tabelas replicadas, o array contém os IDs das partições (um registro para cada partição). Para mutações de tabelas não replicadas, o array está vazio.
  • block_numbers.number (Array(Int64)) — Para mutações de tabelas replicadas, o array contém um registro para cada partição, com o número do bloco adquirido pela mutação. Somente as partes que contêm blocos com números menores que esse serão alteradas pela mutação na partição. Em tabelas não replicadas, os números de bloco em todas as partições formam uma única sequência. Isso significa que, para mutações de tabelas não replicadas, a coluna conterá um registro com um único número de bloco adquirido pela mutação.
  • parts_in_progress_names (Array(String)) — Um array com os nomes das partes de dados que estão sendo alteradas no momento pela mutação.
  • parts_to_do_names (Array(String)) — Um array com os nomes das partes de dados que ainda precisam ser alteradas para que a mutação seja concluída.
  • parts_to_do (Int64) — O número de partes de dados que ainda precisam ser alteradas para que a mutação seja concluída. Observação: mesmo que parts_to_do = 0, uma mutação em uma tabela replicada talvez ainda não tenha sido concluída devido a um INSERT de longa duração que está criando uma nova parte de dados que precisará ser alterada.
  • parts_postpone_reasons (Map(String, String)) — Um map de nomes de partes para os motivos pelos quais elas foram adiadas.
  • is_done (UInt8) — Sinalizador que indica se a mutação foi concluída ou não. Valores possíveis: 1 se a mutação foi concluída, 0 se a mutação ainda está em andamento.
  • is_killed (UInt8) — Indica se uma mutação foi interrompida. Disponível apenas no ClickHouse Cloud. Observação: is_killed=1 não significa necessariamente que a mutação tenha sido totalmente finalizada. É possível que uma mutação permaneça em um estado em que is_killed=1 e is_done=0 por um período prolongado. Isso pode ocorrer se outra mutação de longa duração estiver bloqueando a mutação interrompida. Essa é uma situação normal.
  • latest_failed_part (String) — O nome da parte mais recente que não pôde ser alterada.
  • latest_fail_time (DateTime) — A data e a hora da falha mais recente na alteração de uma parte.
  • latest_fail_reason (String) — A mensagem de exceção que causou a falha mais recente na alteração de uma parte.
  • latest_fail_error_code_name (String) — O código de erro da exceção que causou a falha mais recente na alteração de uma parte.
  • Se o nome de uma parte não estiver em parts_postpone_reasons e ainda não tiver sido alterada, isso significa que a parte ainda não foi agendada para mutação.
  • O nome de parte all_parts representa todas as partes que ainda não foram alteradas.
  • is_killed (UInt8) — Indica se uma mutação foi interrompida. Disponível apenas no ClickHouse Cloud.
is_killed=1 não significa necessariamente que a mutação tenha sido totalmente 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.
  • is_done (UInt8) — Indica se a mutação foi concluída ou não. Valores possíveis:
    • 1 se a mutação foi concluída,
    • 0 se a mutação ainda está em processamento.
Mesmo se parts_to_do = 0, é possível que uma mutação em uma tabela replicada ainda não tenha sido concluída devido a uma consulta INSERT de longa duração, que criará uma nova parte de dados que precisará ser alterada.
Se houve problemas ao alterar algumas partes de dados, as colunas a seguir contêm informações adicionais:
  • latest_failed_part (String) — O nome da parte mais recente que não pôde ser alterada.
  • latest_fail_time (DateTime) — A data e a hora da falha mais recente ao alterar uma parte.
  • latest_fail_reason (String) — A mensagem de exceção que causou a falha mais recente ao alterar uma parte.

Monitorando mutações

Para acompanhar o progresso na tabela system.mutations, use a seguinte consulta:
SELECT * FROM clusterAllReplicas('cluster_name', 'system', 'mutations')
WHERE is_done = 0 AND table = 'tmp';

-- ou

SELECT * FROM clusterAllReplicas('cluster_name', 'system.mutations')
WHERE is_done = 0 AND table = 'tmp';
Observação: isso exige permissões de leitura nas tabelas system.*.
Uso no CloudNo ClickHouse Cloud, a tabela system.mutations em cada nó contém todas as mutações do cluster, e não há necessidade de clusterAllReplicas.

Veja também

Última modificação em 10 de junho de 2026