2010-07-21 2 views
1

TOAD 또는 다른 도구에서 웹 응용 프로그램에 의해 실행되는 쿼리를 모니터링하는 방법이 있습니까?웹 응용 프로그램 DB 쿼리 실행 계획을 모니터링하는 방법은 무엇입니까?

웹 앱 쿼리에 대한 설명/실행 계획을 검토하고 싶습니다.

webapp 쿼리가 sqlplus에서 실행될 때보 다 느린 이유를 디버깅합니다.

+0

쿼리 자체가 오래 걸리거나 프런트 엔드에서이 사용자 경험이 있다는 증거가 있습니까? 일반적으로 개발자와 협력하여 쿼리 실행 시간 및 결과 검색 시간을 보여주기 위해 코드를 사용합니다. 일반적으로 시간이 어디에서 사용되는지 결정하는 데 훨씬 더 가까워집니다. 종종 그들은 결과를 렌더링하는 비효율적 인 코드를 가지고 있으며, 이것은 '여분의'시간이 고려되는 곳입니다. –

+0

잘 설명하면 약간의 설명이 강할 수 있습니다 :-)하지만 예는 쿼리가 실행되는 코드에서 중단 점을 설정하고 앱에서 몇 초, SQLPlus에서 수 밀리 초 밖에 걸리지 않습니다. –

답변

2

일반적으로 세 가지 점을 추적하고 분석 할 수 있습니다. 첫 번째 SQL은 주로 v $ sql보기를 통해 제공됩니다. 세션을 통해 두 번째로 (v $ 세션으로 시작). 마지막으로 시간을 측정합니다 (일반적으로 시스템 또는 세션 수준에서 일정 기간 동안 측정).

SELECT * FROM 테이블 WHERE type = : val과 같은 특정 SQL 문이 실행되면 데이터베이스는 해당 데이터베이스의 빠른 해시를 만들고 캐시에 일치하는 문이 있는지 확인합니다. 이 문은 텍스트뿐만 아니라 특정 환경 설정 (예 : 구문 분석 사용자, 최적화 도구 목표, 변수 유형 바인딩, NLS 설정 ...)에서도 일치해야합니다.

일치하는 명령문이 없으면 데이터베이스가 쿼리 프로그램을 최적화 프로그램에 제공하여 쿼리 계획을 수립합니다. 일치하는 항목이 있으면 해당 진술에 대해 이미 결정된 계획이 사용됩니다.

그래서 첫 번째 단계는 웹 응용 프로그램과 sqlplus에서 실행 된 SQL을 가져 와서 동일한 계획을 사용하고 있는지 확인하는 것입니다. 관심있는 문장을 보려면 v $ sql을보고 얼마나 많은 항목이 있는지 볼 수 있어야합니다.

당신이 여러 번있는 경우

, 특히 다른 모듈/액션/SERVICE 값으로, 당신은 그들이 (DBMS_XPLAN.DISPLAY_CURSOR) 차이가 있는지 확인하기 위해 계획을 볼 수 있습니다. 하나의 어커런스 만있는 경우 SQL이 공유되므로 sqlplus 실행으로부터 웹 응용 프로그램 실행을 격리하는 데 다른 접근 방식을 취해야합니다.

한 가지 방법은 웹 응용 프로그램 세션과 sqlplus 세션 (DBMS_MONITOR) 모두를 통해 SQL 실행을 추적하는 것입니다. 그런 다음 추적 파일에서 tkprof 또는 유사하게 차이점을 찾으십시오.

은 TOAD를 통해 도움을 줄 수는 없지만 근본적인 도구와 기법을 이해하는 것은 잘못 될 수 없습니다.

+0

감사합니다. 훌륭한 응답입니다. v $ sql에서 한 행을 감안할 때 디스플레이 계획을 어떻게 볼 수 있습니까? –

+0

10g 이상을 가정 할 때 v $ sql에는 sql_id 열 (fdxrh8tzyw0yw와 같은 값)이 있습니다. select * from table (dbms_xplan)을 사용하여 설명 플랜을 볼 수 있습니다.display_cursor ('fdxrh8tzyw0yw')); –

1

예. Oracle TOAD에서 DB에 대한 쿼리에 대한 웹 애플리케이션 호출을 모니터링하는 방법이 있습니다. 이 과정 선택이 도구 (이 경우 [TOAD, Web_dev (I dont remember the name of debug)]는 "실행"을 "디버그"너무)와

START -> All Programs -> Quest Software -> TOAD for Oracle -> Tools -> SQL Monitor 

. 이 도구는 저장 프로 시저 또는 함수가 응용 프로그램을 호출하는 것을 보여줍니다.

관련 문제