TIL

DB) AutoVaccumm이란

하얀잔디 2026. 6. 19. 16:05
이게 도대체 왜 필요한 거임?

  • PostgreSQL은 데이터를 수정(UPDATE)하거나 삭제(DELETE)할 때 바로 진짜 지우지 않음.
  • 이거 이제 안 쓰는 데이터임 하고 껍데기(Dead Tuple)만 남겨둠. (이걸 MVCC 방식이라고 함).
  • 이 껍데기 찌꺼기들을 제때 안 치우면 DB가 쓸데없이 비대해지고 엄청 무거워짐.
  • 그래서 "야, 너네가 알아서 주기적으로 청소 좀 해라" 하고 시키는 게 바로 AutoVacuum(자동 진공)임.

 

 

구체적으로 뭘 하는 건데?
  • 찌꺼기 청소: 안 쓰는 데이터 공간을 깨끗이 비워서 새로운 데이터가 들어올 수 있게 빈자리 만들어 줌.
  • 통계 정보 최신화: DB한테 "지금 데이터 이렇게 들어있으니까 쿼리 날릴 때 이 길로 찾아가면 빠름" 하고 똑똑한 길(실행 계획)을 안내해 줌.
  • 한 마디로 DB 성능 유지를 위한 자동 방청소(정리정돈) 기능.

 

 

데이터 많으면 성능에 지장 있지 않나?
  • 결론부터 말하면 걱정 노노.
  • 내 DB 기준 데이터가 2,000만 건이나 되었는데도 아무 문제 없이 아주 잘 돌아갔음. * 요즘 하드웨어 성능이 워낙 좋아서 이 정도 규모는 AutoVacuum이 돌아가도 티도 안 나고 스무스하게 처리함.
  • 옛날 옛적 구닥다리 버전 시절에는 이거 돌면 DB 느려진다고 수동으로 끄기도 했다는데, 지금은 절대 끄면 안 되는 필수 기능임. 끄면 진짜 DB 터짐.