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 6803 게시물 읽기
No. 6803
prepared statement 사용시 플랜 공유 범위..
작성자
백수환(back17)
작성일
2006-08-08 17:45
조회수
3,655

안녕하세요.

php + postgresql 환경에서 prepared query 사용시 세션별로만 공유가 되는건가요?

오라클의 경우는 어떤 사용자든간에 메모리상의 쿼리문장과 동일한 쿼리를 요청받으면 플랜을 공유할수 있는데 postgresql은 어떻게 되는지 궁금합니다.

만약 세션별로만 재사용이 가능하다면 prepared query가 큰 의미가 없을듯 한데요..

 

얼마전 제가 바인딩에 관한 질문을 남겼을때 김상기님이 php + postgresql환경에서는 prepared statement 가 큰효과를 보기 힘들다고 답변을 남기셨는데 왜그런지도 가르침 부탁드립니다.

 

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

prepared statement는 세션에 종속적입니다.

php뿐만이 아니라 세션이 영구적이지 않으면 크게 느낄 수 있는 효과가 없긴 합니다.

신기배(소타)님이 2006-08-08 17:52에 작성한 댓글입니다.

-- prepared statement는 세션에 종속적입니다.

-- php뿐만이 아니라 세션이 영구적이지 않으면

-- 크게 느낄 수 있는 효과가 없긴 합니다.

 

이것은 connection 을 프로세스 단위로 하기 때문에 어쩔 수 없는 현상이며 PGSQL 을 쓸거면 Pool 라이브러리와 결합하는 것이 좋습니다. 게다가 조금 욕심을 내서 FastCGI 를 사용하면 그야말로 PGSQL 과 찰떡 궁합입니다.

초보대왕님이 2006-08-08 21:15에 작성한 댓글입니다.
이 댓글은 2006-08-08 21:17에 마지막으로 수정되었습니다. Edit

답변 감사합니다.

답변을 보면서 또 궁금한점이 생겼네요 ^^;

prepared statement를 사용할때 메모리에 올라와있는 같은쿼리가 있는지 확인을 dbms단에서 해주질 못하는건가요?

자료들을 찾아보니 사용가능한 prepared statement 이 있는 확인하는 함수를 만들어 사용하네요.

오라클의 경우는 binding 변수를 적용한 쿼리를 날리면 db단에서 파싱여부를 알아서 판단합니다. 개발자가 신경쓸 필요가 없는거죠..

오라클만 사용하다 처음 postgresql을 접하는지라 자꾸 오라클과 비교하게 되네요..

조언부탁드립니다.

백수환(back17)님이 2006-08-09 13:52에 작성한 댓글입니다.

prepare, temporary table 등은

세션(connection) 에 종속적이므로

세션이 종료됨과 동시에 이들은 자동소멸됩니다.

 

이점을 감안한다면 오라클의 binding 은 postgresql 에 비해 우월하다고 볼 수 있습니다.

 

아울러서

prepare 를 지정한 세션과 또 다른 세션이  공존한다고 볼때

A 세션에서 정의된 prepare 는 정의되지 않는 B 세션에서는 사용할 수 가 없는 것입니다.

 

희망사항으로

오라클의 binding 처럼 prepare 도 디비가 restart 되기 전까진 디비차원에서 갖고 있었음 하는 바람입니다

 

간단한 테스트로

psql 을 이용하여 컨넥션 두개 맺고 테스트를 해보시면 될거 같습니다.

 

tyro님이 2006-08-09 23:05에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6806default 제약 확인하는 법 [1]
dba
2006-08-15
3164
6805Function 안에서 ROLLBACK? [1]
?
2006-08-09
3702
6804SELECT 의 최적화와 Disk Block 에 대하여
초보
2006-08-09
3272
6803prepared statement 사용시 플랜 공유 범위.. [4]
백수환
2006-08-08
3655
6802로그파일 해석좀부탁드립니다.
왕초보
2006-08-08
4038
6801pgadmin3 에대해서 [1]
이민우
2006-08-08
3777
6800백업에 대한 질문입니다. [1]
궁금이
2006-08-06
3491
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다