Crée une nouvelle base de données.
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)] [SETTINGS ...] [COMMENT 'Comment']Clauses
IF NOT EXISTS
Si la base de données db_name existe déjà, ClickHouse ne crée pas de nouvelle base de données et :
- ne lève pas d'exception si la clause est spécifiée ;
- lève une exception si la clause n'est pas spécifiée.
ON CLUSTER
ClickHouse crée la base de données db_name sur tous les serveurs du cluster spécifié. Pour plus de détails, consultez l’article Distributed DDL.
ENGINE
Par défaut, ClickHouse utilise son propre moteur de base de données Atomic. Il existe également les moteurs MySQL, PostgresSQL, MaterializedPostgreSQL, Replicated et SQLite.
COMMENT
Vous pouvez ajouter un commentaire à la base de données au moment de sa création.
Les commentaires sont pris en charge par tous les moteurs de base de données.
Syntaxe
CREATE DATABASE db_name ENGINE = engine(...) COMMENT 'Comment'Exemple
CREATE DATABASE db_comment ENGINE = Memory COMMENT 'The temporary database';
SELECT name, comment FROM system.databases WHERE name = 'db_comment';┌─name───────┬─comment────────────────┐
│ db_comment │ The temporary database │
└────────────┴────────────────────────┘PARAMÈTRES
lazy_load_tables
Lorsqu’il est activé, les tables ne sont pas entièrement chargées au démarrage de la base de données. À la place, un proxy léger est créé pour chaque table, et le véritable moteur de table est matérialisé lors du premier accès. Cela réduit le temps de démarrage et l’utilisation de la mémoire pour les bases de données comportant de nombreuses tables, dont seul un sous-ensemble fait l’objet de requêtes actives.
CREATE DATABASE db_name ENGINE = Atomic SETTINGS lazy_load_tables = 1;S’applique aux moteurs de base de données qui stockent les métadonnées des tables sur disque (par ex. Atomic, Ordinary). Les vues, les vues matérialisées, les dictionnaires et les tables reposant sur des fonctions de table sont toujours chargés immédiatement, quel que soit ce paramètre.
Quand l’utiliser : Ce paramètre est utile pour les bases de données comportant un grand nombre de tables (des centaines ou des milliers), dont seul un sous-ensemble est réellement interrogé. Il réduit le temps de démarrage du serveur et l’utilisation de la mémoire en reportant la création des objets de moteur de table, l’inspection des data parts et l’initialisation des threads d’arrière-plan jusqu’au premier accès.
Impact sur system.tables :
- Avant le premier accès à une table,
system.tablesaffiche son moteur commeTableProxy. Après ce premier accès, il affiche le nom réel du moteur (par ex.MergeTree). - Les colonnes comme
total_rowsettotal_bytesrenvoientNULLpour les tables non chargées, car le stockage réel n’a pas encore été créé.
Interaction avec les opérations DDL :
SELECT,INSERT,ALTER,DROPdéclenchent de manière transparente le chargement du moteur de table réel lors de la première utilisation.RENAME TABLEfonctionne sans déclencher de chargement.- Une fois une table chargée, elle le reste pendant toute la durée de vie du processus serveur.
Limites :
- Les outils de supervision qui s’appuient sur les métadonnées de
system.tables(par ex.total_rows,engine) peuvent afficher des informations incomplètes pour les tables non chargées. - La première requête sur une table non chargée entraîne un coût de chargement ponctuel (analyse de l’instruction
CREATE TABLEstockée et initialisation du moteur).
Valeur par défaut : 0 (désactivé).