본문으로 건너뛰기

SQL 통계

커버 이미지

데이터베이스 쿼리 성능 분석​


목차​

  1. 개요
  2. 주요 지표
  3. 화면 구성
  4. 상호작용 기능
  5. 예외 상황 처리
  6. 연관 메뉴
  7. 실전 예시

1. 개요​

SQL 통계란?​

SQL 쿼리별 실행 횟수, 응답시간, 에러율을 집계 분석하는 도구

언제 사용하나요?​

  • 느린 SQL을 식별할 때
  • 데이터베이스 성능 병목을 파악할 때
  • SQL 최적화 우선순위를 정할 때
  • 특정 쿼리의 에러율을 모니터링할 때

해결하는 문제​

SQL 쿼리별로 집계된 성능 데이터를 통해 어떤 쿼리가 가장 많이 실행되는지, 느린 쿼리는 무엇인지 신속하게 파악할 수 있습니다.


2. 주요 지표​

핵심 성능 지표​

지표의미정상 범위
총 실행횟수기간 내 총 SQL 실행 횟수쿼리별 상이
총 에러수기간 내 총 SQL 에러 횟수0 또는 최소화
평균 응답시간SQL별 평균 실행 시간100ms 이하
에러율전체 실행 중 에러 비율1% 이하

3. 화면 구성​

ObjectSelector란?​

모니터링할 오브젝트(서버, 서비스, 인스턴스)를 선택하는 컴포넌트

위치: 화면 좌측 사이드바

주요 기능:

  • 오브젝트 트리 탐색
  • 다중 오브젝트 선택
  • 오브젝트별 필터링

사용법:

단계 1: ObjectSelector 버튼을 클릭하세요

단계 2: 트리에서 원하는 오브젝트를 체크하세요 (다중 선택 가능)

단계 3: 선택된 오브젝트 수가 버튼에 표시됩니다

오브젝트 상태 정보:

  • 전체 실행 개수: 현재 실행 중인 오브젝트 수
  • 라이선스 없는 개수: 라이선스 없이 실행 중인 오브젝트 수
  • 전체 정지 개수: 정지된 오브젝트 수

3계층 레이아웃 구조:

1층 (검색 조건 영역)​

  • 날짜 범위 선택
  • 서버 선택 드롭다운
  • 검색 버튼
  • 리셋 버튼

2층 (오브젝트 목록 영역)​

  • ObjectSelector (오브젝트 목록): 모니터링 대상 오브젝트 목록
  • noPadding 옵션 적용 (최대 공간 활용)
  • 오브젝트별 필터링 지원

3층 (컨텐츠 영역)​

  • 상단 요약 정보: 총 실행횟수, 총 에러수, 평균 응답시간, 에러율
  • 하단 차트 영역: 일별 차트 + 상세 테이블 (동적 6:6 분할)
    • 일별 차트: 날짜별 SQL 실행 추이
    • 상세 테이블: SQL별 상세 통계 (토글 가능)

특징:

  • ThreeLayerLayout 기반 3계층 구조
  • 차트/테이블 동적 분할 (6:6)
  • fill 옵션 적용 (남은 공간 채움)

초기 상태 안내​

⚠️ 중요 사항

⚠️ 중요: 오브젝트를 선택하지 않으면 화면이 비어있는 것이 정상입니다.


빈 화면인 경우:

  1. ObjectSelector에서 모니터링할 오브젝트를 선택했는지 확인하세요
  2. 오브젝트가 등록되어 있는지 확인하세요 데이터가 표시되지 않는 경우:
  3. 선택한 오브젝트가 데이터를 수집 중인지 확인하세요
  4. 시간 범위를 조정해 보세요


4. 상호작용 기능​

날짜 범위 검색​

단계 1: 1층 검색 조건 영역에서 날짜 범위를 선택하세요

단계 2: 서버를 선택하세요

단계 3: "검색" 버튼을 클릭하세요

오브젝트 필터링​

단계 1: 2층 오브젝트 목록 영역에서 필터링할 오브젝트를 선택하세요

단계 2: 다중 선택 가능

단계 3: 선택된 오브젝트의 통계만 3층 컨텐츠 영역에 표시됩니다

상세 테이블 토글​

단계 1: 3층 컨텐츠 영역에서 상세 테이블 토글 버튼을 클릭하세요

단계 2: 차트와 테이블이 6:6 비율로 분할됩니다

단계 3: 다시 클릭하면 차트가 전체 화면을 차지합니다

일별 차트 확인​

  • X축: 날짜
  • Y축: 실행횟수
  • 범례: SQL별 색상 구분
  • 차트 위젯: 라인/바 차트 혼합 지원

특수 기능​

SQL 클릭 → SQL 뷰어 다이얼로그 연동:

  • 상세 테이블에서 특정 SQL 행을 클릭하면 SQL 뷰어 다이얼로그가 열립니다
  • 구문 포맷팅: SQL 구문을 보기 쉽게 자동 포맷팅
  • 바인드 변수: PreparedStatement 바인드 변수 확인
  • 복사 기능: 포맷팅된 SQL을 클립보드에 복사

사용 예시:

  1. 상세 테이블에서 느린 SQL 찾기
  2. 해당 SQL 행 클릭 → SQL 뷰어 다이얼로그 오픈
  3. 포맷팅된 SQL 구문 확인 및 복사
  4. 튜닝 및 최적화 작업에 활용

5. 예외 상황 처리​

⚠️ 중요 사항

⚠️ 자주 발생하는 문제​

문제: 데이터가 표시되지 않음

원인: 날짜 범위가 너무 짧거나 오브젝트가 SQL 데이터를 수집하지 않음

해결: 날짜 범위를 넓히고 오브젝트 데이터 수집 상태를 확인하세요


문제: 특정 SQL만 표시됨

원인: 오브젝트 필터링이 활성화됨

해결: ObjectSelector에서 필터를 초기화하거나 모든 오브젝트를 선택하세요


문제: 상세 테이블에서 너무 많은 SQL이 표시됨

원인: SQL 수가 너무 많음

해결: 상세 테이블의 검색/필터 기능을 활용하거나 테이블을 닫고 차트만 확인하세요


문제: 느린 SQL이 표시되지 않음

원인: SQL 수집 레벨 설정이 낮음

해결: 수집 서버 설정에서 SQL 수집 레벨을 높이세요


6. 연관 메뉴​

함께 사용하면 좋은 메뉴:

메뉴함께 사용하는 이유
URL 통계특정 서비스의 SQL 패턴 파악
성능 조회느린 SQL 상세 프로파일링
트랜잭션 조회SQL 실행 트랜잭션 추적

7. 실전 예시​

시나리오: 배치 작업 SQL 최적화​

상황: 일일 집계 배치가 2시간 소요

해결 과정:

  1. SQL 통계 1층에서 배치 실행 시간대 선택 (새벽 2-4시)
  2. 서버 선택 후 검색 실행
  3. 3층 요약 정보에서 총 실행횟수와 평균 응답시간 확인
  4. 일별 차트에서 특정 SQL이 주요 병목임 확인
  5. 상세 테이블 정렬하여 응답시간이 긴 SQL TOP 10 확인
  6. "INSERT INTO daily_stats" 쿼리가 40분 소요하는 것 발견
  7. EXPLAIN 분석 후 인덱스 추가
  8. SQL 통계에서 개선 효과 확인

결과: 배치 시간 2시간 → 20분으로 단축 (83% 개선)


이 페이지가 도움이 되었나요?