IT/db

postgresql vacuum의 개념과 필요성

thesse 2023. 4. 12. 14:11
300x250
반응형

vacuum은 포스트그레에만 있는 기능이라고 한다.

 

포스트그레에서는 데이터를 삭제하거나 업데이트할 때

기존 레코드의 데이터를 따로 보관해두고 새로 튜플을 삽입하는데

이때 지워진(보관처리된) 기존의 튜플을 데드 튜플이라고 한다.

 

데드튜플이 많이 쌓이면 쓰지도 않는 데이터들이 자리를 차지해서

쿼리 성능에도 영향을 미치고

디스크 용량을 차지하여 자원낭비도 유발한다.

 

이 데드 튜플을 청소하는 것이 vacuum이다.

 

vacuum은 auto vacuum을 설정하여 주기적으로 실행하게 할 수 있지만

vacuum tb_name의 쿼리를 통해 직접 수행시킬 수도 있다.

 

vacuum에는 일반 vacuum과 full vacuum이 있는데

일반 vacuum을 하면 데드튜플을 검색대상에서 제거하여 쿼리 성능을 향상시키지만

디스크 용량은 반환하지 않기 때문에 용량문제는 해결되지 않는다.

 

full vacuum을 하면 디스크 공간을 반환해서 여유용량 확보를 할 수 있지만

full vacuum을 돌리는 과정에서 기존 테이블을 통째로 복사하는 행위가 이루어지기 때문에

애초에 여유공간이 있어야 실행할 수 있다 (여유공간이 없어서 하려는건데....ㅠ)

 

대충 내가 이해한 바로는 위와 같다.....

 

 

참고 : https://techblog.woowahan.com/9478/

 

PostgreSQL Vacuum에 대한 거의 모든 것 | 우아한형제들 기술블로그

PostgreSQL을 사용하신다면 반드시 알아야 하는 개념! Vacuum에 대해 같이 알아봅시다

techblog.woowahan.com

 

300x250
반응형