SQL 통계

데이터베이스 쿼리 성능 분석
목차
- 개요
- 주요 지표
- 화면 구성
- 상호작용 기능
- 예외 상황 처리
- 연관 메뉴
- 실전 예시
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 옵션 적용 (남은 공간 채움)
초기 상태 안내
⚠️ 중요 사항
⚠️ 중요: 오브젝트를 선택하지 않으면 화면이 비어있는 것이 정상입니다.
빈 화면인 경우:
- ObjectSelector에서 모니터링할 오브젝트를 선택했는지 확인하세요
- 오브젝트가 등록되어 있는지 확인하세요 데이터가 표시되지 않는 경우:
- 선택한 오브젝트가 데이터를 수집 중인지 확인하세요
- 시간 범위를 조정해 보세요
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을 클립보드에 복사
사용 예시:
- 상세 테이블에서 느린 SQL 찾기
- 해당 SQL 행 클릭 → SQL 뷰어 다이얼로그 오픈
- 포맷팅된 SQL 구문 확인 및 복사
- 튜닝 및 최적화 작업에 활용
5. 예외 상황 처리
⚠️ 중요 사항
⚠️ 자주 발생하는 문제
문제: 데이터가 표시되지 않음
원인: 날짜 범위가 너무 짧거나 오브젝트가 SQL 데이터를 수집하지 않음
해결: 날짜 범위를 넓히고 오브젝트 데이터 수집 상태를 확인하세요
문제: 특정 SQL만 표시됨원인: 오브젝트 필터링이 활성화됨
해결: ObjectSelector에서 필터를 초기화하거나 모든 오브젝트를 선택하세요
문제: 상세 테이블에서 너무 많은 SQL이 표시됨원인: SQL 수가 너무 많음
해결: 상세 테이블의 검색/필터 기능을 활용하거나 테이블을 닫고 차트만 확인하세요
문제: 느린 SQL이 표시되지 않음원인: SQL 수집 레벨 설정이 낮음
해결: 수집 서버 설정에서 SQL 수집 레벨을 높이세요
6. 연관 메뉴
함께 사용하면 좋은 메뉴:
| 메뉴 | 함께 사용하는 이유 |
|---|---|
| URL 통계 | 특정 서비스의 SQL 패턴 파악 |
| 성능 조회 | 느린 SQL 상세 프로파일링 |
| 트랜잭션 조회 | SQL 실행 트랜잭션 추적 |
7. 실전 예시
시나리오: 배치 작업 SQL 최적화
상황: 일일 집계 배치가 2시간 소요
해결 과정:
- SQL 통계 1층에서 배치 실행 시간대 선택 (새벽 2-4시)
- 서버 선택 후 검색 실행
- 3층 요약 정보에서 총 실행횟수와 평균 응답시간 확인
- 일별 차트에서 특정 SQL이 주요 병목임 확인
- 상세 테이블 정렬하여 응답시간이 긴 SQL TOP 10 확인
- "INSERT INTO daily_stats" 쿼리가 40분 소요하는 것 발견
- EXPLAIN 분석 후 인덱스 추가
- SQL 통계에서 개선 효과 확인
결과: 배치 시간 2시간 → 20분으로 단축 (83% 개선)
이 페이지가 도움이 되었나요?