면접준비
DB 로직 최소화를 하려면 어떻게 해야 할까요?
샤르체
2024. 1. 8. 09:40
쿼리 최적화
- 쿼리를 최적화하여 데이터베이스에서 필요한 데이터를 효율적으로 가져온다.
- 인덱스를 적절하게 사용하여 쿼리 성능을 향상시킨다.
- 불필요한 JOIN 연산을 피하고, 필요한 경우 LEFT JOIN과 같은 외부 조인을 사용하여 필요한 데이터만 검색한다.
ORM (Object-Relational Mapping) 사용
- ORM 도구를 사용하여 데이터베이스와 애플리케이션 코드 간의 매핑을 자동화한다.
- ORM은 CRUD(Create, Read, Update, Delete) 작업을 간단하게 만들어 줄 수 있으며, 개발자가 쿼리 작성 및 관리를 최소화할 수 있다.
캐싱 활용
- 데이터를 캐시하여 반복적인 쿼리를 줄인다. 이로써 데이터베이스에 접근하는 빈도를 낮출 수 있다.
비즈니스 로직 분리
- 데이터베이스와 관련된 로직을 비즈니스 로직으로부터 분리한다.
- 데이터 액세스 코드와 비즈니스 로직을 분리함으로써 유지 보수가 쉬워지며, 확장성이 향상된다.
배치 작업 사용
- 주기적으로 실행되는 작업이나 데이터 가공 작업을 데이터베이스에서 분리하여 별도의 배치 작업으로 처리한다.
- 데이터 일관성과 성능을 향상시킬 수 있다.
인덱싱 및 파티셔닝 활용
- 큰 테이블에서 성능 문제를 해결하기 위해 인덱스 및 파티셔닝을 활용한다.
- 효과적으로 데이터를 분할하고 색인화하면 데이터 검색 및 조작이 빨라진다.
최소한의 데이터 검색
- 애플리케이션이 실제로 필요로 하는 데이터만 검색하도록 쿼리를 작성한다. 불필요한 데이터를 가져오지 않도록 한다.
트랜잭션 관리
- 트랜잭션을 최소한으로 사용하고, 긴 트랜잭션을 피한다. 트랜잭션 범위를 줄여 데이터베이스 락을 방지한다.
모니터링과 프로파일링
- 애플리케이션에서 데이터베이스 작업을 모니터링하고, 성능 병목 현상을 식별한다. 프로파일링 도구를 사용하여 쿼리 실행 계획을 분석한다.
필요한 경우 수직 및 수평 스케일링
- 데이터베이스 부하가 증가할 때 수직 스케일링(더 강력한 하드웨어로 업그레이드) 또는 수평 스케일링(데이터베이스를 여러 서버로 분할)을 고려한다.