매일 VACUUM 처리를 하고 있는데, VACUUM FULL 처리가 필요한지 궁금합니다. VACUUM FULL이 단순히 디스크 스페이스만 줄여주는 것이라면 의미 없겠지요;;; VACUUM FULL이 DB락을 건다는 것때문에 할 수가 없는데요... ( 조작이 중단될 수 없는 상태입니다. ) 괜찮을까요? PostgreSQL 8.1.3 on Fedora 5
autovacuum을 이용하시면 구버전에서나 심각하던 vacuum 문제를 거의 피할 수 있습니다. 8.1 정도면 vacuum full을 자주 해줘야만 하는 상황은 거의 없고요.
가능하면 8.3 버전대로 넘어오시면 더욱 상황은 좋아집니다.
vacuum full은 데이터 파일을 완전히 새로 만드는 것이라서 락이 걸릴 수 밖에 없습니다. 일반적인 상황에서는 vacuum 정도로도 충분합니다. autovacuum은 자동으로 데이터의 변화에 따라 백그라운드에서 vacuum을 수행합니다.
답변 감사합니다. 조금 더 질문을 하고싶습니다.
VACUUM FULL이 데이터 파일을 완전히 새로 만드는 것이라고 하셨는데요.
언제 필요한 작업인지 잘 모르겠습니다.
역할을 보면 VACUUM이나 VACUUM FULLL이나 같아보이는데...
분명 VACUUM FULL 도 필요하기 때문에 있는 것일텐데... 유저메뉴얼을 읽어봐도 잘 모르겠습니다.
하다못해 반드시 필요하다 아니다... 정도의 답변이라도 부탁드립니다;
반드시 필요하면 어쩔수 없이 날 잡고 수행할 수밖에 없으니 말이죠.
vacuum 은 데이터가 삭제된 영역을 다시 쓸 수 있게 만드는 것이고 vacuum full은 이 빈 공간이 없도록 데이터 파일을 새로 만드는 것 입니다. 일반적으로 vacuum 정도로도 충분합니다.
vacuum full 작업은 제 경우는 언제 하냐면,
그 빈공간이 너무 많이 생겼을 경우에 합니다.
가장 대표적인 것이 일반적인 vacuum 작업에 오류가 생긴체로 계속해서 엄청난 자료조작이 일어난 경우, 그 쓸데 없는 공간이 참 많이 생겼겠죠. 그 상태에서 그냥 vacuum 작업을 하게 되면 엄청난 빈 공간이 생기겠죠. 이럴 때만 합니다.
db 버전을 8.3.x 대로 올리고, autovacuum 켜 두고 쓰면
제가 보기에는 아주 특별한 경우가 아니라면, vacuum 관련해서 신경을 더 안 써도 될 것 같습니다.
(꼭 정부의 미국산 쇠고기 광고 같네... 문제가 발생할 확률은 희박하니, 이제 신경 그만 쓰고 보다 근본적인 DB 작업에 전념해야겠죠. 크크)
그럼에도 불구하고, 학구열에 불타서 조금만 더 정확히 보다 폭 넓게 알고 싶다면, PostgreSQL 설명서나 이곳 게시판의 vacuum 관련 게시물들을 참조하세요. 제가 쓴 것만 해보 솔솔찮게 있으니.