Clauses
IF NOT EXISTS
Si la base de donnéesdb_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éesdb_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. SyntaxeQuery
Response
SETTINGS
La clauseSETTINGS peut être utilisée sans clause ENGINE, auquel cas le moteur de base de données par défaut
(Atomic) est utilisé. Elle peut contenir aussi bien des paramètres du moteur de base de données que des paramètres de requête ordinaires ; chaque
nom est dirigé vers celui des deux auquel il se rapporte.
disk
Le disque utilisé pour stocker les fichiers de métadonnées des tables de la base de données. Il peut désigner un disque défini dans la configuration du serveur, ou en définir un directement à l’aide de la fonctiondisk, comme le ferait une table individuelle :
Atomic, Ordinary). Si rien n’est spécifié,
le disque défini dans le paramètre serveur database_disk.disk est utilisé.
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.Atomic, Ordinary). Les vues, les vues matérialisées, les dictionnaires, les tables Alias, les tables TimeSeries 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éé.
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.
- 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).
0 (désactivé).