2009-08-21 4 views
7

Oracle db를 처음 사용했습니다. 동일한 결과 집합을 반환하는 2 쿼리가 있습니다. 나는 그들 각각의 성과를 측정하고 더 나은 것을 선택하기를 원한다. Oracle SQL 개발자를 사용하여 어떻게 할 수 있습니까? 특정 도구가 통계를 제공한다는 것을 읽은 것을 기억합니다. 이러한 통계를 읽는 방법에 대한 지침이 있습니까?oracle에서 쿼리 성능을 측정하는 방법

업데이트 : Rob Van이 제안한 것처럼 tkprof 유틸리티를 사용하여 쿼리 성능을 확인했습니다. 내가 (카운트, 행, 경과 시간, 실행 시간) 이해할 수있는 몇 가지 매개 변수,하지만 대부분의 수 없습니다. 아무도 나를 매개 변수의 중요성으로 도울 수 있습니까? 아래는 결과입니다.

Query 1: 
call  count  cpu elapsed  disk  query current  rows 
------- ------ -------- ---------- ---------- ---------- ---------- ---------- 
Parse  1  0.01  0.01   0   0   0   0 
Execute  1  0.00  0.00   0   0   0   0 
Fetch  49  0.26  0.32   45  494   0  23959 
------- ------ -------- ---------- ---------- ---------- ---------- ---------- 
total  51  0.28  0.33   45  494   0  23959 

Query2: 
call  count  cpu elapsed  disk  query current  rows 
------- ------ -------- ---------- ---------- ---------- ---------- ---------- 
Parse  1  0.00  0.00   0   0   0   0 
Execute  1  0.00  0.00   0   0   0   0 
Fetch  33  0.25  0.24   0  904   0  15992 
------- ------ -------- ---------- ---------- ---------- ---------- ---------- 
total  35  0.25  0.24   0  904   0  15992 

그 쿼리 2 쿼리 1. 디스크, 쿼리 및 현재 PARAMS가 무엇을 의미하는지에 어떤 도움보다 더 결정할 수 있습니다 ??

+0

최고의 성능 쿼리를 최적화하는 방법에 대한 자세한 이해가 필요 2 동일한 결과 세트를 리턴합니다. 그러나 tkprof 파일은 쿼리 1이 23959 개의 행을 반환하고 쿼리 2가 15992 개의 행을 반환한다는 것을 보여줍니다. 정확히 일치하지는 않습니다 ... –

+0

쿼리가 뷰 생성의 일부입니다. 조회가 뷰를 작성하는 f}이 다르기 때.에 리턴되는 행의 수가 다릅니다. 첫 번째 쿼리는 유니온을 사용하고 두 번째 쿼리는 LOJ를 사용하고 첫 번째 쿼리는 유니 코드를 사용하기 때문에 두 번째 쿼리 – Cshah

답변

9

"Explain Plan"이라는 SQL 편집기 위에 단추가 있습니다. 이 도구는 각 경로의 비용과 명령문이 색인 및 파티션을 사용하는 방법을 알려줍니다. 참고로, 오류가 발생할 수 있습니다. DBA가 사용자 계정의 기능을 켜야 할 필요가 있습니다. "추적"이라고 생각되지만 그 시점에서 잘못 될 수 있습니다. execute 문을 읽는 것은 처음에는 어려울 수 있지만 좋은 SQL을 작성하는 데는 좋은 도구입니다.

+0

Thx의 경우에는 발생하지 않는 몇 개의 레코드가 복제됩니다. 설명 탭 아래에 결과가 표시되었습니다. 비용이라는 열이 숫자와 함께 나타납니다. 나는이 숫자가 의미하는 것을 해석하기 위해 오라클 워드 프로세서를 파헤쳐 야 할 것입니다. – Cshah

+2

나는이 워드 프로세서를 파고들 것을 강력히 권장합니다. 최적화 및 오라클 튜닝에 대한 검색을 수행하십시오. (Burleson에는 팁이 포함 된 컨설팅 사이트를 보시려면 google "Oracle Burleson"이 있습니다.) 그리고 "explain plan"에서 볼 수있는 내용에 대한 개요를 확인하십시오. http://www.akadia.com/services/ora_interpreting_explain_plan.html 다른 설명에서 언급했듯이 속도 만 확인한다고해서 많은 의미가있는 것은 아닙니다. 환경은 일을 바꿀 수 있습니다 - 한 설정에서 빠르면 다른 설정에서는 느려질 수 있습니다. – user158017

