데이터 조회 성능 향상 전략

이하루·2025년 2월 3일

업무를 하면서 데이터 조회(SELECT)시간이 오래 걸려 문제가 발생했던 적이 종종 있었다. 보통 이런 문제가 발생할 때, 비효율적으로 실행되는 쿼리를 최적화하거나, SQL 쿼리 계획을 체크하여 SQL튜닝을 하는 정도로만 대응할 수 있었다. 이번 글을 통해서 데이터 조회 성능 향상을 위한 보다 다양한 방법을 정리해보고자 한다.

✅ 올바른 DB설계

당연한 이야기겠지만, 정규화와 역정규화를 적절히 활용해서 시스템 사양에 맞춰서 설계하는 것이 중요하다.

DB정규화

✅ 쿼리 최적화

DB 튜닝의 핵심은 옵티마이저가 스토리지 엔진에 요청하는 데이터를 줄이는 것이다. 쿼리 실행 순서를 고려한 SQL 작성, EXPLAIN 명령어를 이용하여 쿼리 실행 계획을 체크하여 불필요한 요청 데이터를 최소화하도록 한다.

쿼리 실행 순서
MySQL 쿼리 최적화1
MySQL 쿼리 최적화2

✅ 캐시 서버 활용

디스크에서 관리하는 RDBMS보다 Redis와 같은 메모리에서 관리하는 NoSQL 데이터베이스 기반의 캐시 서버를 활용할수도 있다.

Redis

✅ 파티셔닝 & 샤딩

대량의 데이터를 가진 테이블을 시스템에 사양에 맞게 특정 기준을 가지고 분리해서 관리할 수 있다.

파티셔닝 & 샤딩

✅ 리플리케이션

실제 데이터베이스의 복제본을 생성하여 함께 운용할 수 있다. 복제본과 함께 운용함으로써, 데이터의 안정성을 높일 수 있고 마스터 서버에서는 쓰기(삽입/변경/삭제)를, 복제 서버에서는 읽기(조회)만을 처리하는 등의 역할을 분담하여 효율적으로 자원을 사용할 수 있다.

✅ DB 스케일업 & 스케일아웃

DB서버를 수평/수직 확장하여 성능을 향상시키는 작업으로, 단일 서버의 서버 향상 or 서버의 수를 늘리는 만큼 자원의 소모가 크기에, 다른 성능 향상 작업에 비해 우선도가 떨어진다.

DB 스케일업 : 운용중인 DB서버의 성능을 향상 ex) CPU 성능 업그레이드
DB 스케일아웃 : DB서버를 추가해서 성능을 향상 ex) 샤딩

profile
어제보다 더 나은 하루

0개의 댓글