database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 6411 게시물 읽기
No. 6411
vacuum 에 관해서 질문드립니다.
작성자
가우나라(familyj)
작성일
2005-11-11 06:06
조회수
2,990

현재 PostgreSQL 7.4.9 를 사용하고 있습니다.

사용하고 있는 A 라는 DB 에는 약 40여개의 namespace 가 있습니다.

1.처음 DB 접속시에는 public 이라는 namespace 에 위치되어 있는데..

여기서

DB명=# vacuum full;

하면 A 라는 DB에 있는 모든 Table 에 vacuum 이 적용되는지요?

아니면 현재 위치되어 있는 public 이라는 namespace 에만 적용되나요?

 

2.vacuum, vacuum full, vacuum analyze 의 이렇게 세개 명령어의 차이는 무엇인지 알고 싶습니다.

DSN PostgreSQL 의 vacuum 을 검색해서 봤는데요..

제가 제대로 못찾은 것인지 차이점을 알기가 힘드네요.

 

이 글에 대한 댓글이 총 3건 있습니다.

1) 예, 그런 것으로 알고 있습니다. 확인해 보지는 않았지만요. -.-;;

 

2) vacuum은 그냥 vacuum입니다. table의 쓰지 않는 공간을 파악해서 다시 재사용하도록 해줍니다.

 

vacuum full은 table을 구조조정해서 (단지 쓰지 않는 공간을 파악하는 수준을 넘어) 쓰지 않는 공간이 없도록 압축시킵니다. 그냥 vacuum만 돌렸을 때에는 단순히 파악만 하기 때문에 물리적인 디스크상의 DB 사이즈는 차이가 없지만 vacuum full로 하면 필요한 자료만 남은 크기로 줄어듭니다. 하지만 이 명령을 실행하면 vacuum이 끝날 때까지 그 table을 access 할 수 없으므로 DB 사용자가 없을 때에만 실행시켜야 합니다. 일반 vacuum만 열심히 해주면 vacuum full은 몇 달에 한번 정도만 해주면 됩니다. 저는 거의 안합니다.

 

vacuum analyze는 vacuum과 analyze를 한꺼번에 처리하는 명령입니다. vacuum을 한 후에 table의 내용을 sampling 해서 통계값을 얻습니다. 이 통계값은 쿼리를 효율적으로 처리하도록 하는데 활용됩니다. analyze를 안해 놓으면 비효율적인 처리를 하는 경우가 생깁니다. index를 만들어 놓고도 사용하지 않는다던가 하는 일 말입니다.

박성철(gyumee)님이 2005-11-11 10:08에 작성한 댓글입니다.
이 댓글은 2005-11-11 10:10에 마지막으로 수정되었습니다.

답변 감사합니다.

 

그런데 vacuum 을 몇달동안 안 했을 경우에는 당연히 속도에 미치는 영향이 있겠죠?

 

가우나라(familyj)님이 2005-11-11 13:24에 작성한 댓글입니다.

경우에 따라서 다름니다.

 

update나 delete가 많지 않고 insert와 select가 많다면 상대적으로 vacuum을 해야 할 필요가 별로 없습니다. 한 컬럼이라도 update가 되면 전혀 새로운 공간에 row가 복사되면서 기존 자료는 쓰레기가되어 공간을 차지하므로 sequence scan 시에 속도가 엄청 떨어지고 DB 파일의 크기도 필요 이상으로 커집니다.

 

analyze는 update, delete, insert가 많이 일어나서 DB에 들어있는 자료의 구성에 큰 변화가 있었다면 반드시 해줘야 합니다. 그렇지 않으면 pgsql이 table에 저장된 자료의 현황을 잘 못 파악해서 엉뚱한 방법으로 질의를 시도하게 되고 성능이 안 좋게 나옵니다.

 

vacuum analyze를 정기적으로 실행시켜주는 것이 속편합니다. 저 같은 경우 무척 갱신이 빈번한 서비스의 경우 autovacuum을 쓰거나 하루에 4회정도 vacuum analyze를 실행하도록 설정해 놓습니다.

 

대부분은 하루에 한번만 하도록 하구요.

박성철(gyumee)님이 2005-11-12 13:25에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6414어찌하면 빨라질까요? 인덱스를 안쓰는거 같은데... [3]
김이수
2005-11-11
4070
6413SQL_ASCII 의 DB 를 UNICODE 로 변경하려면. [1]
가우나라
2005-11-11
2441
6412Group by 질문이여... [1]
조성배
2005-11-11
2080
6411vacuum 에 관해서 질문드립니다. [3]
가우나라
2005-11-11
2990
64081분에 4만개의 데이터를 인서트하면서... [10]
이정호
2005-11-09
4502
6405김상기님의 prepared query의 위험한 외줄타기를 읽고(2)...
초보대왕
2005-11-07
2202
6404에러 해결방법좀 알려주세요... [1]
나그네
2005-11-07
2230
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다