쿼리 튜닝
- 데이터베이스 쿼리의 성능을 향상시키기 위한 작업
- 쿼리 실행 속도를 빠르게 하고, 자원 사용량을 줄이는 것을 목표
- 예시: 인덱스 생성, 쿼리 최적화, 테이블 구조 변경 등
일반적인 쿼리 튜닝 방법
1. 인덱스 활용
2. 서브쿼리보다는 조인문 사용
3. 쿼리 최적화 (Where 절 최적화)
쿼리 최적화
(1) SELECT 를 할 때는 필요한 컬럼만 추출
(2) LIKE 문을 사용 시, 와일드카드 문자열(%)을 String 앞부분에 배치하지 않기
(3) GROUP BY 연산 시, HAVING 보다는 WHERE 절 사용하기
(4) 조건 부여 시, 기존 DB값에 별도 연산 사용 안하기 ex) 조건절에 floor 함수 사용
(5) SELECT DISTINCT, UNION DISTINCT와 같이 중복 값을 제거하는 연산 사용 안하기
(6) 3개 이상의 테이블을 JOIN할 경우에 크기가 가장 큰 테이블을 FROM절에 배치하고,
JOIN절에는 남은 테이블을 작은 순서대로 배치하기
(7) 자주 사용하는 데이터 형식에 대해서는 미리 전처리된 테이블을 따로 보관 및 관리하기
추가적인 쿼리 튜닝 방법
1. 인덱스 재구성
- 데이터베이스 테이블에 생성된 인덱스를 다시 만드는 작업
- 데이터가 INSERT, UPDATE, DELETE 되면서 인덱스가 파편화되어 성능 저하가 되는 것을 방지
2. 쿼리 캐싱
- 자주 실행되는 쿼리 결과를 메모리에 저장
- 동일한 쿼리가 반복적으로 실행될 때마다 캐시된 결과를 사용해 응답시간 단축
3. 데이터 파티셔닝
- 큰 테이블을 여러 개의 작은 조각(파티션)으로 분할 처리
- 각 파티션에 대한 쿼리를 병렬 처리하여 성능 향상
- 특정 기간이나 조건에 해당하는 데이터만 처리하여 I/O 감소
4. 쿼리 힌트
- 쿼리 최적화기에 특정 쿼리를 실행할 때 어떤 방법을 사용해야 하는지에 대한 정보 제공
- 개발자가 직접 원하는 방식으로 쿼리를 실행하도록 유도
'CS' 카테고리의 다른 글
[인증 방식] Cookie vs Session vs Token (0) | 2024.10.14 |
---|---|
HTTP vs AJAX vs WebSocket (0) | 2024.09.25 |
이더넷 vs 인터넷 (0) | 2024.09.21 |