Секции
IF NOT EXISTS
Если база данныхdb_name уже существует, ClickHouse не создает новую базу данных и:
- Не генерирует исключение, если указана эта конструкция.
- Генерирует исключение, если эта конструкция не указана.
ON CLUSTER
ClickHouse создает базу данныхdb_name на всех серверах указанного кластера. Подробности см. в статье Distributed DDL.
ДВИЖОК
По умолчанию ClickHouse использует собственный движок базы данных Atomic. Также существуют MySQL, PostgresSQL, MaterializedPostgreSQL, Replicated, SQLite.COMMENT
Вы можете добавить комментарий к базе данных при её создании. Комментарии поддерживаются всеми движками баз данных. СинтаксисQuery
Response
SETTINGS
ПредложениеSETTINGS может использоваться без предложения ENGINE — в этом случае применяется движок баз данных по умолчанию (Atomic). Оно может содержать как настройки движка баз данных, так и обычные настройки запроса: каждое имя относится к одной из этих двух групп и обрабатывается соответствующим образом.
disk
Диск, используемый для хранения файлов метаданных таблиц базы данных. Можно указать имя диска из конфигурации сервера либо определить его inline с помощью функцииdisk — так же, как это делается для отдельной таблицы:
Atomic, Ordinary). Если не указан,
используется диск, заданный в настройке сервера database_disk.disk.
lazy_load_tables
Когда этот параметр включен, таблицы не загружаются полностью при запуске базы данных. Вместо этого для каждой таблицы создается облегченный прокси, а реальный движок таблицы материализуется при первом обращении. Это сокращает время запуска и использование памяти для баз данных с большим количеством таблиц, когда активно запрашивается только часть из них.Atomic, Ordinary). Представления, materialized view, словари, таблицы Alias, таблицы TimeSeries и таблицы, использующие table function, всегда загружаются сразу независимо от этого параметра.
Когда использовать: Этот параметр полезен для баз данных с большим количеством таблиц (сотнями или тысячами), когда активно запрашивается только часть из них. Он уменьшает время запуска сервера и использование памяти, откладывая создание объектов движка таблицы, сканирование частей данных и инициализацию фоновых потоков до первого обращения.
Влияние на system.tables:
- Пока к таблице не обратились,
system.tablesпоказывает её движок какTableProxy. После первого обращения отображается реальное имя движка (например,MergeTree). - Столбцы вроде
total_rowsиtotal_bytesвозвращаютNULLдля незагруженных таблиц, поскольку реальное хранилище ещё не создано.
SELECT,INSERT,ALTER,DROPпрозрачно инициируют загрузку реального движка таблицы при первом использовании.RENAME TABLEработает без инициирования загрузки.- После загрузки таблица остаётся загруженной на всё время работы серверного процесса.
- Инструменты мониторинга, которые полагаются на метаданные
system.tables(например,total_rows,engine), могут показывать неполную информацию для незагруженных таблиц. - Первый запрос к незагруженной таблице приводит к разовым затратам на загрузку (разбор сохранённого оператора
CREATE TABLEи инициализацию движка).
0 (отключено).