Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Atomic

Atomic 엔진은 비차단 DROP TABLERENAME TABLE 쿼리와 원자적 EXCHANGE TABLES 쿼리를 지원합니다. 오픈소스 ClickHouse에서는 Atomic 데이터베이스 엔진이 기본으로 사용됩니다.

데이터베이스 생성

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

세부 정보 및 권장 사항

테이블 UUID

Atomic 데이터베이스의 각 테이블에는 영구적인 UUID가 있으며, 해당 데이터는 다음 디렉터리에 저장됩니다:

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

여기서 xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy는 테이블의 UUID를 의미합니다.

기본적으로 UUID는 자동으로 생성됩니다. 하지만 테이블을 생성할 때 UUID를 직접 지정할 수도 있으나, 이는 권장되지 않습니다.

예시:

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

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/사전

EXCHANGE 쿼리는 테이블이나 사전의 이름을 원자적으로 서로 바꿉니다. 예를 들어, 다음과 같은 원자적이지 않은 작업 대신:

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

Atomic 데이터베이스를 사용할 수 있습니다:

Atomicsql
EXCHANGE TABLES new_table AND old_table;

Atomic 데이터베이스의 ReplicatedMergeTree

ReplicatedMergeTree 테이블에서는 ZooKeeper의 경로와 레플리카 이름에 대한 엔진 매개변수를 지정하지 않는 것을 권장합니다. 이 경우 구성 매개변수 default_replica_pathdefault_replica_name이 사용됩니다. 엔진 매개변수를 명시적으로 지정하려면 {uuid} 매크로를 사용하는 것을 권장합니다. 이렇게 하면 ZooKeeper에서 각 테이블마다 고유한 경로가 자동으로 생성됩니다.

메타데이터 디스크

SETTINGS에서 disk를 지정하면 테이블 메타데이터 파일은 해당 디스크에 저장됩니다. 예시:

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

지정하지 않으면 database_disk.disk에 정의된 디스크가 기본값으로 사용됩니다.

관련 항목

Navigation