본문으로 건너뛰기

SQL 분석

정보

이 문서는 Oracle 모니터링 V2를 기준으로 작성했습니다. Oracle 모니터링 V1 문서는 다음 문서를 참조하세요.

홈 화면 > 프로젝트 선택 > 분석 > SQL 분석

데이터베이스에서 실행되는 SQL 문을 분석하여 성능 문제를 진단하는 데 유용한 자료를 제공합니다. SQL 분석 메뉴는 두 가지 주요 탭으로 구성되어 있습니다.

  • Access Statistics: 성능 저하의 원인이 될 수 있는 Full Scan이 발생한 SQL을 확인할 수 있습니다.

  • Plan Change History: 동일한 SQL ID를 가진 SQL 문이 옵티마이저에 의해 다른 실행 플랜으로 변경된 경우를 감지합니다. 이는 성능에 영향을 줄 수 있으므로 모니터링이 필요합니다.

Access Statistics

성능 저하의 원인이 될 수 있는 Full Scan이 발생한 SQL을 확인할 수 있습니다. 시간별, 유형별 Full Scan 발생 횟수를 확인할 수 있습니다. 이를 통해 Full Scan을 자주 발생시키는 SQL 문을 최적화하고, 불필요한 Full Scan을 줄임으로서 자원 사용량을 최적화할 수 있습니다. 또한 Full Scan을 Index Scan으로 대체해 쿼리 성능을 향상시키는 방법을 고려해 보세요.

AccessStatistics

화면 위에서 조회 시간 및 대상을 선택하세요. 시간인스턴스 옵션을 설정한 다음 검색 아이콘 버튼을 선택하세요. 필요한 경우 필터 옵션을 설정해 원하는 조회 결과를 필터링할 수 있습니다.

  • Access Count: 시간대별 Full Scan 발생 횟수를 확인할 수 있는 막대 그래프 차트입니다. 특정 시간대를 선택하면, 선택한 시간에 수행된 SQL 목록이 화면 아래 목록과 오른쪽 Operation Count 차트에 표시됩니다.

  • Operation Count: Full Scan이 발생한 유형과 그 수를 확인할 수 있습니다. 각 막대에 마우스를 오버하면 오브젝트 이름을 확인할 수 있습니다.

    Operation Count

쿼리 자세히 보기

화면 아래에 SQL 목록에서 query 컬럼 항목을 선택하면 SQL 상세 창이 나타납니다. SQL 쿼리문과 Plan 정보를 확인할 수 있습니다.

SQL 상세

  • SQL 통계 보기: 해당 SQL 쿼리문과 관련한 통계 정보를 확인할 수 있는 SQL 통계 메뉴로 이동할 수 있습니다.
  • Runtime Plan: 선택된 SQL 쿼리의 실행 계획과 런타임 정보를 제공합니다. 실행 횟수, 평균 실행 시간, 평균 물리적 읽기 등 세부 정보를 제공합니다.

  • Explain Plan: 옵티마이저가 예측한 실행 계획을 보여줍니다. 비용, 작업, 객체 이름, 카디널리티 등의 정보를 제공합니다.

  • Plan History: 데이터베이스에서 실행된 SQL 쿼리의 실행 계획에 대한 이력을 확인할 수 있습니다.

  • Bind Capture: 데이터베이스에서 실행된 SQL 쿼리에 사용된 바인드 변수의 값을 확인할 수 있습니다. 이를 통해 쿼리 실행의 실제 내용을 확인할 수 있습니다.

    노트

    실시간 실행된 bind 값이 아닌 데이터베이스에 캡처된 값(v$sql_bind_capture)입니다. 건수가 많으면 100개까지 표시합니다.

조회 결과 필터링하기

