Pular para o conteúdo principal
O motor Atomic oferece suporte a consultas DROP TABLE e RENAME TABLE sem bloqueio e a consultas atômicas EXCHANGE TABLES. O motor de banco de dados Atomic é usado por padrão no ClickHouse de código aberto.
No ClickHouse Cloud, o motor de banco de dados Shared é usado por padrão e também oferece suporte às operações mencionadas acima.

Criando um banco de dados

CREATE DATABASE test [ENGINE = Atomic] [SETTINGS disk=...];

Detalhes e recomendações

UUID da tabela

Cada tabela no banco de dados Atomic tem um UUID persistente e armazena seus dados no seguinte diretório:
/clickhouse_path/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/
Em que xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy é o UUID da tabela. Por padrão, o UUID é gerado automaticamente. No entanto, os usuários podem especificá-lo ao criar uma tabela, embora isso não seja recomendado. Por exemplo:
CREATE TABLE name UUID '28f1c61c-2970-457a-bffe-454156ddcfef' (n UInt64) ENGINE = ...;
Você pode usar a configuração show_table_uuid_in_table_create_query_if_not_nil para exibir o UUID na consulta SHOW CREATE.

RENAME TABLE

As consultas RENAME não modificam o UUID nem movem os dados da tabela. Essas consultas são executadas imediatamente e não esperam a conclusão de outras consultas que estejam usando a tabela.

DROP/DETACH TABLE

Ao usar DROP TABLE, nenhum dado é excluído. O motor Atomic apenas marca a tabela como removida, movendo seus metadados para /clickhouse_path/metadata_dropped/ e notificando a thread em segundo plano. O atraso antes da exclusão definitiva dos dados da tabela é especificado pela configuração database_atomic_delay_before_drop_table_sec. Você pode especificar o modo síncrono usando o modificador SYNC. Para isso, use a configuração database_atomic_wait_for_drop_and_detach_synchronously. Nesse caso, DROP espera que SELECT, INSERT e outras consultas em execução que estejam usando a tabela terminem. A tabela será removida quando não estiver mais em uso.

EXCHANGE TABLES/DICTIONARIES

A consulta EXCHANGE troca tabelas ou dicionários atomicamente. Por exemplo, em vez desta operação não atômica:
Non-atomic
RENAME TABLE new_table TO tmp, old_table TO new_table, tmp TO old_table;
você pode usar um banco de dados Atomic:
Atomic
EXCHANGE TABLES new_table AND old_table;

ReplicatedMergeTree em banco de dados Atomic

Para tabelas ReplicatedMergeTree, recomenda-se não especificar os parâmetros do motor para o caminho no ZooKeeper nem o nome da réplica. Nesse caso, serão usados os parâmetros de configuração default_replica_path e default_replica_name. Se quiser especificar explicitamente os parâmetros do motor, recomenda-se usar as macros {uuid}. Isso garante que caminhos exclusivos sejam gerados automaticamente para cada tabela no ZooKeeper.

Disco de metadados

Quando disk é especificado em SETTINGS, o disco é usado para armazenar os arquivos de metadados da tabela. Por exemplo:
CREATE TABLE db (n UInt64) ENGINE = Atomic SETTINGS disk=disk(type='local', path='/var/lib/clickhouse-disks/db_disk');
Se não for especificado, o disco definido em database_disk.disk será usado por padrão.

Veja também

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