DB 2

[DB] Optimizer

SQL 쿼리 성능 개선을 위한 방법이 여럿 있는데, 이 중 핵심적인 역할을 담당하는 구성 요소 중 하나인 Optimizer 에 대해 정리하고자 한다.  1. 역할- SQL 쿼리 분석- 다양한 실행 경로를 비교하여 가장 효율적인 실행 계획 선택- 리소스 최적화- 결과 반환 속도 개선 2. 종류1) 규칙 기반 옵티마이저- 단순한 구조를 가지며, 우선순위 명확 2) 비용 기반 옵티마이저- 데이터베이스의 통계 정보를 활용하여 실행 계획의 비용(ex. I/O, CPU 사용량 등) 계산- 최신 데이터베이스 시스템에서 주로 사용 3) 힙 옵티마이저- 특정한 경험적 규칙을 활용하여 실행 계획 생성- 주로 간단한 쿼리에서 사용 3. 주요 요소- 통계 정보  > 테이블 크기, 인덱스 존재 여부, 컬럼 분포, 데이터 밀도 ..

IT/DB 2025.01.20

[DB] Sharding

대용량 트래픽을 처리하는 개발자라면 고려해 볼 DB Sharding 에 대해 정리하고자 한다. 1. 개념- 데이터를 논리적으로 나누는 작업으로, 각 분할된 데이터는 독립적으로 관리됨 2. 장점- 성능 향상  > 읽기 및 쓰기 작업이 여러 샤드로 분산되어 병렬 처리 가능- 확장성  > 필요에 따라 샤드와 서버를 추가하여 수평적 확장 가능- 고가용성  > 특정 샤드에 장애가 발생해도 나머지 샤드가 동작 유지 가능 3. 단점- 운영 복잡성- 쿼리 복잡성  > 분산된 샤드에 걸친 데이터를 조회하기 위해 추가 로직(ex. 애플리케이션에서 집계 쿼리) 필요- 데이터 재분배 비용  > 샤드 키가 잘못 설계되었거나 데이터 불균형 시 샤드 간 데이터 재분배가 필요한데 이는 많은 자원과 시간 소모 4. 기타- 적절한 키 ..

IT/DB 2025.01.15