-
[Amazon Redshift]DELETE vs TRUNCATE데이터 2024. 11. 24. 21:43
할 일들이 좀 몰려서 밀리다 결국 간신히 이번 글을 쓰게 되었네요. 어떤 내용을 쓰면 좋을까하며 일할 때 작성해둔 메모 및 정리글들을 좀 훑어보다가 DB에서 한 번씩은 꼭 언급된다는 DELETE와 TRUNCATE가 Amazon Redshift에서는 어떻게 다른지!에 대한 글을 작성해보려합니다.(딱 한 줄짜리 내용이지만 쓰고싶은 내용이 있어서요👀) +사용 예시(구문 예시)는 누군가에겐 그렇게까지?할 수 있겠지만 익숙하게 사용하던 명칭 습관과 같은 종류로 보안 이슈를 일으킬까봐 혹시몰라 Amazon Redshift 공식문서 예시로만 작성합니다.
DELETE
테이블의 데이터를 삭제하는 구문입니다. 테이블 전체 삭제를 할 수도 있고, 특정 조건 하의 데이터만 삭제하는 것도 가능합니다
사용 예시
1) 테이블 전체 삭제
DELETE category;
category 테이블의 데이터를 모두 삭제합니다.
2) 특정 조건에 맞는 데이터만 삭제
DELETE FROM category WHERE catid BETWEEN 0 AND 9;
해당 쿼리의 경우 WHERE 조건절에 해당하는 category 테이블의 catid 가 0 에서 9 사이인 행만 삭제하게 됩니다.
3) 다른 테이블과 결합하여(JOIN) 해당 조건 데이터 삭제
#USING 활용 DELETE FROM category USING event WHERE event.catid=category.catid AND category.catid=9; #WHERE절 서브쿼리 활용 DELETE FROM category WHERE catid IN (SELECT category.catid FROM category, event WHERE category.catid=event.catid AND category.catid=9);
두 쿼리 모두 evnet 테이블에과 join되는 catid 중 그 값이 9인 데이터만 삭제하게 됩니다. 두 쿼리의 결과는 동일합니다. 다만, USING으로 테이블 조인을 활용해서 사용할 수도 있고, WHERE 구문에서 서브쿼리를 활용할 수도 있어 두 가지 예시 모두 가져와봤습니다.
TRUCNCATE
DELETE처럼 데이터를 삭제하는 구문입니다. 하지만 둘 사이에 차이는 꽤 큰데 TRUNCATE의 경우 테이블 스캔없이 테이블 전체를 비우는 명령어입니다. 테이블 전체 데이터 삭제해야할 경우, TRUNCATE가 DELETE보다 속도가 빠를 수 있습니다.
다만, TRUNCATE의 경우 autocommit 되므로 롤백이 불가하니 사용할 때 주의해서 사용하셔야합니다.(돌이킬 수 없는 강을 건너게 되실 수도 있습니다...) 추가로 Amazon Redshift 에서 TRUNCATE는 기본적으로는 테이블의 오너(생성계정) 혹은 superuser 일 때 실행할 수 있습니다. 만약 테이블을 생성하는 계정과 배치 작업을 진행하는 실행 계정이 분리가 되어있다면, 실행 계정에 TRUNCATE 에 대한 권한을 따로 부여해주어야합니다.
사용 예시
TRUNCATE category;
마찬가지로 category 테이블의 전체 데이터를 삭제합니다.
BEGIN; TRUNCATE date; ROLLBACK; SELECT COUNT(*) FROM date; count ------- 0 (1 row)
요것은 위에서 언급한 autocommit과 관련된 내용입니다. ROLLBACK을 진행했으나 date 테이블에 데이터는 남아있지 않은 것을 확인할 수 있습니다. TRUNCATE를 실행할 경우 날려도 괜찮은지를 꼭 한 번은 생각해보시기를..보통 백업도 함께 하시겠지만 조심하는 것은 나쁘지않다고 봅니다!
Comment
부지런히 써보겠다 했는데 어째 제목만 미리 작성하고 지난 기수보다 더 미뤄서 쓰는 것 같은 느낌이네요. 회사에서 Redshift를 처음 접했을 때, 자료를 이것저것 되게 많이 찾아보면서 기억해두거나 다시 찾아볼 내용들을 정리해놓았는데요. 오랜만에 그 메모들을 뒤적뒤적 보니 의외로 알찬(?) 내용들이 많았습니다. 누군가에겐 되게 당연한 내용이었을 수 있겠지만요!ㅎㅎ
'데이터' 카테고리의 다른 글
여행 갈 수 있을까..? ARIMA 모형과 함께하는 유로 환율 예측(2) (1) 2025.02.16 여행 갈 수 있을까..? ARIMA 모형과 함께하는 유로 환율 예측(1) - 전처리 (3) 2025.02.02 데이터 웨어하우스 알아가기 #1. DW(Data Warehouse)란? (1) 2025.01.18 Amazon Redshift 분산방식(diststyle) - AUTO, ALL, EVEN, KEY (0) 2024.11.10 [AWS]Amazon Redshift 알아보기 (2) 2024.10.27