itsource

오라클에서 쿼리 성능을 측정하는 방법

mycopycode 2023. 10. 9. 22:33
반응형

오라클에서 쿼리 성능을 측정하는 방법

저는 Oracle db를 처음 접합니다.동일한 결과 세트를 반환하는 2개의 쿼리가 있습니다.저는 그들 각각의 성과를 측정하고 더 좋은 것을 선택하고 싶습니다.Oracle SQL 개발자를 사용하여 어떻게 수행합니까?특정 도구가 통계를 제공한다는 글을 읽은 기억이 납니다.이 통계를 읽는 방법에 대한 조언이 있습니까?

업데이트: 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

저는 쿼리 1보다 쿼리 2가 더 낫다고 판단할 수 있습니다.디스크, 쿼리 및 현재 매개 변수가 무엇을 의미하는지에 대한 도움말이 있습니까?

SQL 편집기 위에 "계획 설명"이라는 버튼이 있습니다.이 도구는 각 경로의 비용과 인덱스 및 파티션을 사용하는 방법을 알려줍니다.참고로 오류가 발생할 수 있습니다. DBA는 사용자 계정에 대한 기능을 설정해야 합니다. "추적"이라고 생각하지만 이 점에서는 잘못된 것일 수 있습니다.execute 문 출력을 읽는 것은 처음에는 힘들 수 있지만, 좋은 SQL을 작성하는 데 도움이 되는 좋은 도구입니다.

유감스럽게도 '설명 계획'만이 유일한 방법입니다.먼저 비용이 적게 드는 것이 더 낫다는 가정으로 시작합니다(설명 계획서를 보면 비용이라는 열이 있어야 함). 하지만 더 많은 것을 배울 수 있도록 관련 내용을 읽어봐야 합니다.거기서 대화할 수 있는 DBA가 있나요?데이터와 쿼리가 없으면 더 이상 조언하기가 어렵습니다.

Oracle 개발과 관련된 모든 것은 Tom Kyte(Google him)가 작성하거나 질문 톰 웹 사이트를 통해 검색하는 것이 좋습니다.당신이 정말로 참여하고 싶다면,

쿼리를 몇 번만 실행하는 것은 매우 나쁜 생각입니다. 이는 설명 계획의 비용이 최상의 쿼리를 제공한다는 것을 받아들이는 것과 같습니다.쿼리가 차지하는 리소스가 무엇인지, 따라서 프로덕션 시스템에 어떤 영향을 미칠 수 있는지를 고려해야 합니다.

쿼리가 호출되는 빈도에 따라 쿼리의 성능을 얼마나 잘 추적해야 하는지에 영향을 미칩니다(순수자에게는 미안하지만 실제로는 그렇지 않습니다).쿼리가 일주일에 한 번만 실행되고 다른 영향을 주지 않고 실행하는 데 1분이 걸리는 경우 해당 쿼리를 최적화해야 합니까?논리적으로 더 쉽게 따라 할 수 있는 쿼리를 유지보수가 더 쉽게 사용할 수 있습니까?

쿼리가 1초에 여러 번 호출되는 경우 설명 계획을 완전히 이해하고 쿼리를 최상의 성능으로 최적화하는 방법에 대해 자세히 이해해야 합니다.

기본 답변 - 각 쿼리를 여러 번 실행하고 어떤 쿼리가 더 빠른지 확인합니다.가장 좋은 부분 - Oracle 성능에 대한 지식 없이도 이 작업을 수행할 수 있습니다.한 가지 알아야 할 것은 첫 번째 시도는 디스크에서 데이터를 읽는 반면 두 번째 시도는 RAM에서 캐시된 데이터를 사용하기 때문에 신뢰할 수 없다는 것입니다.그렇기 때문에 각각의 쿼리를 여러 번 시도합니다.

랜돌프 가이스트와 저는 OTN에 성능을 측정하는 방법에 대해 두 개의 글을 올렸습니다.스레드에 표시된 대로 수행하면 더 나은 스레드를 선택할 수 있는 정보를 수집하게 됩니다.

풀 버전을 원하시면 랜돌프 매장을 방문해 보세요.

짧은 버전을 원하시면 제 버전을 방문해보세요.

두 스레드 모두 설명 계획을 사용하는 방법과 시간이 어디에 사용되는지 확인하는 추적 방법을 설명합니다.그렇다면 당신이 정확히 "더 나은" 자격을 갖춘 것을 결정하는 것은 당신에게 달려 있습니다.이것은 경과 시간이 가장 짧거나, 사용한 리소스의 양이 가장 적거나, 래치의 수가 가장 적거나, 다른 것일 수 있습니다.

도움이 되길 바랍니다.

안녕, 롭.

언급URL : https://stackoverflow.com/questions/1312663/how-to-measure-performance-of-query-in-oracle

반응형