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하면 돼요.

더 알아보기 (Learn more)