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 4598 게시물 읽기
No. 4598
Vacuum 문제 발생.
작성자
한태욱(aviation)
작성일
2003-02-27 21:13
조회수
1,437

안녕하세요.

 

하루 종일 게시판을 뒤지고 뒤졌는데도 해결 방안이 떠오르지 않아서

 

글을 올립니다.

 

아주 간단한 테이블

칼럼이 ID(char형)랑 Score(int형) 두개 밖에 없는 테스트 삼아서 만들었습니다.

 

거기에다가 몇개의 row를 insert하고 index관련 테스트를 해봤습니다.

 

explain으로 해보니 아주 index를 잘 사용하고 있었습니다.

 

하지만 vacuum analyze test를 하고 난 뒤로는 index를 전혀 사용하고 있지 않네요.

 

 

그리고 다른 table에서는

select * from tb_test where score = 1;

이렇게 하면 index를 사용하고

 

select * from tb_test where score > 1; 이거나

select * from tb_test order by score;

하면 index를 사용하지 않는 경우도 있습니다.

 

vacuum두 해보고 그랬는데 소용이 없었습니다.

 

 

무슨 문제 일까요?

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

거의 대부분의 RDBMS는 내장 쿼리 최적화기가 존재합니다. 이놈은 하나의 쿼리를 사용자가 서버로 보내면, 가장 비용이 적게드는 쿼리로 바꾸어서 서버에게 처리하도록 하는 것이지요.

 

여기서 초보가 흔히 범할 수 있는 실수는

인덱스를 사용하는 것은 당연히 비용이 적게 들 것이다고 생각하겠지만, 조금만 더 깊게 생각해본다면, 인덱스를 사용할 경우에 그냥 데이터 테이블을 참조할 때보다 더 큰 비용이 발생할 수도 있습니다.

 

예를 들어서 아주 간단한 자료구조를 가진 테이블에 10개의 데이터가 있을 경우, 그 데이터의 반틈 이상을 인덱스를 사용해서 뽑아낸다 하면, 이럴 경우는 인덱스를 사용하나 안하나 그 처리 속도는 거의 차이가 나지 않을 것이며, 이것때문에, 인덱스를 사용한다는 것은(인덱스를 사용한다는 것은 또 하나의 파일억세스를 의미하는 것이지요) 치리속도대 비용이 더 많이 들것입니다.

 

그 반대로 엄청난 데이터가 있는데, 쿼리의 결과 또한 엄청날 경우, 이때는 인덱스를 사용해봤자 별 의미가 없을 경우입니다.

 

그래서, 쿼리 최적화기를 만드는 개발자는 이부분에 대한 내부적인 규칙을 만들어놓고 그 규칙에 따라 인덱스를 사용할 것인가 말것인가를 결정하게 합니다.

 

그 결정을 하는데 도움을 주는 것이 바로 vacuum analyze 명령입니다.

 

즉, 이 명령뒤에 오히려 인덱스를 사용하지 않게 되었다면, 인덱스를 사용하는 것이 오히려 비용이 더 많이 들기 때문입니다.

 

더 깊은 부분의 이야기는 제 실력으로는 드릴 수 없겠네요.

관심이 있으시면, RDBMS 일반이론서의 쿼리 최적화 부분을 공부해 보시길 바랍니다. (제가 읽어서는 이해가 안가는 수학인지라... -.-)

김상기(ioseph)님이 2003-03-03 01:31에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4602FreeBSD에서 pgsql 설치하려면.. [3]
요시아
2003-03-04
2000
4601덤프관련..궁금한점 [3]
미투
2003-02-28
1397
4599솔라리스 설치할때여...
내맘
2003-02-28
1118
4598Vacuum 문제 발생. [1]
한태욱
2003-02-27
1437
4597음..어떡하면 좋아요 ㅜ.ㅜ [3]
박지영
2003-02-27
1563
4596설치후 삭제 그리고 다시 설치...-_-; [4]
서문교
2003-02-27
1690
4595날짜관련 변환 ?? [5]
미투
2003-02-25
3779
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다