728x90
Query Optimization
쿼리 최적화는 DBMS에서 쿼리의 성능을 개선하기 위한 과정이다. 이 과정은 쿼리를 더 빠르고 효율적으로 실행하기 위해 여러 기술과 전략을 사용한다. 쿼리 최적화의 주요 목표는 데이터베이스 리소스 사용을 최소화하고 응답 시간을 단축하는 것다. Query Optimizer의 구조는 아래와 같다.
위의 DBMS 작동과정중 Query Optimizer를 자세히 보면 아래와 같다.
쿼리 최적화는 크게 CBO(Cost Based Optimize)와 RBO(Rule Based Optimize) 두가지 방식중 하나를 이용하는데 주로 CBO를 이용한다. 해당 과정에서 Optimizer는 가능한 모든 실행 계획을 생성하고 각종 통계정보를 이용한 Cost를 계산하고 최소 Cost의 실행계획을 선택한다.
Query Trees and Heuristics for Query Optimization
아래의 쿼리문에 대한 세가지 방식의 분석을 살펴보자.
SELECT P.Pnumber, P.Dnum, E.Lname, E.Address, E.Bdate
FROM PROJECT P, DEPARTMENT D, EMPLOYEE E
WHERE P.Dnum=D.Dnumber AND D.Mgr_ssn=E.Ssn AND P.Plocation='Stafford';
(a) 관계 대수에 대응하는 쿼리 트리
(b) 초기(정규화된) 쿼리 트리
(c) 쿼리 그래프
쿼리 최적화 개념은 정말 간단하지만 실제로는 DB특성에 따라 너무 고려할 사항이 많고 실무적인 내용이라 가볍게 공부하고 넘어간다고 하셨다.
MySQL에서 explain을 이용하여 요인들을 분석하고 최적화를 진행해야한다. 이때 아래의 type들이 있을 수 있는데 아래로 갈 수록 효율면에서 안좋은 type이다.
728x90
'Quality control (Univ. Study) > Database Design' 카테고리의 다른 글
Concurrency Control (1) | 2023.11.23 |
---|---|
Transaction (3) | 2023.11.21 |
INDEX 실습 (0) | 2023.11.14 |
Normalization (2) (0) | 2023.11.09 |
Normalization (1) (0) | 2023.11.07 |