TRUNCATE 문
TRUNCATE 문
ClickHouse의 TRUNCATE 문은 테이블이나 데이터베이스의 구조를 유지하면서 모든 데이터를 빠르게 제거하는 데 사용해요. 데이터는 지워도 테이블/데이터베이스 구조는 그대로 남아요.
출처: 문서
본문
TRUNCATE TABLE
TRUNCATE TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster] [SYNC]
| Parameter (매개변수) | Description (설명) |
|---|---|
| IF EXISTS | 테이블이 존재하지 않을 때 오류를 방지해요. 생략하면 쿼리가 오류를 반환해요. |
| db.name | 선택적인 데이터베이스 이름. |
| ON CLUSTER cluster | 지정된 클러스터 전반에 걸쳐 명령을 실행해요. |
| SYNC | 복제 테이블을 사용할 때 복제본 전반에 걸쳐 잘라내기를 동기적으로 수행해요. 생략하면 기본적으로 비동기적으로 수행돼요. |
alter_sync 설정을 사용하면 복제본에서 작업이 실행되기를 기다리도록 설정할 수 있어요. 비활성 복제본이 TRUNCATE 쿼리를 실행하기를 기다릴 시간(초)은 replication_wait_for_inactive_replica_timeout 설정으로 지정할 수 있어요. alter_sync가 2로 설정되고 일부 복제본이 replication_wait_for_inactive_replica_timeout 설정으로 지정된 시간보다 오래 비활성 상태이면 UNFINISHED 예외가 발생해요. alter_sync = 3이면 비활성 복제본을 기다리지 않으므로 예외가 발생하지 않아요. TRUNCATE TABLE 쿼리는 다음 테이블 엔진에서는 지원되지 않아요.
TRUNCATE ALL TABLES
TRUNCATE [ALL] TABLES FROM [IF EXISTS] db [LIKE | ILIKE | NOT LIKE '<pattern>'] [ON CLUSTER cluster]
| Parameter (매개변수) | Description (설명) |
|---|---|
| ALL | 데이터베이스의 모든 테이블에서 데이터를 제거해요. |
| IF EXISTS | 데이터베이스가 존재하지 않을 때 오류를 방지해요. |
| db | 데이터베이스 이름. |
| LIKE | ILIKE |
| ON CLUSTER cluster | 클러스터 전반에 걸쳐 명령을 실행해요. |
데이터베이스의 모든 테이블에서 모든 데이터를 제거해요.
TRUNCATE DATABASE
TRUNCATE DATABASE [IF EXISTS] db [ON CLUSTER cluster]
| Parameter (매개변수) | Description (설명) |
|---|---|
| IF EXISTS | 데이터베이스가 존재하지 않을 때 오류를 방지해요. |
| db | 데이터베이스 이름. |
| ON CLUSTER cluster | 지정된 클러스터 전반에 걸쳐 명령을 실행해요. |
데이터베이스의 모든 테이블을 제거하지만 데이터베이스 자체는 유지해요. IF EXISTS 절을 생략하면 데이터베이스가 존재하지 않을 때 쿼리가 오류를 반환해요. TRUNCATE DATABASE는 Replicated 데이터베이스에서는 지원되지 않아요. 대신 데이터베이스를 그냥 DROP하고 CREATE하면 돼요.