Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Atomic

El motor Atomic admite consultas DROP TABLE y RENAME TABLE sin bloqueo, y consultas EXCHANGE TABLES Atomic. El motor de base de datos Atomic se usa de forma predeterminada en la versión de código abierto de ClickHouse.

Crear una base de datos

CREATE DATABASE test [ENGINE = Atomic] [SETTINGS disk=...];

Aspectos específicos y recomendaciones

UUID de la tabla

Cada tabla de la base de datos Atomic tiene un UUID persistente y almacena sus datos en el siguiente directorio:

/clickhouse_path/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/

Donde xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy es el UUID de la tabla.

De forma predeterminada, el UUID se genera automáticamente. Sin embargo, los usuarios pueden indicar explícitamente el UUID al crear una tabla, aunque no se recomienda.

Por ejemplo:

CREATE TABLE name UUID '28f1c61c-2970-457a-bffe-454156ddcfef' (n UInt64) ENGINE = ...;

RENAME TABLE

Las consultas RENAME no modifican el UUID ni mueven los datos de la tabla. Estas consultas se ejecutan de inmediato y no esperan a que terminen otras consultas que estén usando la tabla.

DROP/DETACH TABLE

Al usar DROP TABLE, no se elimina ningún dato. El motor Atomic simplemente marca la tabla como eliminada moviendo sus metadatos a /clickhouse_path/metadata_dropped/ y notifica al hilo en segundo plano. El retraso antes de la eliminación definitiva de los datos de la tabla se especifica mediante el ajuste database_atomic_delay_before_drop_table_sec. Puede especificar el modo síncrono usando el modificador SYNC. Use el ajuste database_atomic_wait_for_drop_and_detach_synchronously para ello. En este caso, DROP espera a que terminen las consultas SELECT, INSERT y otras consultas que estén usando la tabla. La tabla se eliminará cuando deje de estar en uso.

EXCHANGE TABLAS/DICCIONARIOS

La consulta EXCHANGE intercambia tablas o diccionarios de forma atómica. Por ejemplo, en lugar de esta operación no atómica:

Non-atomicsql
RENAME TABLE new_table TO tmp, old_table TO new_table, tmp TO old_table;

puede usar una base de datos Atomic:

Atomicsql
EXCHANGE TABLES new_table AND old_table;

ReplicatedMergeTree en una base de datos Atomic

Para las tablas ReplicatedMergeTree, se recomienda no especificar en los parámetros del motor ni la ruta en ZooKeeper ni el nombre de la réplica. En este caso, se utilizarán los parámetros de configuración default_replica_path y default_replica_name. Si desea especificar explícitamente los parámetros del motor, se recomienda usar las macros {uuid}. Esto garantiza que se generen automáticamente rutas únicas para cada tabla en ZooKeeper.

Disco de metadatos

Cuando se especifica disk en SETTINGS, ese disco se utiliza para almacenar los archivos de metadatos de la tabla. Por ejemplo:

CREATE TABLE db (n UInt64) ENGINE = Atomic SETTINGS disk=disk(type='local', path='/var/lib/clickhouse-disks/db_disk');

Si no se especifica, se usa de forma predeterminada el disco definido en database_disk.disk.

Véase también

Navigation