조회한 SQL 목록에서 필터 옵션을 통해서 Full Scan 또는 Index Scan 기준으로 결과를 필터링할 수 있습니다.

  1. 필터 옵션을 선택하세요.

    필터

  2. 필터 수정하기에서 FULL 또는 INDEX 항목을 선택하세요.

  3. 적용 버튼을 선택하세요.

  4. 선택한 조건을 SQL 목록에에 반영하려면 검색 아이콘 버튼을 선택하세요.

노트

Full Scan, Index Scan을 모두 검색하려면 필터 수정하기에서 FULL, INDEX 옵션을 모두 선택하세요. 또는 더하기 아이콘 버튼을 선택해 필터 옵션을 추가할 수도 있습니다.

Plan Change History

동일한 SQL ID를 가진 SQL 문이 옵티마이저에 의해 다른 실행 플랜으로 변경된 경우를 감지합니다. 이는 성능에 영향을 줄 수 있으므로 모니터링이 필요합니다. 플랜 변경으로 인한 성능 변화를 감지하고 대응하여 불필요한 플랜 변경을 식별하여 SQL 성능의 일관성을 유지할 수 있습니다.

Plan Change History

화면 위에서 조회 시간 및 대상을 선택하세요. 시간인스턴스 옵션을 설정한 다음 검색 아이콘 버튼을 선택하세요.

Plan Change Count 섹션은 시간대별 플랜 변경이 일어난 횟수를 확인할 수 있는 막대 그래프 차트입니다. 특정 시간대를 선택하면, 선택한 시간의 플랜 변경 목록을 표시합니다.

Plan 변경 사항 확인하기

화면 하단의 목록에서 특정 변경 항목을 선택하면 화면 아래에 플랜 변경 전후의 세부 내용을 확인할 수 있는 Query 섹션이 표시됩니다. 플랜 변경 전후의 차이를 상세히 비교함으로써 어떤 변경이 성능에 영향을 미쳤는지 파악할 수 있습니다.

Plan Change History

  • Query 섹션에서 오른쪽 상단의 새창보기 아이콘 버튼을 선택하면 해당 섹션을 새창으로 열어 확인할 수 있습니다.

  • Query 섹션을 닫으려면 오른쪽 상단의 닫기 아이콘 버튼을 선택하세요.

조회 결과 필터링하기

필터 조건 추가하기

조회된 결과에서 다음 항목의 값을 기준으로 원하는 결과를 필터링할 수 있습니다.

정보
  • sql_id

  • sql_hash_value

  • after_plan_hash_value

  • before_plan_hash_value

  1. 필터 옵션에서 버튼을 선택하세요.

    조건 추가하기

  2. 필터 키 항목에서 원하는 필터링 기준을 선택하세요.

    • 선택한 항목의 값이 문자에 해당한다면 포함(파란색), 미포함(빨간색) 조건을 선택할 수 있습니다.

      example

    • 선택한 항목의 값이 숫자에 해당한다면 ==(같음), >=(보다 크거나 같음), <=(보다 작거나 같음) 조건을 선택할 수 있습니다.

  3. 조건 항목에서 조건을 선택하세요.

  4. 조건과 일치시킬 문자열 또는 숫자를 입력하세요.

  5. 적용 버튼을 선택하세요.

노트
  • 필터링 조건을 추가하려면 추가 버튼을 선택한 다음 1 ~ 5의 과정을 반복하세요. 추가한 조건은 AND(&&) 조건으로 적용됩니다.

  • 조건 추가 중 일부 항목을 삭제하려면 필터 조건 오른쪽에 삭제 아이콘 버튼을 선택하세요. 전체 조건을 삭제하려면 삭제 아이콘 전체 삭제 버튼 선택하세요.

  • 필터 옵션에 적용된 조건을 빠르게 삭제하려면 버튼을 선택하세요.

필터 조건 수정하기

필터 수정하기

필터 옵션에 적용된 항목을 클릭하세요. 필터 수정하기 창이 나타나면 원하는 항목을 수정하고 적용 버튼을 선택하세요.