Atomic 엔진은 비차단 DROP TABLE 및 RENAME TABLE 쿼리와 원자적 EXCHANGE TABLES 쿼리를 지원합니다. 오픈소스 ClickHouse에서는 Atomic 데이터베이스 엔진이 기본으로 사용됩니다.
ClickHouse Cloud에서는 기본적으로
Shared 데이터베이스 엔진을 사용하며, 이 엔진도
위에서 언급한 작업을 지원합니다.데이터베이스 생성
세부 정보 및 권장 사항
테이블 UUID
Atomic 데이터베이스의 각 테이블에는 영구적인 UUID가 있으며, 해당 데이터는 다음 디렉터리에 저장됩니다:
xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy는 테이블의 UUID를 의미합니다.
기본적으로 UUID는 자동으로 생성됩니다. 하지만 테이블을 생성할 때 UUID를 직접 지정할 수도 있으나, 이는 권장되지 않습니다.
예시:
show_table_uuid_in_table_create_query_if_not_nil 설정을 사용하면
SHOW CREATE 쿼리에서 UUID를 표시할 수 있습니다.RENAME TABLE
RENAME 쿼리는 UUID를 변경하거나 테이블 데이터를 이동하지 않습니다. 이 쿼리는 즉시 실행되며, 해당 테이블을 사용 중인 다른 쿼리가 끝날 때까지 기다리지 않습니다.
DROP/DETACH TABLE
DROP TABLE를 사용해도 데이터는 삭제되지 않습니다. Atomic engine은 메타데이터를 /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-atomic
Atomic
Atomic 데이터베이스의 ReplicatedMergeTree
ReplicatedMergeTree 테이블에서는 ZooKeeper의 경로와 레플리카 이름에 대한 엔진 매개변수를 지정하지 않는 것을 권장합니다. 이 경우 구성 매개변수 default_replica_path와 default_replica_name이 사용됩니다. 엔진 매개변수를 명시적으로 지정하려면 {uuid} 매크로를 사용하는 것을 권장합니다. 이렇게 하면 ZooKeeper에서 각 테이블마다 고유한 경로가 자동으로 생성됩니다.
메타데이터 디스크
SETTINGS에서 disk를 지정하면 테이블 메타데이터 파일은 해당 디스크에 저장됩니다.
예시:
database_disk.disk에 정의된 디스크가 기본값으로 사용됩니다.
관련 항목
- system.databases 시스템 테이블