데이터베이스 부하를 개선하는 8가지 방법

생성일
Jul 24, 2024 11:57 PM
태그
  1. 수직 확장
      • CPU, RAM, 스토리지를 추가하는 것
  1. 인덱싱
      • 만약 READ에 병목이 있다면, 인덱싱을 통해 테이블의 모든 행을 스캔하지 않고도 데이터를 빠르게 찾을 수 있게 하는 게 도움이 될 수도 있음
  1. 샤딩
      • 데이터를 쪼개서 분산 저장
  1. 수직 분할
      • 하나의 큰 테이블을 여러 개의 테이블의 조합으로 나누는 것
      • product, product_detail, product_price 등으로 쪼개는 것 등
      • 쿼리 중에 읽는 데이터 양을 줄이는 쪽으로 고려해야 함
  1. 캐싱
      • 자주 접근하는 데이터 (변경이 적다면 더 좋음)를 캐싱
  1. Replication
      • 지리적으로 멀리 떨어진 사용자들이 높은 latency를 겪고 있다면, 데이터베이스를 복제해 각 지역에 위치시키는 것이 도움이 됨
        • 동기식 복제: 변경사항이 모든 복제본에 반영된 후에야 트랜잭션 완료. 큰 오버헤드.
        • 비동기식 복제: 데이터 변경사항이 약간의 지연 시간을 두고 각 복제본들에 반영. 정합성 이슈.
  1. Materialized View
      • 자주 수행하는 조회 쿼리의 경우 아예 view로 만들어 두면 리소스 집약적인 쿼리의 성능을 크게 향상시킬 수 있음.
  1. 데이터 비정규화
      • 복잡한 JOIN의 필요성을 줄이기 위해 여러 테이블을 하나로 결합.
      • 복잡한 JOIN은 큰 테이블에서 종종 느린 원인이 됨.
 

자료 소스