데이터베이스 튜닝이란?
데이터베이스의 성능 향상을 위하여 운영체제나 데이터베이스 자체의 구조와 쿼리 작성 방식 등 다양한 요소를 분석하고 최적화하는 작업이다.

보통 시스템 성능 저하의 요인은 어플리케이션이나 데이터베이스의 설계에 의해 발생한다.
데이터베이스 성능이 굉장히 중요하기 때문에 하드웨어의 성능만 향상시키는 것이 아니라 프로그램에서 호출되는 쿼리들을 운영체제나 미들웨어까지 **확장하여 한정된 자원으로 좋은 성능(처리량 증가, 응답 시간 단축)을 발휘**할 수 있도록 해야 한다.
정리해보면 데이터베이스 튜닝을 하는 목적으로는
- 성능
데이터 처리 속도를 높이고, 응답 시간을 단축하기 위함
- 안정성
높은 부하에서도 안정적인 서비스를 제공하기 위함
- 확장성
데이터 양이 많아져도 지속적인 성능 유지하기 위함
이렇게 세 가지가 있다.
데이터베이스 튜닝은 크게 세 단계로 나눌 수 있다.
- 데이터베이스 설계 튜닝
테이블 스키마 설계, 정규화/반정규화, 인덱스 생성 관리 등
- 데이터베이스 환경 튜닝
하드웨어 자원과 데이터베이스 설정값 설정 등
- 쿼리 튜닝
쿼리 최적화, 인덱스 활용 등
한 단계씩 알아보자.
데이터베이스 설계 튜닝
데이터베이스 구조를 효율적으로 설계하여 성능을 향상시키는 과정이다.
- 테이블 스키마 설계
데이터를 효과적으로 저장하고 조회하도록 테이블과 필드를 설계하는 것
- 정규화와 반정규화
데이터 중복을 줄이기 위해서는 정규화를 적용하지만, 읽기 성능이 중요한 경우에는 반정규화를 적용하여 상황에 맞도록 적용하여 성능을 향상
- 인덱스 생성 및 관리
조회 성능을 높이기 위해서 적절한 인덱스 활용, 불필요한 인덱스 제거 및 업데이트
데이터베이스 환경 튜닝
데이터베이스가 동작하는 물리적 및 논리적 환경을 최적화하는 과정이다.
- 하드웨어 자원 업그레이드 및 최적화
CPU, 메모리, 디스크 I/O 성능을 점검하고, 필요한 부분에 따라 자원을 업그레이드하거나 최적화
(디스크 I/O 작업을 줄이고 성능을 높이기 위해서 데이터베이스 캐시를 확장)
- 데이터베이스 설정값 조정
버퍼 크기, 연결 풀 크기, 캐시 크기와 같은 설정값을 적절히 조정하여 성능 최적화
쿼리 튜닝
SQL 쿼리의 실행 계획을 분석하고, 성능을 저하시키는 요소들을 제거하여 효율적으로 바꾸는 과정
- 쿼리 최적화
느린 쿼리를 찾고, 불필요한 데이터 조회를 제거하거나 쿼리 구조를 바꿔 성능 향상
- 인덱스 활용
적절한 인덱스를 활용하여 데이터 조회 속도 개선