> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> `Atomic` 엔진은 비차단 [`DROP TABLE`](#drop-detach-table) 및 [`RENAME TABLE`](#rename-table) 쿼리와 원자적 [`EXCHANGE TABLES`](#exchange-tables) 쿼리를 지원합니다. 오픈소스 ClickHouse에서는 `Atomic` 데이터베이스 엔진이 기본으로 사용됩니다.

# Atomic

`Atomic` 엔진은 비차단 [`DROP TABLE`](#drop-detach-table) 및 [`RENAME TABLE`](#rename-table) 쿼리와 원자적 [`EXCHANGE TABLES`](#exchange-tables) 쿼리를 지원합니다. 오픈소스 ClickHouse에서는 `Atomic` 데이터베이스 엔진이 기본으로 사용됩니다.

<Note>
  ClickHouse Cloud에서는 기본적으로 [`Shared` 데이터베이스 엔진](/ko/products/cloud/features/infrastructure/shared-catalog#shared-database-engine)을 사용하며, 이 엔진도
  위에서 언급한 작업을 지원합니다.
</Note>

<div id="creating-a-database">
  ## 데이터베이스 생성
</div>

```sql theme={null}
CREATE DATABASE test [ENGINE = Atomic] [SETTINGS disk=...];
```

<div id="specifics-and-recommendations">
  ## 세부 정보 및 권장 사항
</div>

<div id="table-uuid">
  ### 테이블 UUID
</div>

`Atomic` 데이터베이스의 각 테이블에는 영구적인 [UUID](/ko/reference/data-types/uuid)가 있으며, 해당 데이터는 다음 디렉터리에 저장됩니다:

```text theme={null}
/clickhouse_path/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/
```

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

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

예시:

```sql theme={null}
CREATE TABLE name UUID '28f1c61c-2970-457a-bffe-454156ddcfef' (n UInt64) ENGINE = ...;
```

<Note>
  [show\_table\_uuid\_in\_table\_create\_query\_if\_not\_nil](/ko/reference/settings/session-settings#show_table_uuid_in_table_create_query_if_not_nil) 설정을 사용하면 `SHOW CREATE` 쿼리에서 UUID를 표시할 수 있습니다.
</Note>

<div id="rename-table">
  ### RENAME TABLE
</div>

[`RENAME`](/ko/reference/statements/rename) 쿼리는 UUID를 변경하거나 테이블 데이터를 이동하지 않습니다. 이 쿼리는 즉시 실행되며, 해당 테이블을 사용 중인 다른 쿼리가 끝날 때까지 기다리지 않습니다.

<div id="drop-detach-table">
  ### DROP/DETACH TABLE
</div>

`DROP TABLE`를 사용해도 데이터는 삭제되지 않습니다. `Atomic` engine은 메타데이터를 `/clickhouse_path/metadata_dropped/`로 이동하여 테이블을 삭제된 것으로 표시하고 백그라운드 스레드에 알립니다. 최종적으로 테이블 데이터가 삭제되기 전까지의 지연 시간은 [`database_atomic_delay_before_drop_table_sec`](/ko/reference/settings/server-settings/settings#database_atomic_delay_before_drop_table_sec) 설정으로 지정됩니다.
`SYNC` 수정자를 사용하여 동기 모드를 지정할 수 있습니다. 이를 위해 [`database_atomic_wait_for_drop_and_detach_synchronously`](/ko/reference/settings/session-settings#database_atomic_wait_for_drop_and_detach_synchronously) 설정을 사용하십시오. 이 경우 `DROP`은 테이블을 사용 중인 실행 중의 `SELECT`, `INSERT` 및 기타 쿼리가 완료될 때까지 기다립니다. 테이블은 더 이상 사용되지 않을 때 제거됩니다.

<div id="exchange-tables">
  ### EXCHANGE TABLES/사전
</div>

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

```sql title="Non-atomic" theme={null}
RENAME TABLE new_table TO tmp, old_table TO new_table, tmp TO old_table;
```

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

```sql title="Atomic" theme={null}
EXCHANGE TABLES new_table AND old_table;
```

<div id="replicatedmergetree-in-atomic-database">
  ### Atomic 데이터베이스의 ReplicatedMergeTree
</div>

[`ReplicatedMergeTree`](/ko/reference/engines/table-engines/mergetree-family/replication) 테이블에서는 ZooKeeper의 경로와 레플리카 이름에 대한 엔진 매개변수를 지정하지 않는 것을 권장합니다. 이 경우 구성 매개변수 [`default_replica_path`](/ko/reference/settings/server-settings/settings#default_replica_path)와 [`default_replica_name`](/ko/reference/settings/server-settings/settings#default_replica_name)이 사용됩니다. 엔진 매개변수를 명시적으로 지정하려면 `{uuid}` 매크로를 사용하는 것을 권장합니다. 이렇게 하면 ZooKeeper에서 각 테이블마다 고유한 경로가 자동으로 생성됩니다.

<div id="metadata-disk">
  ### 메타데이터 디스크
</div>

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

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

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

<div id="see-also">
  ## 관련 항목
</div>

* [system.databases](/ko/reference/system-tables/databases) 시스템 테이블
