Pular para o conteúdo principal
Cria um novo banco de dados.
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)] [SETTINGS ...] [COMMENT 'Comment']

Cláusulas

IF NOT EXISTS

Se o banco de dados db_name já existir, o ClickHouse não cria um novo banco de dados e:
  • Não lança uma exceção se a cláusula for especificada.
  • Lança uma exceção se a cláusula não for especificada.

ON CLUSTER

O ClickHouse cria o banco de dados db_name em todos os servidores do cluster especificado. Veja mais detalhes no artigo sobre DDL distribuído.

ENGINE

Por padrão, o ClickHouse usa seu próprio motor de banco de dados Atomic. Também existem MySQL, PostgresSQL, MaterializedPostgreSQL, Replicated, SQLite.

COMENTÁRIO

Você pode adicionar um comentário ao banco de dados ao criá-lo. Há suporte a comentários em todos os motores de banco de dados. Sintaxe
CREATE DATABASE db_name ENGINE = engine(...) COMMENT 'Comment'
Exemplo
Query
CREATE DATABASE db_comment ENGINE = Memory COMMENT 'The temporary database';
SELECT name, comment FROM system.databases WHERE name = 'db_comment';
Response
┌─name───────┬─comment────────────────┐
│ db_comment │ The temporary database │
└────────────┴────────────────────────┘

CONFIGURAÇÕES

lazy_load_tables

Quando ativado, as tabelas não são carregadas completamente durante a inicialização do banco de dados. Em vez disso, é criado um proxy leve para cada tabela, e o mecanismo real da tabela é materializado no primeiro acesso. Isso reduz o tempo de inicialização e o uso de memória em bancos de dados com muitas tabelas, em que apenas um subconjunto é consultado com frequência.
CREATE DATABASE db_name ENGINE = Atomic SETTINGS lazy_load_tables = 1;
Aplica-se a motores de banco de dados que armazenam metadados de tabelas em disco (por exemplo, Atomic, Ordinary). Views, visões materializadas, dicionários e tabelas baseadas em funções de tabela são sempre carregados imediatamente, independentemente dessa configuração. Quando usar: Essa configuração é útil para bancos de dados com um grande número de tabelas (centenas ou milhares), em que apenas um subconjunto é consultado ativamente. Ela reduz o tempo de inicialização do servidor e o uso de memória ao adiar a criação de objetos do motor de tabela, a varredura de partes de dados e a inicialização de threads em segundo plano até o primeiro acesso. Impacto em system.tables:
  • Antes de uma tabela ser acessada, system.tables mostra seu motor como TableProxy. Após o primeiro acesso, passa a mostrar o nome real do motor (por exemplo, MergeTree).
  • Colunas como total_rows e total_bytes retornam NULL para tabelas não carregadas porque o armazenamento real ainda não foi criado.
Interação com operações DDL:
  • SELECT, INSERT, ALTER, DROP disparam automaticamente o carregamento do motor de tabela real no primeiro uso.
  • RENAME TABLE funciona sem disparar um carregamento.
  • Depois que uma tabela é carregada, ela permanece carregada por toda a duração do processo do servidor.
Limitações:
  • Ferramentas de monitoramento que dependem dos metadados de system.tables (por exemplo, total_rows, engine) podem exibir informações incompletas para tabelas não carregadas.
  • A primeira consulta a uma tabela não carregada tem um custo único de carregamento (análise da instrução CREATE TABLE armazenada e inicialização do motor).
Valor padrão: 0 (desabilitado).
Última modificação em 10 de junho de 2026