CREATE DATABASE
Создает новую базу данных.
Условия
IF NOT EXISTS
Если база данных db_name уже существует, ClickHouse не создаёт новую базу данных и:
- Не выбрасывает исключение, если указано это условие.
- Выбрасывает исключение, если это условие не указано.
ON CLUSTER
ClickHouse создаёт базу данных db_name на всех серверах указанного кластера. Подробнее см. в статье Distributed DDL.
ENGINE
По умолчанию ClickHouse использует собственный движок базы данных Atomic. Также доступны MySQL, PostgresSQL, MaterializedPostgreSQL, Replicated, SQLite.
COMMENT
Вы можете добавить комментарий к базе данных при её создании.
Комментарии поддерживаются всеми движками баз данных.
Синтаксис
Пример
Запрос:
Результат:
SETTINGS
lazy_load_tables
При включении таблицы не загружаются полностью при запуске базы данных. Вместо этого для каждой таблицы создаётся лёгкий прокси, а реальный движок таблицы материализуется при первом обращении к ней. Это сокращает время запуска и потребление памяти для баз данных с большим количеством таблиц, из которых активно запрашивается только часть.
Применяется к движкам баз данных, которые хранят метаданные таблиц на диске (например, Atomic, Ordinary). VIEW, materialized views, словари и таблицы, основанные на табличных функциях, всегда загружаются немедленно, независимо от этого SETTING.
Когда использовать: Этот SETTING полезен для баз данных с большим числом таблиц (сотни или тысячи), из которых фактически используется только подмножество. Он сокращает время запуска сервера и потребление памяти, откладывая создание объектов движка таблиц, сканирование частей и инициализацию фоновых потоков до первого обращения.
Влияние на 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 (отключено).