본문으로 건너뛰기
최종 수정: 에

삭제 작업 개요

Apache Doris는 조건부 삭제, 파티션 단위 삭제, 테이블 전체 비우기, 기본 키 일괄 삭제, 원자적 덮어쓰기 등 일반적인 시나리오를 지원하는 다양한 삭제 방법을 제공합니다. 이 문서는 사용 시나리오를 바탕으로 가장 적합한 삭제 방법을 빠르게 선택할 수 있도록 안내합니다.

빠른 탐색​

사용 시나리오에 맞는 삭제 방법을 선택하세요.

사용 사례권장 방법적용 가능한 모델특징
조건에 따라 일부 데이터 삭제DELETE 문모든 테이블 모델범용적이고 유연함
만료된 파티션 삭제(예: 최근 7일 데이터만 유지)파티션 삭제(TRUNCATE)파티션 테이블메타데이터만 수정하므로 효율이 가장 높음
스키마를 유지하면서 테이블 전체 비우기테이블 전체 삭제(TRUNCATE)모든 테이블 모델데이터를 빠르게 초기화
대량의 기본 키 일괄 삭제(CDC 동기화 등)Delete SignUnique Key 모델업데이트를 통해 일괄 삭제 구현
쿼리 중단 없이 파티션 데이터 다시 쓰기임시 파티션을 사용한 원자적 교체파티션 테이블원자적 덮어쓰기로 쿼리 공백 방지

삭제 방법 상세 설명​

1. DELETE 문: 조건부 삭제​

조건에 따라 일부 데이터를 삭제하는 일반적인 시나리오에 적합하며, 모든 테이블 모델을 지원합니다.

구문:

DELETE FROM table_name WHERE condition;

적용 시 참고 사항:

  • 일상적인 삭제 요구 사항 대부분을 충족합니다.
  • 일괄 삭제나 파티션 전체 삭제 시나리오에서는 아래 방법보다 효율이 낮습니다.

자세한 사용법은 삭제 작업을 참고하세요.

2. 파티션 삭제: 만료된 데이터의 효율적인 정리​

Doris에서는 날짜별 파티션으로 데이터를 관리하는 것이 일반적입니다. 최근 일정 기간(예: 최근 7일)의 데이터만 유지해야 한다면 파티션 삭제(truncate partition)를 권장합니다.

구문:

TRUNCATE TABLE tbl PARTITION(p1, p2);

장점:

  • 파티션 메타데이터만 수정하므로 데이터 스캔이 필요하지 않습니다.
  • 만료된 파티션을 정리할 때 권장되는 방법입니다.

자세한 사용법은 Truncate 작업을 참고하세요.

3. 테이블 전체 삭제: 테이블을 빠르게 비우기​

오프라인 분석에서 데이터를 다시 처리하는 경우처럼 스키마를 유지하면서 테이블 전체를 빠르게 비워야 하는 시나리오에 적합합니다.

구문:

TRUNCATE TABLE table_name;

자세한 사용법은 Truncate 작업을 참고하세요.

4. Delete Sign: 기본 키 일괄 삭제​

데이터 삭제는 데이터 업데이트의 특수한 형태로 볼 수 있습니다. 업데이트 기능을 갖춘 기본 키 모델(Unique Key)에서는 delete sign을 사용하여 업데이트 쓰기로 삭제를 수행할 수 있습니다.

대표적인 시나리오:

  • CDC(Change Data Capture) 데이터 동기화: DELETE 작업의 binlog에 delete sign을 표시하고 Doris에 기록하여 해당 기본 키의 데이터를 삭제합니다.

장점과 제한 사항:

  • 기본 키 일괄 삭제를 지원하며 DELETE 문보다 효율적입니다.
  • 고급 기능으로, 사용법이 비교적 복잡합니다.

자세한 사용법은 일괄 삭제를 참고하세요.

5. 임시 파티션을 사용한 원자적 교체: 쿼리 중단 없는 덮어쓰기​

파티션 데이터를 다시 써야 할 때 "먼저 삭제한 후 데이터 적재" 방식을 그대로 사용하면 데이터를 쿼리할 수 없는 시간이 발생합니다. 임시 파티션을 사용한 원자적 교체로 이 문제를 방지할 수 있습니다.

절차:

  1. 대상 파티션에 대응하는 임시 파티션을 생성합니다.
  2. 임시 파티션에 새 데이터를 적재합니다.
  3. 교체 작업을 통해 원래 파티션을 원자적으로 교체합니다.

자세한 사용법은 임시 파티션을 참고하세요. 테이블 전체를 원자적으로 교체해야 한다면 원자적 테이블 교체를 참고하세요.

삭제 방법 비교​

방법구문 키워드삭제 단위성능모든 테이블 모델 지원 여부
DELETE 문DELETE FROM조건에 따라 삭제중간지원
파티션 삭제TRUNCATE PARTITION파티션 전체높음(메타데이터만 수정)파티션 테이블만 지원
테이블 전체 삭제TRUNCATE TABLE테이블 전체높음지원
Delete sign__DORIS_DELETE_SIGN__ 기록기본 키별높음(일괄 처리)Unique Key 모델만 지원
임시 파티션을 사용한 원자적 교체REPLACE PARTITION파티션 전체높음파티션 테이블만 지원

고려 사항​

  • 버전 수에 미치는 영향: 삭제 작업은 새로운 데이터 버전을 생성합니다. 삭제를 자주 수행하면 버전 수가 늘어나 쿼리 성능에 영향을 줄 수 있습니다.
  • 스토리지 공간 반환 지연: 삭제된 데이터는 Compaction이 완료될 때까지 스토리지 공간을 차지합니다. 삭제 작업 자체로는 스토리지 사용량이 즉시 줄어들지 않습니다.
  • 테이블 모델 제한: Delete sign은 Unique Key 기본 키 모델에만 적용됩니다. 파티션 관련 삭제는 파티션 테이블에만 적용됩니다.

자주 묻는 질문(FAQ)​

Q1: DELETE 문과 TRUNCATE의 차이는 무엇인가요?

DELETE 문은 WHERE 조건에 따라 데이터를 삭제하며 모든 테이블에서 사용할 수 있습니다. TRUNCATE는 메타데이터만 수정하여 테이블 전체나 파티션 전체를 직접 삭제하므로 더 빠르지만 삭제 단위가 더 큽니다.

Q2: 삭제 후 스토리지 공간이 즉시 반환되지 않는 이유는 무엇인가요?

삭제된 데이터는 백그라운드 Compaction 병합이 완료된 후에야 스토리지에서 실제로 제거됩니다. 이는 정상적인 동작입니다.

Q3: CDC 동기화 시나리오에서 DELETE 이벤트를 효율적으로 처리하려면 어떻게 해야 하나요?

Unique Key 기본 키 모델과 delete sign 방식을 함께 사용하는 것을 권장합니다. 대량의 기본 키 삭제를 일괄 처리할 수 있어 DELETE 문을 하나씩 실행하는 것보다 훨씬 효율적입니다.

Q4: 파티션 데이터를 다시 쓰는 동안 쿼리가 중단되지 않게 하려면 어떻게 해야 하나요?

임시 파티션을 사용한 원자적 교체를 사용하세요. 먼저 새 데이터를 임시 파티션에 기록한 다음, 원자적 교체 작업으로 파티션을 전환합니다. 전체 과정은 쿼리에 영향을 주지 않습니다.