-
Vacuum 실행 구조Postgresql / PPAS/운영 2014. 12. 5. 09:32
Vacuum ?
Vacuum 은 다른 RDBMS에 없는 PostgreSQL의 고유의 명령이다.
PostgreSQL에서 특정 Row를 업데이트 할 경우, 디스크 상의 해당 Row를 물리적으로 업데이트하여 사용하지 않고, 새로운 영역을 할당해 쓴다.
즉, Update나 Delete 한다고 해서, 해당영역이 자동으로 재사용되거나 사라지지 않는다.
이러한, 오래된 영역을 재사용하거나 정리해주는 명령어가 Vacuum 이다.
shell command상의 vacuumdb라는 명령으로 여러가지 옵션으로 정리할 수 도 있고,
서버 구동시 postgresql.conf 파일내의 AUTOVACUUM PARAMETERS 관련 옵션을 지정하여 사용할 수 있다.
PostgreSQL 9.0부터는 Vacuum이 Default로 On되어 있다. 서비스, 시스템 환경에 맞게 옵션을 변경하여 사용해야 한다.
Vacuum 실행 구조
앞서 얘기했듯이, PostgreSQL에서는 특정 Row가 Update나 Delete 되어도, 물리적인 저장공간은 삭제되지 않고 남게된다.
이런 오래된 행 중에서 어느 곳에서도 참조되지 않는 안전하게 재사용할 수 있는 행을 찾아, FSM 즉, Free Space Map 라는 메모리 공간에 그 위치와 크기를 기록한다.
Insert 및 Upadte 등 새로운 행을 추가할 경우 FSM영역에서 검색하여 새로운 데이터를 저장할 수 있는 적당한 크기의 행이 발견되면, 그곳을 재사용하게 한다.
아래 그림, 참고.
이렇케 함으로써, 테이블의 물리적인 영역이 비대해지는 것을 막을 수 있고, DB 성능향상에도 도움이 된다.
[출처] PostgreSQL Vacuum #Optimization|작성자 너부리
'Postgresql / PPAS > 운영' 카테고리의 다른 글
[Postgresql] 오브젝트 변경 작업 (0) 2015.01.20 [PPAS] Backup & Recovery (0) 2015.01.02 postgresql 유용한 쿼리 (0) 2014.11.20 - Table Space - (0) 2014.11.20 PostgreSQL 통계 정보 보기 (0) 2014.11.20