데이터베이스 튜닝
데이터베이스 튜닝은 DB 설계, DBMS 환경, SQL을 단계별로 조정하는 활동이다. 목표는 응답시간 단축, 처리량 증대, 자원 사용 최소화, 가용성 확보다. 데이터베이스 튜닝은 세 단계로 진행한다. 설계 튜닝은 모델링과 인덱스 설계 단계에서 성능을 고려한다. DBM…
주요 장면
대본
튜닝의 정의
데이터베이스 튜닝은 DB 설계, DBMS 환경, SQL을 단계별로 조정하는 활동이다.
목표는 응답시간 단축, 처리량 증대, 자원 사용 최소화, 가용성 확보다.
세 단계 튜닝
데이터베이스 튜닝은 세 단계로 진행한다.
설계 튜닝은 모델링과 인덱스 설계 단계에서 성능을 고려한다.
DBMS 튜닝은 메모리와 블록 크기 같은 환경 값을 조정한다.
SQL 튜닝은 SQL 작성과 실행 계획을 개선한다.
앞 단계일수록 효과는 크고 변경 비용도 크다.
옵티마이저와 힌트
옵티마이저는 실행 계획을 비용 기준으로 선택하는 DBMS의 핵심 엔진이다.
먼저 후보 실행 계획을 만들고, 통계로 각 계획의 예상 비용을 산정한다.
그중 최저 비용 계획 하나를 고른다.
통계가 부정확하면 잘못된 계획을 고르므로 힌트로 계획을 직접 지정한다.
힌트는 옵티마이저 판단을 보정하는 수단이다.
힌트 유형과 규칙
힌트는 종류별로 나뉜다. 최적화 목표, 접근 방법, 조인 순서, 조인 방식, 병렬 처리, 기타다.
조인 방식 힌트에는 USE_NL, USE_HASH, USE_MERGE가 있다.
인덱스를 나열할 때는 공백으로 구분한다.
쉼표로 나열하면 앞의 인덱스만 적용되고, 스키마명은 쓰지 않는다.
선택도 계산 예제
가상의 예다. 주문 테이블 ORDERS 1억 건에서 하루 조건으로 30만 건이 선택된다.
선택도 S는 선택된 행 수를 전체 행 수로 나눈 값이다.
계산하면 0.003이므로 전체 스캔 대비 읽는 행은 약 0.3%로 줄어든다.
일 단위 조회가 전체의 수백분의 일이므로 결과가 상식 범위에 맞는다.
흔한 실수와 문제
흔한 실수를 짚고 간다. 설계를 건너뛰고 SQL 힌트부터 붙이면 감점이다.
반정규화는 조인을 줄이지만 정합성 유지 대책이 함께 있어야 한다.
인덱스는 조회 위주면 늘리고, 입력·수정·삭제가 많으면 줄인다.
힌트는 임시 처방이며, 통계 정비와 설계 튜닝이 우선이다.
정답 확인
정답은 앞의 인덱스만 적용된다는 것이다. 인덱스는 공백으로 구분해야 한다.
튜닝은 설계, DBMS, SQL 순서로 적용하고 통계 관리와 함께 간다.