태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
페이지를 읽고 있습니다. ( 아쿠아바다's Blog )
분류 전체보기 (770)
쉐어포인트 (24)
Exchange (12)
SQL (121)
XML (36)
WEB (294)
O / S (97)
삶의향기 (163)
기획 (19)
RSS 피드(IE 7.0부터 기본 지원됩니다. 이전 버전 사용자는 접합한 툴을 사용하세요!!)

스터디에 형이 asp+오라클 연결해서 쓸때

쿼리문이 재컴파일 되는것을 막고 싶어한다고 해서 asp에서 어떻게 쿼리문을

넘겨야 하는지 대해서 물어봤다.


그래서 관련자료을 찾다가 발견한 내용입니다.


시퀄에서는 프로시저을 쓰면 거의 메모리캐싱을 이용하는데(퀴리문에 따라 약간 다들수 있지만)

asp+오라클에서 작업할때 성능업할수 있는 팁이네요.


---------------------------------------------------------------------------------


신철우님께서 문의하신 Double Parse Count에 대해 답변 드리겠습니다.
이 문제는 OLE DB 사용시에 나타나며 JDBC 사용시에도 나타나는 경우가 있습니다.
OLE DB가 MS OLE DB provider for Oracle 이던, Oracle OLE DB provider for Oracle이던가에 증
상이 나타납니다.
신철우님 얘기대로 provider를 Microsoft ODBC for Oracle로 바꾸면 발생하지 않습니다.
왜 이런 증상이 나타나는지 이유는 명확하지 않으나 문제가 발생하는 OLE DB의 provider가 수정
되지 않는한 다른 해결 방법은 없어 보입니다.
그리고 static sql 을 통해 parse: execute 비율을 1: 다 로 만든다는 것은 잘못 이해하신 것입
니다. 웹과 같은 3 Tier 환경에서는 현재 parse: execute = 1 : 1 나오는게 최적입니다. 제가 다
른 기술자문에서도 기술한 적이 있는데 parse 카운트와 execute 카운트가 같다고 해서 그만큼 파
싱이 많이 일어난게 아니라는 것입니다. 기존 자문 내용을 참고하시기 바랍니다.
그리고 하시려고 하는 parse: execute = 1: M 은 파라미터 쿼리가 되고 게다가 Hold Cursor까지
되어 커서를 재사용한다는 것입니다. ASP환경에서는 아직 Hold Cursor 까지는 잘 안되며 1:1 이
최선이라고 판단됩니다.
JDBC환경에서 Connection Pool을 쓰는 경우에 1: M으로 될 수도 있습니다.

현재로서는 아래와 같은 두가지 방안중 선택하시는게 좋습니다.

방안 1.
Microsoft ODBC for Oracle을 사용하여 Double Parse Count가 나타나지 않도록 한다.

방안 2.
OLE DB가 ODBC에 비해 효율적인 부분이 있으므로
약간의 Double Parse Count 비효율을 인정하고 OLE DB를 사용한다.


참고로 ASP에서 Static SQL(파라미터 쿼리)을 구현하는 것은 Command 객체를 활용하시는게 제일
좋으며, ASP환경에서 OLE DB는 Microsoft 가 제공하는걸 사용하시는게 좋습니다.

즐거운 하루 되세요.


>> 신철우 님께서 작성한 글입니다
---------------------------------------------------------------------------------
안녕하십니까.
열린 기술광장에 올린 글입니다만 답변이 없어서 옮깁니다.

얼마전 db 관련 컨설팅을 받은 결과 dynamic sql의 사용도가 너무 높으니 static sql로 바꾸어
서 parse / execute 비율을 낮추라는 진단을 받았습니다.

그래서 asp의 모든 소스를 static sql로 변경하여 테스트를 진행하고 있는데 이상한 현상이 발견
됩니다.
우선 SGA의 공유 풀의 sql을 조사해 보면 원하는 데로 ? 로 처리한 쿼리문들이 :v0001 과 같은
변수로 바뀌어 풀 내에 저장되고 있습니다.

그런데 이상한 점은 parse/ execute 비율이 2:1 즉 매 실행마다 2회의 parsing 작업이 수행되는
것처럼 나온다는 것이지요.

이전의 어떤 질문과 답변을 찾아보니 비슷한 상황이 올라와 있던데 , 그 때의 답글을 참조하면
변수 binding 을 이용한 statics sql을 수행해도 oracle 단에 가면 별도의 parsing이 수행된다
는 내용이 올라와 있더군요.

여튼...
이상황과 관련하여 한가지 상황을 더 말씀드리겠습니다.
현재 테스트 상황에서 ASP 에서 Oracle로의 session 연결은 MS OLE DB provider for oracle을 사
용하고 있는데, 위 방식을 ms odbc for orace(정확한 이름은 아닌것 같습니다.여튼 odbc) 방식으
로 바꾸어 보면 parse : execute 가 1:1 로 나옵니다.

정리하면, static sql 을 통해 parse: execute 비율을 1: 다 로 만들고 싶은데 그게 안된다는 것
입니다.

비슷한 경험 있으신 분들의 도움 부탁드립니다.
감사합니다.

ASP에서 Static SQL 을 구현하는 것은 Command 객체를 활요했습니다. (다른 방식이 있는지는 잘
모르겠네요)

-------

********************************************************************************

SELECT PROXY_USER_ID,BRANCH_CODE
FROM
WORKFLO.COM_USER WHERE USER_ID = :V00001


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 12 0.00 0.00 0 0 0 0
Execute 6 0.00 0.00 0 0 0 0
Fetch 6 0.00 0.00 0 24 0 6
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 24 0.00 0.00 0 24 0 6

Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 30
********************************************************************************

---------------------------------------------------------------------------------



출처: 엔코아

좀더 흥미로운 내용이 많이 있습니다.. HOME > SQL를 확인하세요
TAG ,   
0 Trackback, 0 Comment, :
1  ... 592 593 594 595 596 597 598 599 600  ... 770 
Statistics Graph
Total : 486,023 Today : 152