3.3 KiB
toc_priority | toc_title |
---|---|
32 | Atomic |
Atomic
It supports non-blocking DROP TABLE and RENAME TABLE queries and atomic EXCHANGE TABLES t1 AND t2 queries. Atomic
database engine is used by default.
Creating a Database
CREATE DATABASE test[ ENGINE = Atomic];
Specifics and recommendations
Table UUID
All tables in database Atomic
have persistent UUID and store data in directory /clickhouse_path/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/
, where xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
is UUID of the table.
Usually, the UUID is generated automatically, but the user can also explicitly specify the UUID in the same way when creating the table (this is not recommended). To display the SHOW CREATE
query with the UUID you can use setting show_table_uuid_in_table_create_query_if_not_nil. For example:
CREATE TABLE name UUID '28f1c61c-2970-457a-bffe-454156ddcfef' (n UInt64) ENGINE = ...;
RENAME TABLE
RENAME
queries are performed without changing UUID and moving table data. These queries do not wait for the completion of queries using the table and will be executed instantly.
DROP/DETACH TABLE
On DROP TABLE
no data is removed, database Atomic
just marks table as dropped by moving metadata to /clickhouse_path/metadata_dropped/
and notifies background thread. Delay before final table data deletion is specify by database_atomic_delay_before_drop_table_sec setting.
You can specify synchronous mode using SYNC
modifier. Use the database_atomic_wait_for_drop_and_detach_synchronously setting to do this. In this case DROP
waits for running SELECT
, INSERT
and other queries which are using the table to finish. Table will be actually removed when it's not in use.
EXCHANGE TABLES
EXCHANGE
query swaps tables atomically. So instead of this non-atomic operation:
RENAME TABLE new_table TO tmp, old_table TO new_table, tmp TO old_table;
you can use one atomic query:
EXCHANGE TABLES new_table AND old_table;
ReplicatedMergeTree in Atomic Database
For ReplicatedMergeTree tables is recomended do not specify parameters of engine - path in ZooKeeper and replica name. In this case will be used parameters of the configuration default_replica_path and default_replica_name. If you want specify parameters of engine explicitly than recomended to use {uuid} macros. This is useful so that unique paths are automatically generated for each table in the ZooKeeper.
See Also
- system.databases system table