Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

CREATE DATABASE

Создаёт новую базу данных.

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)] [SETTINGS ...] [COMMENT 'Comment']

Секции

IF NOT EXISTS

Если база данных db_name уже существует, ClickHouse не создает новую базу данных и:

  • Не генерирует исключение, если указана эта конструкция.
  • Генерирует исключение, если эта конструкция не указана.

ON CLUSTER

ClickHouse создает базу данных db_name на всех серверах указанного кластера. Подробности см. в статье Distributed DDL.

ДВИЖОК

По умолчанию ClickHouse использует собственный движок базы данных Atomic. Также существуют MySQL, PostgresSQL, MaterializedPostgreSQL, Replicated, SQLite.

COMMENT

Вы можете добавить комментарий к базе данных при её создании.

Комментарии поддерживаются всеми движками баз данных.

Синтаксис

CREATE DATABASE db_name ENGINE = engine(...) COMMENT 'Comment'

Пример

Querysql
CREATE DATABASE db_comment ENGINE = Memory COMMENT 'The temporary database';
SELECT name, comment FROM system.databases WHERE name = 'db_comment';
Responsetext
┌─name───────┬─comment────────────────┐
│ db_comment │ The temporary database │
└────────────┴────────────────────────┘

Настройки

lazy_load_tables

Когда этот параметр включен, таблицы не загружаются полностью при запуске базы данных. Вместо этого для каждой таблицы создается облегченный прокси, а реальный движок таблицы материализуется при первом обращении. Это сокращает время запуска и использование памяти для баз данных с большим количеством таблиц, когда активно запрашивается только часть из них.

CREATE DATABASE db_name ENGINE = Atomic SETTINGS lazy_load_tables = 1;

Применяется к движкам баз данных, которые хранят метаданные таблиц на диске (например, Atomic, Ordinary). Представления, materialized view, словари и таблицы, использующие table function, всегда загружаются сразу независимо от этого параметра.

Когда использовать: Этот параметр полезен для баз данных с большим количеством таблиц (сотнями или тысячами), когда активно запрашивается только часть из них. Он уменьшает время запуска сервера и использование памяти, откладывая создание объектов движка таблицы, сканирование частей данных и инициализацию фоновых потоков до первого обращения.

Влияние на system.tables:

  • Пока к таблице не обратились, system.tables показывает её движок как TableProxy. После первого обращения отображается реальное имя движка (например, MergeTree).
  • Столбцы вроде total_rows и total_bytes возвращают NULL для незагруженных таблиц, поскольку реальное хранилище ещё не создано.

Взаимодействие с DDL-операциями:

  • SELECT, INSERT, ALTER, DROP прозрачно инициируют загрузку реального движка таблицы при первом использовании.
  • RENAME TABLE работает без инициирования загрузки.
  • После загрузки таблица остаётся загруженной на всё время работы серверного процесса.

Ограничения:

  • Инструменты мониторинга, которые полагаются на метаданные system.tables (например, total_rows, engine), могут показывать неполную информацию для незагруженных таблиц.
  • Первый запрос к незагруженной таблице приводит к разовым затратам на загрузку (разбор сохранённого оператора CREATE TABLE и инициализацию движка).

Значение по умолчанию: 0 (отключено).

Navigation