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 9463 게시물 읽기
No. 9463
바인딩(binding) 관련 질문입니다.
작성자
한성원(gks3117)
작성일
2014-08-19 19:48
조회수
12,319

 안녕하세요~!

특정 쿼리의 실행시간이 오래 걸려서 이것저것 시도를 해보았는데요. 바인드 되는 원리가 궁금해서 질문드립니다.

 

해당 sql은 약 1200줄 정도의 SELECT 쿼리입니다. 해당 쿼리의 바인드 변수값이 3개가 들어가는데요. 

이 상태에서 소스를 돌리면 총 6초가 소요가 됩니다.

실행시간이 왜이렇게 오래걸릴까 고심한 끝에 아래와 같은 방법으로 테스트를 해보았습니다.

바인드 변수에 직접 바인드 변수값을 대체하여 소스를 돌리면 1초가 소요됩니다. 

 

이러한 현상을 보고 이런 생각을 해보았습니다.

SELECT를 수행하게 되면 바인드 변수값이 있을 경우 parse->bind->execute 되는 것이 총 6초이고,

바인드 변수에 직접 값을 박아서 수행하면 parse->execute만 되어 총 1초가 걸리는 것 같다고 생각을 했습니다.  즉 bind 되는값이 굉장히 오래 걸린다라는 생각을 했습니다.(5초)

 

혹시 쿼리가 굉장히 길어지면 bind 되는 시간이 원래 오래 걸리는건가요? bind 되는 시간을 줄이고 싶은데 어떻게 해야 할까요?

 

답변 부탁드립니다 ㅜㅜ 감사합니다^^

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

이런 경우는 실행계획이 달라지는 경우가 제일 가능성이 큽니다.

또 다른 한 가능성은,

작업 수행 시간을 구하는 작업을 응용 프로그램에서 했다면,

네트워크 속도도 감안하셔야합니다.

 

postgresql.conf 파일에서

log_min_duration 값을 0으로 지정해서 세션 작업 시간을 살펴보세요.

제가 아는 범위 안에서는 prepare -> bind -> execute 총 시간과, prepare -> execute 시간이

실행계획이 다르지 않다면, 위에서 처럼 그렇게 크게 다르지 않습니다.

 

김상기(ioseph)님이 2014-08-22 10:53에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9466index 질문! [1]
wnlf
2014-09-03
11218
9465jdbc에서 openssl 사용 어떻게 하나요? [2]
심상호
2014-08-26
11577
9464오라클의 서브 프로시져 전환 [2]
코난
2014-08-25
11376
9463바인딩(binding) 관련 질문입니다. [1]
한성원
2014-08-19
12319
9462subtrans 와 multi trnans의 차이는 뭔가요?
좋아요
2014-08-19
11620
9461컬럼순서 변경이 안되나요? [3]
hyeon
2014-08-16
13549
9460mariaDB의 'ON DUPLICATE KEY UPDATE ' 와 같은 기능의 함수는 아직 없죠? [2]
hyeon
2014-08-15
13141
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다