데이터베이스 튜닝
설명 영상 데이터베이스 튜닝 · 2:41
왜 배우는가: 데이터베이스 튜닝은 데이터 용량 증가로 응답시간과 처리량 문제가 커지면서 실무에서 가장 먼저 다뤄지는 성능 관리 활동이다. 정보관리기술사 시험에서는 튜닝의 개념, 설계 단계 기법, 힌트 유형을 묻는 문제로 반복 출제되어 개념을 정확히 정리해 두어야 한다.
출제 이력: 제127회 2교시 3번, 제95회 3교시 2번
1. 한 줄 정의와 핵심 키워드
데이터베이스 튜닝은 DB 설계, DBMS 환경, SQL을 단계별로 조정하여 데이터베이스 시스템의 성능을 향상시키는 일련의 활동이다.
핵심 키워드
- 데이터베이스 튜닝(Database Tuning): 설계·환경·SQL 단계의 성능 최적화 활동
- 설계 튜닝(Design Tuning): 모델링, 인덱스, 파티셔닝을 성능 관점에서 설계
- DBMS 튜닝(Environment Tuning): 메모리, 블록 크기, 버퍼·캐시 크기 조정
- SQL 튜닝(SQL Tuning): SQL 작성, 조인 방식, 실행 계획 개선
- 옵티마이저(Optimizer): 실행 계획을 비용 기준으로 선택하는 DBMS 핵심 엔진
- 힌트(Hint): 옵티마이저에게 실행 계획을 지시하는 구문
- 병목(Bottleneck)과 경합(Contention): 성능 저하의 원인을 나타내는 개념
- 응답시간·처리량(Response Time, Throughput): 튜닝의 목표 지표
2. 개념 풀이
쉬운 말로 하면 데이터베이스를 더 빠르게 만드는 작업이다. 같은 일을 하는데 디스크를 덜 읽고, 덜 기다리고, 덜 쓰도록 바꾸는 것이다.
정식 정의는 다음과 같다. 데이터베이스 튜닝은 데이터베이스 구조, 데이터베이스 자체, 운영체제 등을 조정하여 시스템의 성능을 향상시키는 작업이다. 질의 튜닝과 겹치지만 데이터베이스 파일 설계, DBMS 선택과 설정, 운영체제·CPU 등 실행 환경의 구성까지 포함한다는 점이 다르다.
튜닝은 세 단계로 진행한다. 첫째는 설계 튜닝(Design Tuning)으로 모델링과 인덱스 설계 단계에서 성능을 고려한다. 둘째는 DBMS 튜닝(Environment Tuning)으로 메모리와 블록 크기 같은 환경 값을 조정한다. 셋째는 SQL 튜닝(SQL Tuning)으로 SQL 작성과 실행 계획을 개선한다. 앞 단계일수록 효과가 크고 변경 비용이 크다.
핵심 원리는 옵티마이저(Optimizer)와 관련된다. 옵티마이저는 후보 실행 계획을 만들고, 통계 정보로 각 계획의 비용을 예측한 뒤 최저 비용 계획을 고른다. 통계가 부정확하면 잘못된 계획을 고르므로 개발자가 힌트(Hint)로 계획을 직접 지정하기도 한다.
성능 문제를 보는 관점도 중요하다. 병목은 시스템 안에서 처리가 크게 느려지는 장소를 뜻하고, 경합은 세션들이 특정 자원을 두고 기다리는 현상을 뜻한다. 최근에는 대기 행렬과 대기 시간으로 성능 문제를 인식하는 방식이 쓰이므로 경합 관점이 더 적절하다는 견해도 있다.
3. 등장 배경과 필요성
데이터 용량이 커지면 같은 SQL도 읽어야 할 블록 수가 늘어난다. 전체 테이블을 훑는 비용이 커지고 인덱스와 조인 비용도 함께 증가한다. 사용자가 기대하는 응답시간을 유지하려면 구조와 실행 방법을 조정해야 한다.
또한 다수의 사용자가 동시에 접근하면 잠금과 대기가 생긴다. 한 세션의 지연이 다른 세션의 대기로 이어져 전체 처리량이 떨어진다. 그래서 튜닝의 목적에는 잠금 발생을 최소화하는 것이 포함된다.
튜닝의 목적은 다음과 같이 정리된다. 업무 환경에 맞게 파라미터를 설정하고, SQL이 디스크 블록에 최소로 접근하도록 하며, 한 번 읽은 데이터는 메모리에 보관한다. 또 SQL을 공유 가능하도록 명명 표준을 지키고, 배치와 백업을 제한 시간 안에 끝내도록 한다.
결국 튜닝은 응답시간 단축, 처리량 증대, 자원 사용 최소화, 가용성 확보를 목표로 한다. 이 목표 관점이 이후 설계 단계 기법과 힌트 유형을 이해하는 바탕이 된다.
4. 구성요소·원리·절차
데이터베이스 튜닝은 설계, DBMS(환경), SQL 세 계층에서 병목을 찾아 줄이는 활동이다. 계층마다 조정 대상과 수단이 다르므로 구성요소를 먼저 구분해 두어야 한다.
| 구분 | 조정 대상 | 주요 수단 | 관점 |
|---|---|---|---|
| 설계 튜닝 | 모델·테이블·인덱스 | 반정규화, 파티셔닝, 인덱스 종류 선택 | 모델링 |
| DBMS 튜닝 | 메모리·블록 크기 | Buffer 크기, Cache 크기, 블록 크기 | 환경 |
| SQL 튜닝 | 질의문·실행 계획 | 실행 계획(Execution Plan), 조인 방식, 힌트 | 애플리케이션 |
설계 튜닝은 변경 비용이 가장 크므로 초기에 반영해야 한다. SQL 튜닝은 변경 비용이 작아 운영 중에도 적용하기 쉽다. 두 층을 함께 보아야 전체 응답시간이 줄어든다.
튜닝의 원리는 디스크 접근을 줄이고 메모리 재사용을 늘리는 데 있다. 옵티마이저는 후보 실행 계획의 예상 비용을 계산해 최저 비용 계획을 고른다. 통계 정보가 부정확하면 이 선택이 틀릴 수 있으므로 사용자가 힌트로 계획을 바로잡는다.
튜닝의 기본 원리는 디스크 I/O를 줄이고 메모리 재사용을 높이는 것이다.
튜닝 절차는 다음과 같다.
- 성능 지표(응답 시간, 처리량, 자원 사용률)를 측정하고 기준선을 잡는다.
- 병목 지점(느린 쿼리, 부적절한 인덱스, 자원 제한)을 식별한다.
- 원인이 설계인지 DBMS 환경인지 SQL인지 구분해 계층을 정한다.
- 계층별 기법(반정규화, 파티셔닝, 메모리 조정, 인덱스 또는 힌트 적용)을 선택해 적용한다.
- 적용 전후의 지표를 비교해 효과를 확인하고, 모니터링을 계속한다.
옵티마이저의 처리 과정은 다음과 같다.
- 후보 실행 계획을 만든다.
- 오브젝트 통계와 시스템 통계로 각 계획의 예상 비용을 산정한다.
- 최저 비용 계획 하나를 선택한다.
도식은 튜닝 절차 흐름이다.
5. 관련 법령·기준·표준
데이터베이스 튜닝은 법령이나 고시로 정해진 기준이 없는 기술 영역이다. 따라서 이 절에서 다루는 수치는 설계·운영 관행에 따른 일반 기준이다. 개정 연혁이 있는 법적 기준도 없다. 다만 개인정보나 데이터 보호 관련 법령이 튜닝 대상 데이터의 보관·접근 범위를 제한할 수 있으므로 설계 시 확인이 필요하다.
튜닝에서 정량 기준으로 쓰는 값은 다음과 같다. 여기서 값은 업무 요구사항에 따라 정하는 목표치이며, 표준으로 고정된 값이 아니다.
| 항목 | 기준 | 적용 조건 | 근거 |
|---|---|---|---|
| 응답시간 목표 | 업무별 SLA 기준 이내 | 온라인 거래 처리 | 업무 요구사항 |
| 인덱스 개수 | 조회 위주면 많이, 입력·수정·삭제 위주면 적게 | 테이블 접근 유형별 | 설계 가이드 |
| 외래키 인덱스 | FK 컬럼의 인덱스 필요성을 검토 | 접근·갱신 특성 고려 | 설계 가이드 |
| 공유 가능 SQL | 리터럴 대신 바인드 변수 사용 | 동일 SQL 재사용 | 설계 가이드 |
| 힌트 적용 | 옵티마이저 계획이 틀린 경우에만 | 통계가 부정확할 때 | 옵티마이저 원리 |
위 표의 응답시간과 인덱스 개수는 정량 상한이 아니다. 답안에는 '업무 SLA에 따라 정한다'와 '접근 유형에 따라 정한다'로 쓴다.
인덱스 수는 조회와 갱신 비율로 정하며, 갱신이 잦으면 인덱스가 성능을 떨어뜨린다.
실무에서 확인할 설계 규칙은 다음과 같다.
- PK 컬럼 순서는 복합 인덱스 규칙에 따라 나열한다.
- FK 컬럼의 인덱스는 접근·갱신 특성을 고려해 검토한다.
- 코드 데이터는 애플리케이션 메모리에 상주시켜 반복 조회를 줄인다.
- 원격 DB 성능 저하가 예상되면 스냅샷 기반 복제 테이블을 검토한다.
튜닝 결과의 확인 기준은 응답시간, 처리량, 자원 사용률이다.
6. 유형과 비교
데이터베이스 튜닝은 적용 단계에 따라 설계 단계 튜닝, DBMS 튜닝, SQL 튜닝으로 나뉜다. 각 단계는 조정 대상과 담당자가 다르므로 답안에서는 단계별 비교표로 정리하는 것이 효과적이다. 튜닝 대상은 상위 단계일수록 효과가 크고 변경 비용이 높다는 점을 함께 적는다.
이어지는 내용
- 7. 장단점·한계와 개선 방향
- 8. 사례 또는 계산 예제
- 9. 최근 동향과 쟁점
- 10. 흔한 실수와 채점 포인트
- 11. 암기 정리
- 12. 답안 구성 예시
- 13. 예상 변형 문항
로그인하면 하루 2페이지까지 무료로 전체를 읽을 수 있습니다.
앱에서 이 단원 읽기