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 9480 게시물 읽기
No. 9480
Postgresql 실행계획 제어 문의
작성자
이성필(splee75)
작성일
2014-11-12 17:36
조회수
12,671

안녕하세요. 질문만 하는 눈팅 회원입니다. 

 

다름이 아니라 제목과 같이 실행계획 제어 관련 문의를 하고자 하여 글을 올리게 되었습니다.

 

저는 직업 특성상 Postgresql 만이 아니라 Oracle, MSSQL 등을 함께 관리 및 사용하고 있습니다.

Oracle, MSSQL은 쿼리상에 실행계획을 제어할 수 있는 방안이 있어 필요시 유용하게 사용했었습니다.

그러나 Postgresql은 이에 대한 지원이나 방안을 몰라 여기저기 수소문(일본쪽 사이트 구글링... ㅠㅠ)했지만, 특별한 방안이 없었습니다.

예를 들자면.. pg_hint_plan 이라는 라이브러리를 설치한 후 pre load library 라던가... 에 설정해 놓으면 Oracle과 유사한 실행계획 제어가 가능하다고 하여 해보았지만... 제어가 될 때도 있고, 안되는 경우가 더 많았습니다. 좀 과거의 일이라 지금은 정말 되긴 하던가... 하는 의문입니다.   최근에 찾은 문서에서는... set enable_xxxxx = true/false 의 구문으로 간단한 실행계획은 어쩔 수 있다는 것을 확인했습니다. 현재... 먼저 읽어야 하는 테이블을 지정할 수 있는 방법을 찾지 못해서 좀 아쉽습니다. 

 

Postgresql을 사용하시는 관리자 / 개발자 분들은 실행계획 제어 를 어떻게 하고 계시는지 궁금합니다.

의견 공유가 되었으면 합니다. 

 

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

이것을 드라이빙이라고 하더군요. 

이 드라이빙 제어를 PostgreSQL에서는 사용자가 하는 기능을 제공하지 않고 있습니다. 

Postgres Plus Advanced Server 같은 상용 디비를 이용하는 방법도 있을 터이고, 

저처럼 아에 포기하고, 최적화기에게 맡기고 그놈이 멍청하면, 

모델링이라도 바꿔서 그 놈 수준으로 맞추는 방법도 있습니다. 

일단 그 전에, 각 테이블들의 통계정보를 잘 수집하는 것이 우선이겠죠. 

잘 수집된, 일반적인 자료 형태라면, 최적화기는 대부분 실행계획을 의도된 대로 짭니다. 

꽤 오래된 최적화기라서 요즘은 좀 덜 멍청하기는 합니다.

 

김상기(ioseph)님이 2014-11-14 10:18에 작성한 댓글입니다.

 답변 감사합니다.

 

드라이빙이라는 표현 오랜만에 들어보네요. 오라클 관리 하던 때 많이 쓰던 말이었는데...

postgresql 이 여러가지 강점이 있는 데이터베이스 인데...실행계획 제어 부분이 좀 비밀스러운 면이 있어서 참 아쉽습니다. 그런데... ppas 에서는 힌트 같은 것이 지원되나 보네요??

이성필(splee75)님이 2014-11-17 11:42에 작성한 댓글입니다.

PPAS에서는 일부 hint가 지원됩니다.

 

아래 URL 참조하시고

http://www.enterprisedb.com/docs/en/9.3/oracompat/Postgres_Plus_Advanced_Server_Oracle_Compatibility_Guide-76.htm#P4702_282962

 

PPAS 관련 질문은

 

http://www.postgresdba.com/

 

에서 하시면 되겠습니다.

김주왕(kimjuking)님이 2014-11-17 16:06에 작성한 댓글입니다.

드라이빙 테이블을 지정하는 방법은 없지만 join_collapse_limit 값을 변경하시면 조인순서까지는 제어가 가능합니다.

백수환님이 2014-11-19 16:14에 작성한 댓글입니다. Edit

 아.. 감사합니다.

set join_collapse_limit  구문이 제 경우 굉장히 유용하군요.

이성필(splee75)님이 2014-11-19 16:33에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9485role "PC이름" does not exist ???? [1]
구자은
2014-11-19
10631
9484postgresql에 오라클의 IGNORE NULLS 같은 기능있나요? [1]
rak
2014-11-18
10725
9482postgresql에 오라클의 vsize 같은 기능있나요? [1]
post
2014-11-18
10498
9480Postgresql 실행계획 제어 문의 [5]
이성필
2014-11-12
12671
9479pg_dump 사용법을 잘 몰라서 질문드립니다. [1]
최병윤
2014-11-03
11614
9478Oracle에서 Postgresql로 포팅시 문의 [2]
질문
2014-10-29
11912
947730분 단위로 데이터 가져오기 [3]
초보자
2014-10-28
12134
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다