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

> O motor `Atomic` oferece suporte a consultas [`DROP TABLE`](#drop-detach-table) e [`RENAME TABLE`](#rename-table) sem bloqueio e a consultas atômicas [`EXCHANGE TABLES`](#exchange-tables). O motor de banco de dados `Atomic` é usado por padrão.

# Atomic

O motor `Atomic` oferece suporte a consultas [`DROP TABLE`](#drop-detach-table) e [`RENAME TABLE`](#rename-table) sem bloqueio e a consultas atômicas [`EXCHANGE TABLES`](#exchange-tables). O motor de banco de dados `Atomic` é usado por padrão no ClickHouse de código aberto.

<Note>
  No ClickHouse Cloud, o [motor de banco de dados `Shared`](/pt-BR/products/cloud/features/infrastructure/shared-catalog#shared-database-engine) é usado por padrão e também oferece suporte às operações mencionadas acima.
</Note>

<div id="creating-a-database">
  ## Criando um banco de dados
</div>

```sql theme={null}
CREATE DATABASE test [ENGINE = Atomic] [SETTINGS disk=...];
```

<div id="specifics-and-recommendations">
  ## Detalhes e recomendações
</div>

<div id="table-uuid">
  ### UUID da tabela
</div>

Cada tabela no banco de dados `Atomic` tem um [UUID](/pt-BR/reference/data-types/uuid) persistente e armazena seus dados no seguinte diretório:

```text theme={null}
/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:

```sql theme={null}
CREATE TABLE name UUID '28f1c61c-2970-457a-bffe-454156ddcfef' (n UInt64) ENGINE = ...;
```

<Note>
  Você pode usar a configuração [show\_table\_uuid\_in\_table\_create\_query\_if\_not\_nil](/pt-BR/reference/settings/session-settings#show_table_uuid_in_table_create_query_if_not_nil) para exibir o UUID na consulta `SHOW CREATE`.
</Note>

<div id="rename-table">
  ### RENAME TABLE
</div>

As consultas [`RENAME`](/pt-BR/reference/statements/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.

<div id="drop-detach-table">
  ### DROP/DETACH TABLE
</div>

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`](/pt-BR/reference/settings/server-settings/settings#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`](/pt-BR/reference/settings/session-settings#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.

<div id="exchange-tables">
  ### EXCHANGE TABLES/DICTIONARIES
</div>

A consulta [`EXCHANGE`](/pt-BR/reference/statements/exchange) troca tabelas ou dicionários atomicamente. Por exemplo, em vez desta operação não atômica:

```sql title="Non-atomic" theme={null}
RENAME TABLE new_table TO tmp, old_table TO new_table, tmp TO old_table;
```

você pode usar um banco de dados Atomic:

```sql title="Atomic" theme={null}
EXCHANGE TABLES new_table AND old_table;
```

<div id="replicatedmergetree-in-atomic-database">
  ### ReplicatedMergeTree em banco de dados Atomic
</div>

Para tabelas [`ReplicatedMergeTree`](/pt-BR/reference/engines/table-engines/mergetree-family/replication), 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`](/pt-BR/reference/settings/server-settings/settings#default_replica_path) e [`default_replica_name`](/pt-BR/reference/settings/server-settings/settings#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.

<div id="metadata-disk">
  ### Disco de metadados
</div>

Quando `disk` é especificado em `SETTINGS`, o disco é usado para armazenar os arquivos de metadados da tabela.
Por exemplo:

```sql theme={null}
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.

<div id="see-also">
  ## Veja também
</div>

* [system.databases](/pt-BR/reference/system-tables/databases) tabela do sistema
