티스토리 뷰

DB/Postgresql

데이터 베이스 용량 증가 (vacuum and autovacuum)

개발자와코더사이가 PM일까? 2021. 8. 22. 00:00
반응형

고객사에 데이터 베이스 용량이 하루 3%씩 증가한다는 연락을 받았다.

처음에는 데이터가 많으면 그럴수도 있지.. 라고 생각했었는데.. 아차.. 내가 유지보수 하고 있는 사이트는 규칙적으로 데이터를 insert하고 delete 한다.

갑자기.. postgresql에 vacuum, autovacuum가 생각 났다.

구글에서 postgres vacuum, autovacuum라고 치면 엄청나게 많은 글을 볼수가 있다. 

여기서 이야기하고 싶은 것은 고객사에 DB 용량이 이미 80%가 되었을때.. 아니면 90% 임시 조치는 어떻게 할 것인가?라는 이야기를 하고 싶다.

우선 이야기 하고 싶은 건은 한번 데이터가 insert 하고 update, delete를 하면 테이블에 용량이 늘어난다. 

예를들어서 38만 정도 되는 더미 데이터를 넣고 지우고 테이블에 데이터가 하나도 없어도 테이블 용량이 늘어난다.

위와 같이 그리고 한번 늘어난 테이블 용량은 vacuum, autovacuum을 하더라도 0으로 줄지 않는다.

그럼 내가 생각한 유일한 생각은 truncate 밖에 없다. truncate를 하면 테이블 용량이 다시 처음으로 돌아간다.

하지만, 어느 고객이 아무리 쓸모 없는 데이터라도 DB Table 데이터를 truncate를 하는 것을 좋하겠냐?

내가 생각한 내용은 테이블을 복사하고 다시 해당 테이블을 넣자. 그러면 테이블의 양만큼 복사하는 것을 확인 할 수 있다.

create table 복사 테이블명 as select * from 원본 테이블명

그 다음에 다시 복사하면 어느정도 줄은 테이블 용량을 확인 할 수 있다.

insert into 원본테이블명 select * from 복사 테이블명;

내가 내린 결론은 너무 급하면 truncate 을 통해서 테이블을 초기화 하고 

시간을 내서 vacuum, autovacuum에 대해서 튜닝을 해야 한다고 생각한다.

 

[참고사이트]

https://postgresql.kr/docs/9.3/routine-vacuuming.html

 

정기적인 Vacuum 작업

PostgreSQL 데이터베이스에서는 vacuum (배큠이라고 읽는다) 이라는 주기적인 관리 작업이 필요하다. (영어권에서는 vacuuming 단어는 '청소기 돌리기'라는 뜻으로 이미 일상 용어로 사용되고 있고, 이

postgresql.kr

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함