본문으로 건너뛰기

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% 개선)


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