Atomic
Движок Atomic
поддерживает неблокирующие запросы DROP TABLE
и RENAME TABLE
, а также атомарные запросы EXCHANGE TABLES
. Движок базы данных Atomic
используется по умолчанию в открытом исходном коде ClickHouse.
В ClickHouse Cloud по умолчанию используется Shared
движок базы данных, который также поддерживает вышеупомянутые операции.
Создание базы данных
Особенности и рекомендации
UUID таблицы
Каждая таблица в базе данных Atomic
имеет постоянный UUID и хранит свои данные в следующем каталоге:
Где xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
— это UUID таблицы.
По умолчанию UUID генерируется автоматически. Тем не менее, пользователи могут явно указать UUID при создании таблицы, хотя это не рекомендуется.
Например:
Вы можете использовать настройку show_table_uuid_in_table_create_query_if_not_nil, чтобы отобразить UUID с запросом SHOW CREATE
.
RENAME TABLE
Запросы RENAME
не изменяют UUID и не перемещают данные таблицы. Эти запросы выполняются немедленно и не ждут завершения других запросов, использующих таблицу.
DROP/DETACH TABLE
При использовании DROP TABLE
данные не удаляются. Движок Atomic
просто помечает таблицу как удаленную, перемещая её метаданные в /clickhouse_path/metadata_dropped/
и уведомляя фоновый поток. Задержка перед окончательным удалением данных таблицы задается настройкой database_atomic_delay_before_drop_table_sec
.
Вы можете указать синхронный режим с помощью модификатора SYNC
. Для этого используйте настройку database_atomic_wait_for_drop_and_detach_synchronously
. В этом случае DROP
ожидает завершения работающих SELECT
, INSERT
и других запросов, использующих таблицу. Таблица будет удалена, когда она не будет использоваться.
EXCHANGE TABLES/DICTIONARIES
Запрос EXCHANGE
атомарно меняет местами таблицы или словари. Например, вместо этой неатомарной операции:
вы можете использовать атомарную:
ReplicatedMergeTree в атомарной базе данных
Для таблиц ReplicatedMergeTree
рекомендуется не указывать параметры движка для пути в ZooKeeper и имени реплики. В этом случае будут использоваться параметры конфигурации default_replica_path
и default_replica_name
. Если вы хотите явно указать параметры движка, рекомендуется использовать макрос {uuid}
. Это гарантирует, что уникальные пути автоматически генерируются для каждой таблицы в ZooKeeper.
Диск метаданных
Когда в SETTINGS
указан disk
, диск используется для хранения файлов метаданных таблицы.
Например:
Если не указан, по умолчанию используется диск, определенный в database_disk.disk
.
См. также
- system.databases системная таблица