Saltar al contenido principal
Crea una base de datos nueva.
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)] [SETTINGS ...] [COMMENT 'Comment']

Cláusulas

IF NOT EXISTS

Si la base de datos db_name ya existe, ClickHouse no crea una nueva base de datos y:
  • No lanza una excepción si se especifica la cláusula.
  • Lanza una excepción si no se especifica la cláusula.

ON CLUSTER

ClickHouse crea la base de datos db_name en todos los servidores del clúster especificado. Encontrará más detalles en el artículo sobre Distributed DDL.

ENGINE

De forma predeterminada, ClickHouse usa su propio motor de base de datos Atomic. También están disponibles MySQL, PostgresSQL, MaterializedPostgreSQL, Replicated y SQLite.

COMMENT

Puede añadir un comentario a la base de datos al crearla. Se admiten comentarios en todos los motores de base de datos. Sintaxis
CREATE DATABASE db_name ENGINE = engine(...) COMMENT 'Comment'
Ejemplo
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 │
└────────────┴────────────────────────┘

SETTINGS

lazy_load_tables

Cuando está habilitado, las tablas no se cargan por completo durante el arranque de la base de datos. En su lugar, se crea un proxy ligero para cada tabla y el motor de tabla real se materializa al acceder a ella por primera vez. Esto reduce el tiempo de arranque y el uso de memoria en bases de datos con muchas tablas, de las que solo se consulta activamente un subconjunto.
CREATE DATABASE db_name ENGINE = Atomic SETTINGS lazy_load_tables = 1;
Se aplica a motores de base de datos que almacenan los metadatos de las tablas en disco (p. ej., Atomic, Ordinary). Las vistas, las vistas materializadas, los diccionarios y las tablas respaldadas por funciones de tabla siempre se cargan de inmediato, independientemente de esta configuración. Cuándo usarlo: Esta configuración es útil para bases de datos con una gran cantidad de tablas (cientos o miles) en las que solo se consulta activamente un subconjunto. Reduce el tiempo de inicio del servidor y el uso de memoria al posponer la creación de los objetos del motor de tabla, el análisis de las partes de datos y la inicialización de hilos en segundo plano hasta el primer acceso. Impacto en system.tables:
  • Antes de acceder a una tabla, system.tables muestra su motor como TableProxy. Después del primer acceso, muestra el nombre real del motor (p. ej., MergeTree).
  • Columnas como total_rows y total_bytes devuelven NULL para las tablas no cargadas, porque el almacenamiento real todavía no se ha creado.
Interacción con las operaciones DDL:
  • SELECT, INSERT, ALTER y DROP activan de forma transparente la carga del motor de tabla real en el primer uso.
  • RENAME TABLE funciona sin activar la carga.
  • Una vez cargada, una tabla permanece cargada durante toda la vida útil del proceso del servidor.
Limitaciones:
  • Las herramientas de monitorización que dependen de los metadatos de system.tables (p. ej., total_rows, engine) pueden mostrar información incompleta para las tablas no cargadas.
  • La primera consulta a una tabla no cargada conlleva un coste puntual de carga (analizar la instrucción CREATE TABLE almacenada e inicializar el motor).
Valor predeterminado: 0 (deshabilitado).
Última modificación el 10 de junio de 2026