Overview
- 주기적인 데이터 삭제 작업이 있는데 이 작업 느려 튜닝한 내용임
- (정확히는 s3에 백업 후 삭제하는 작업)
- 작업하는 DB는 postgresql이다
- postgresql에서 테스트를 진행하였지만 다른 DB도 같은 매커니즘임
어떤 쿼리 입니까?
begin;
explain
DELETE FROM mySchema."myTable"
WHERE "eventInvokedAt" < (CURRENT_DATE - INTERVAL '28 DAYS');
rollback;
/*
| QUERY PLAN |
| :--- |
| Delete on "myTable" \\(cost=0.00..8792212.37 rows=146581559 width=6\\) |
| -> Seq Scan on "myTable" \\(cost=0.00..8792212.37 rows=146581559 width=6\\) |
| Filter: \\("eventInvokedAt" < \\(CURRENT\\_DATE - '28 days'::interval\\)\\) |
*/
- 총 데이터 수 : 260,126,893
- 위 쿼리로 삭제될 데이터 수 : 146,581,559
- 절반이 조금 넘는 데이터가 삭제될 예정이다
- delete operation cost : 8,792,212.37
어떻게 튜닝하지?