DB 성능 최정화를 위한 SQL 실전 가이드 — 『SQL 레벨업』

2025. 9. 7. 21:07·도서리뷰/전공

책 한눈에 보기

항목 내용
도서명 SQL 레벨업
저자 미크
키워드 SQL 최적화, DBMS 아키텍처, 실행 계획, 인덱스, 서브쿼리, 데이터 모델링


1. DBMS 아키텍처

  • 다양한 DB 제품이 존재하지만, RDBMS의 기본 구조는 동일하며 데이터 영구 저장이라는 목적을 공유함.
  • 쿼리 평가 엔진은 SQL을 분석해 실행 계획을 세우며, DBMS 성능의 핵심 모듈.
  • 버퍼 매니저는 전용 메모리 영역인 버퍼를 관리해 디스크 I/O를 최소화함.
  • 디스크 용량 매니저는 데이터를 어디에, 어떻게 저장할지를 제어함.
  • DBMS 메모리는 데이터 캐시와 로그 버퍼로 나뉨.
  • 실행 계획은 EXPLAIN EXTENDED SQL 구문으로 확인 가능.

2. SQL 기초

  • 뷰(View)는 SELECT 구문을 데이터베이스 안에 저장해 재사용성을 높임.
  • CASE식은 절차지향 언어의 switch와 비슷하게 조건 분기 가능.
  • WHERE은 개별 레코드 조건, HAVING은 집합 조건 지정에 사용.
  • UNION 사용 시 조건 분기를 잘못 설계하면 성능 저하 발생 가능.

3. SQL의 조건 분기

  • UNION 기반 조건 분기는 여러 SELECT가 실행되어 I/O 비용 증가 위험이 있음.
  • 반면, 여러 테이블 검색 결과를 합쳐야 하는 경우에는 UNION이 효과적인 도구가 될 수 있음.

4. 집약과 자르기

  • 집약 함수: COUNT, SUM, AVG, MAX, MIN 등.
  • 자르기(Slicing)는 테이블을 부분 집합으로 분할하는 작업.
  • GROUP BY 구로 생성된 집합을 수학적으로는 파티션(Partition)이라 부름.
  • GROUP BY는 단순 필드뿐만 아니라 복잡한 수식 기준으로도 사용 가능.

5. 결합

  • INNER JOIN은 결합 조건 필수.
  • 외부 결합(LEFT/RIGHT/FULL)은 기준 테이블 방향에 따라 차이가 있음.
  • 자기 결합(Self Join)은 같은 테이블에 별칭을 붙여 다른 테이블처럼 활용.
  • Hash 알고리즘은 균일한 값 분포를 보장하여 JOIN 효율성을 높임.

6. 서브쿼리

  • 서브쿼리는 뷰와 유사하지만 일시적이며 실행 중에만 존재.
  • 성능 문제는 데이터를 물리적으로 저장하지 않는 특성에서 발생.
  • 윈도우 함수로 대체하면 성능이 개선될 가능성이 높음.
  • 사용 시에는 결합 대상 레코드 수를 줄여 성능 최적화 필요.

7. 갱신과 데이터 모델

  • 갱신 SQL은 강력하지만 실제로는 검색 SQL만큼 주목받지 못함.
  • 데이터 모델 차원에서 설계하면 성능 문제를 근본적으로 해결 가능.
  • 에릭 레이먼드:

"현명한 데이터 구조 + 단순한 코드"가 "잘못된 데이터 구조 + 복잡한 코드"보다 낫다.

  • 데이터 모델이 테이블 구조를 결정하며, 그 반대는 아님.

8. 인덱스 사용

  • 가장 널리 쓰이는 인덱스 구조는 B-tree.
  • 성능 지표 중 하나인 클러스터링 팩터는 데이터 물리적 밀집도를 나타냄.
  • 인덱스 선택 기준:
    1. 카디널리티 높음 → 값이 다양할수록 인덱스 효율적.
    2. 선택률 낮음 → 조건으로 적은 레코드만 추출될수록 성능이 좋음.
  • 인덱스가 적용되지 않는 경우:
    • LIKE 중간·후방 일치
    • 인덱스 필드 연산
    • IS NULL, NOT IN, <> 등 부정 조건
  • 대체 방법: UI 설계 조정, 데이터 마트 활용 등.

💡 Quick Insight

  • DBMS 핵심: 쿼리 엔진·버퍼 매니저·실행 계획
  • WHERE vs HAVING: 레코드 조건 ↔ 집합 조건
  • UNION: 성능 리스크, 필요 시 신중히 사용
  • GROUP BY: 데이터 파티션 생성
  • JOIN: 내부/외부/자기 결합, Hash 알고리즘 활용
  • 서브쿼리: 편리하지만 성능 리스크 존재
  • 갱신 SQL: 데이터 모델링이 근본 해법
  • 인덱스: 카디널리티↑, 선택률↓일수록 효과적

마무리 생각

SQL 최적화는 단순히 구문을 줄이는 문제가 아니라, 데이터 모델링·인덱스·실행 계획까지 아우르는 종합적인 작업임을 알 수 있었다.
쿼리 효율화를 넘어 데이터 구조를 올바르게 설계하는 것이야말로 성능 최적화의 핵심이다.

'도서리뷰 > 전공' 카테고리의 다른 글

컴퓨터 네트워크의 동장 방식 이해 — 『TCP/IP 쉽게, 더 쉽게』  (0) 2025.09.07
SQL은 무엇인가 — 『SQL 첫걸음』  (0) 2025.09.07
네트워크 초보 입문 — 『Network 쉽게, 더 쉽게』  (0) 2025.09.07
JSP 게시판, 웹 사이트 개발 및 파일 업로드 — 『JSP 게시판 만들기, 웹 사이트 개발하기, 파일 업로드』  (0) 2025.09.07
자바스크립트의 동작원리와 구성 — 『JavaScript+jQuery 정복』  (0) 2025.09.07
'도서리뷰/전공' 카테고리의 다른 글
  • 컴퓨터 네트워크의 동장 방식 이해 — 『TCP/IP 쉽게, 더 쉽게』
  • SQL은 무엇인가 — 『SQL 첫걸음』
  • 네트워크 초보 입문 — 『Network 쉽게, 더 쉽게』
  • JSP 게시판, 웹 사이트 개발 및 파일 업로드 — 『JSP 게시판 만들기, 웹 사이트 개발하기, 파일 업로드』
coco dev
coco dev
coffee-code 님의 블로그 입니다.
  • coco dev
    Coffee & Code
    coco dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • 도서리뷰 (25)
        • 일반 (7)
        • 전공 (18)
      • 항해99 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스위치
    웹개발
    프론트엔드
    개미 생태계
    TCP/IP 기초
    css
    초개체 사회
    vlan
    자바스크립트
    개미사회 경제 문화 정치
    Order 표기법
    DOM
    머신러닝
    BOM
    페로몬 소통
    JavaScript
    라우터
    네트워크 계층 구조
    알고리즘 입문
    개미 연구
    웹표준
    방화벽
    순차검색 이진검색
    MySQL
    html
    네트워크 보안
    라우팅
    데이터베이스
    php
    계산량 분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
coco dev
DB 성능 최정화를 위한 SQL 실전 가이드 — 『SQL 레벨업』
상단으로

티스토리툴바