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
Detalhes e recomendações
UUID da tabela
Atomic tem um UUID persistente e armazena seus dados no seguinte diretório:
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:
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
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
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
EXCHANGE troca tabelas ou dicionários atomicamente. Por exemplo, em vez desta operação não atômica:
Non-atomic
Atomic
ReplicatedMergeTree em banco de dados Atomic
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
disk é especificado em SETTINGS, o disco é usado para armazenar os arquivos de metadados da tabela.
Por exemplo:
database_disk.disk será usado por padrão.
Veja também
- system.databases tabela do sistema