안녕하세요
초보자 열혈지누가 한가지 여쭈어 볼것이 있어 질문드립니다.
테이블에서 한 열을 삭제 하고 그다음 삽입을 하면 지워진 공간에 들어오는것이 아니고 새로운 공간을 할당하여 삽입돼잖아여
그래서 vaccum all을 해서 정리를 하는데여 이게 시간을 너무 오래 잡아 먹어서여
혹시 다른 방법은 없나여,, 오라클에 보면 insert에 옵션을 주면 됀다는 분도 있었는데여 postgresql에는 그런 부분은 없나 해서 질문 드립니다.
보통 그런 작업을 vacuum이 하게 되는데요.
vacuum이 7.x(정확히 몰라서;;)에서 vacuum 과 vacuum full 로 나뉘었습니다.
vacuum은 쓰지 않는 공간을 체크해서 재사용하게 해주는 거구요. vacuum full은 빈공간을 없애고 새로운 데이터 파일을 만들어냅니다. vacuum full은 락이 걸립니다.
INSERT 쿼리에 옵션을 줘서 그렇게 만드는건 모르겠습니다. 없을것 같아효~
autovacuum을 써보시면 테이블들의 변경 사항을 수집하여 자동으로 알아서 vacuum을 해줍니다. 저도 사용하고 있는데 요런 문제에 대해 신경을 꺼도 될만큼 알아서 해주네요
감사합니다 신기백님 제가 vaccum full을 vaccum all이라 잘못 표기 했네여..죄송합니다. 설정 파일에 autovaccum을 등록해주면 알아서 동작을 하는 건가여..?? 이부분 설정에 대한 설명문서는 어디서 구할수 있을까여..
8.1.x 쓰시는거죠?
설정파일 아래쪽에 보시면 autovacuum 관련된 설정 항목들이 있습니다.
autovacuum = on
해주시면 켜지는데요
autovacuum이 동작하기 위해서는 그 위쪽에
stats_row_level = on
stats_start_collector = on
요 두놈이 켜 있어야 합니다
그럼 프로세스 목록을 보면 postgres: stats collector process 이놈이 떠 있을겁니다.
그럼 autovacuum이 동작합니다~
정말 감사 드립니다. 오늘도 또 하나 배우고 가네여.. 감사합니다.