SQL 성능 튜닝 매뉴얼

2025. 3. 28. 15:28·🔹DBMS
728x90
SMALL

1. 튜닝 정의

항목 설명
튜닝(Tuning) 데이터베이스 또는 SQL 쿼리의 성능을 최적화하여 더 빠르고 효율적으로 작동하도록 개선하는 작업

2. 튜닝 종류 및 설명

튜닝 항목 설명 예시
SQL 튜닝 느리거나 비효율적인 SQL 문을 분석하여 재작성함 SELECT * 대신 필요한 컬럼만 조회
인덱스 튜닝 검색 속도 향상을 위해 적절한 인덱스를 생성/제거 WHERE name = '홍길동' → name 컬럼 인덱스 생성
조인 튜닝 서브쿼리 또는 비효율적인 JOIN을 개선 IN (SELECT...) 대신 JOIN 사용
통계정보 갱신 옵티마이저가 적절한 실행 계획을 세우도록 최신 통계 유지 ANALYZE TABLE users;
DB 구조 튜닝 테이블 구조 최적화 (정규화/비정규화, 파티셔닝 등) 큰 테이블을 연도별 파티션으로 분리
서버/메모리 튜닝 DB 설정값 조정 (캐시, 커넥션 풀 등) MySQL의 innodb_buffer_pool_size 조정

3. 각 튜닝 항목별 상세 예시

3-1. SQL 튜닝

-- 비효율적인 쿼리
SELECT * FROM orders WHERE TO_CHAR(order_date, 'YYYY-MM') = '2024-03';

-- 개선된 쿼리
SELECT order_id, order_date FROM orders
WHERE order_date BETWEEN DATE '2024-03-01' AND DATE '2024-03-31';

3-2. 인덱스 튜닝

-- 인덱스 미사용 쿼리
SELECT * FROM users WHERE email = 'test@example.com';

-- 인덱스 생성
CREATE INDEX idx_users_email ON users(email);

3-3. 조인 튜닝

-- 서브쿼리 방식
SELECT name FROM customers WHERE id IN (SELECT customer_id FROM orders);

-- JOIN 방식
SELECT DISTINCT c.name FROM customers c
JOIN orders o ON c.id = o.customer_id;

3-4. 통계 정보 갱신

-- MySQL
ANALYZE TABLE users;

-- PostgreSQL
VACUUM ANALYZE users;

3-5. DB 구조 튜닝

-- 단일 테이블 (비효율적)
SELECT * FROM logs;

-- 파티셔닝 예시 (PostgreSQL)
CREATE TABLE logs_2024 PARTITION OF logs FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');

3-6. 서버/메모리 튜닝 (MySQL 예시)

# my.cnf 설정 예시
innodb_buffer_pool_size = 1G  # 메모리 캐시 영역 증가
max_connections = 200         # 동시 접속자 수 증가

4. 참고 사항

  • 튜닝은 성능 향상뿐 아니라 리소스 절약, 장애 대응 시간 단축에도 효과적
  • 실행 계획(EXPLAIN), 모니터링 툴, 쿼리 로그 등을 함께 활용하면 분석이 수월
  • DBMS마다 문법과 성능 특성이 다르므로 환경에 맞는 튜닝 전략이 필요
LIST

'🔹DBMS' 카테고리의 다른 글

📘 Oracle DB Lock 문제 대응 가이드  (0) 2025.03.28
'🔹DBMS' 카테고리의 다른 글
  • 📘 Oracle DB Lock 문제 대응 가이드
terranbin
terranbin
Studying Computer Science
  • terranbin
    Engineer
    terranbin
  • 전체
    오늘
    어제
    • 분류 전체보기 (129)
      • ☁️Cloud (42)
        • AWS (38)
        • MS Azure (4)
      • 🐳 Infra (1)
        • System (12)
        • DRBD (3)
      • 🔌Network (8)
      • 🔹Storage (8)
      • 🔹Kubernetes (15)
      • 🔹 DevOps (8)
      • 🔹Study (4)
      • 🔹Install (6)
      • 🔹ETC (2)
      • 🔹PostMan (6)
      • 🔹Openstack (3)
      • 🔹RcloneView (6)
      • 🔹Test (0)
      • 🔹Debug (2)
      • 🔹DBMS (2)
  • 블로그 메뉴

    • 홈
  • 링크

    • sungbin
    • Github
  • 공지사항

  • 인기 글

  • 태그

    rocky8
    Google Drive
    network
    설치
    distributed load testing
    S3
    OpenStack
    terraform
    postman
    rcloneview
    EBS
    aws dlt
    centos7
    kubernetes
    EC2
    rocky9
    SAA
    AWS
    ceph
    kubectl
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
terranbin
SQL 성능 튜닝 매뉴얼
상단으로

티스토리툴바