+0

하지만 물건을 배우는 데는 시간이 걸릴 수 있습니다. 최선을 다해 지금 속도를 확인한 다음 가능한 한 많이 흡수하고 이동하면서 조정하십시오. – user158017

1

기본 답변 - 각 쿼리를 두 번 실행하고 어느 것이 더 빠른 지 확인하십시오. 가장 중요한 부분은 오라클 성능에 대해 배우지 않고도이 작업을 수행 할 수 있다는 것입니다. 당신이 알아야 할 유일한 것은 대부분의 시간 동안 디스크에서 데이터를 읽으려고하기 때문에 첫 번째 시도를 신뢰할 수 없다는 것입니다. 두 번째 시도는 RAM의 캐시 된 데이터를 사용하기 때문입니다. 그래서 각 쿼리를 두 번 시도해보십시오.

+1

"빠른"쿼리가 많은 임시 공간을 사용하면 어떻습니까? 프로덕션 환경으로 이동 한 후 해당 임시 공간을 사용하는 여러 사용자가 있으면 "빠른"쿼리는 페이징을 시작할 수 있기 때문에 느려질 수 있습니다. 쿼리 속도를 결정할 때의 문제는 대답이 항상 "의존적"이라는 것입니다. Explain 계획을 사용하고, 사용 된 임시 공간을 기록한 다음 서버 환경을 평가하는 것이 가장 좋습니다. 그 일이 잘하기는 힘들지만, 나는 아직도 배우고 있습니다. – user158017

+1

설명 계획은 좋지만 먼저 읽을 수 있어야합니다. 두 쿼리 사이에서 선택을해야하고 평생 동안 계획 도구를 설명하지 못했다면 중첩 된 루프/해시 조인/인덱스 범위 스캔/인덱스 FFS가 실제로 도움이되지 않습니다. 가용 한 주를 확보했다면 먼저 오라클 성능 튜닝을 배우고 나중에 쿼리를 작성하십시오. – jva

3

OTN에서 Randolf Geist와 저는 성능 측정 방법에 대한 두 개의 게시물을 작성했습니다. 이러한 스레드에 표시된대로 수행하면 더 나은 정보를 선택할 수있는 정보가 수집됩니다.

전체 버전을 보려면 Randolf's을 방문하십시오. 당신이 짧은 버전을 원하는 경우

, mine를 방문하십시오

두 스레드가 계획을 설명하는 사용 시간이 소요되는 위치를 확인하는 추적하는 방법을 설명합니다. 그렇다면 당신이 정확히 "더 나은"자격을 갖추는 것은 당신에게 달려 있습니다. 가장 짧은 경과 시간, 사용 된 리소스의 최소 양 또는 최소 래치 수 또는 다른 값이 될 수 있습니다.

희망이 도움이됩니다.

감사합니다. Rob.

1

나는 EXPLAIN PLAN이 유일한 방법입니다. 낮은 비용 (COST라는 열이 있어야한다는 설명 계획을 본다면)이 더 좋다고 가정하여 시작하십시오. 그러나 더 많이 배우기 위해서는 그것에 대해 읽어야합니다. 어쩌면 DBA를 통해 채팅 할 수 있습니까? 귀하의 데이터와 질의가 없으면 추가로 조언하기가 어렵습니다.

오라클 개발과 관련이있는 경우 Tom Kyte (Google him) 또는 the Ask Tom website을 통해 검색을 시작하는 것이 좋습니다. 정말로 참여하고 싶다면

쿼리를 몇 번 실행하는 것은 꽤 나쁜 생각입니다. 단지 Explain 계획의 비용이 당신에게 가장 좋은 쿼리를 알려주는 것과 같습니다. 쿼리가 차지하는 리소스와 프로덕션 시스템에 미치는 영향을 고려해야합니다.

쿼리가 호출되는 빈도에 따라 쿼리의 성능을 얼마나 잘 추적 할 수 있는지가 결정됩니다. (미안하지만 유감스럽게 생각합니다.) 쿼리가 일주일에 한 번만 실행되고 을 실행하는 데 아무런 영향을주지 않고 잠시 시간을 내면 쿼리를 최적화해야합니까? 논리적으로 더 쉽게 수행 할 수있는 쿼리를 유지 관리가 쉽게 사용할 수 있습니까? 쿼리가 다음 여러 번에게 두 번째라고하는 경우

당신은 완전히 설명 할 계획을 이해하고, 당신은 당신이 그 쿼리 1과 쿼리를 언급

관련 문제