DETACH

DETACH

서버가 테이블, 머티리얼라이즈드 뷰, 딕셔너리, 또는 데이터베이스의 존재를 "잊도록" 만듭니다.

출처: 문서

본문

Syntax

DETACH TABLE|VIEW|DICTIONARY|DATABASE [IF EXISTS] [db.]name [ON CLUSTER cluster] [PERMANENTLY] [SYNC]

분리(detach)는 테이블, 머티리얼라이즈드 뷰, 딕셔너리 또는 데이터베이스의 데이터나 메타데이터를 삭제하지 않아요. 엔티티가 PERMANENTLY로 분리되지 않았다면, 다음 서버 시작 시 서버는 메타데이터를 읽고 테이블/뷰/딕셔너리/데이터베이스를 다시 불러옵니다. 엔티티가 PERMANENTLY로 분리되었으면 자동 복구는 없습니다.

테이블, 딕셔너리 또는 데이터베이스가 영구적으로 분리되었든 그렇지 않든, 두 경우 모두 ATTACH 쿼리로 다시 연결할 수 있어요. 시스템 로그 테이블도 다시 연결할 수 있습니다(예: query_log, text_log 등). 다른 시스템 테이블은 다시 연결할 수 없어요. 다음 서버 시작 시 서버가 그 테이블들을 다시 불러옵니다.

ATTACH MATERIALIZED VIEW는 짧은 문법(SELECT 없이)에서는 동작하지 않지만, ATTACH TABLE 쿼리로 연결할 수 있어요.

이미 분리된(임시) 테이블을 영구적으로 분리할 수는 없다는 점에 유의하세요. 하지만 다시 연결한 다음 다시 영구적으로 분리할 수는 있어요.

또한 분리된 테이블을 DROP하거나 RENAME TABLE 쿼리로 다른 테이블과 교체할 수 없고, 영구적으로 분리된 것과 같은 이름으로 CREATE TABLE할 수 없습니다.

SYNC 수정자는 지연 없이 동작을 실행해요.

Example

테이블 만들기:

CREATE TABLE test ENGINE = MergeTree ORDER BY () AS SELECT * FROM numbers(10);
SELECT * FROM test;
┌─number─┐
│      0 │
│      1 │
│      2 │
│      3 │
│      4 │
│      5 │
│      6 │
│      7 │
│      8 │
│      9 │
└────────┘

테이블 분리:

DETACH TABLE test;
SELECT * FROM test;
Received exception from server (version 21.4.1):
Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: Table default.test does not exist.

ClickHouse Cloud 사용자는 PERMANENTLY 절을 사용해야 해요. 예: DETACH TABLE <table> PERMANENTLY. 이 절을 사용하지 않으면 테이블이 업그레이드 같은 클러스터 재시작 시 다시 연결됩니다.

See Also

더 알아보기 (Learn more)