DB/일반

Optimizer

창욱씨 2022. 4. 3. 22:31
728x90

Optimizer의 개념

Optimizer란 SQL 개발자가 SQL을 작성하고 실행할 때, Optimizer는 SQL을 어떻게 실행할 것인지를 계획합니다. Optimizer는 SQL 실행 계획을 수립하고 SQL을 실행하는 DBMS의 소프트웨어입니다. 동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라 설능이 달라집니다.

Optimizer 특징

Optimizer는 데이터 딕셔너리에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정합니다. Optimizer는 여러 개의 실행 계획 중에서 최저 비용을 가지고 있는 계획을 선택해서 SQL을 실행합니다.

Optimizer의 필요성

개발자가 작성한 SQL문을 어떻게 실행하느냐에 따라 성능이 달라집니다. Optimizer가 비효율적으로 실행 계획을 수립하면 SQL 개발자는 SQL을 개선해야합니다. Optimizer에게 실행 계획을 변경하도록 요청할 수 있는데 이 때 힌트를 사용합니다.

Optimizer 종류

규칙 기반 Optimizer

규칙 기반 Optimizer는 실행 계획을 수립할 때 아래의 우선 순위를 기준으로 실행 계획을 수립합니다. 우선 순위가 높은 규칙이 자원 사용량이 적기 때문에 해당 작업을 수행합니다.

비용 기반 Optimizer

비용 기반 Optimizer는 오브젝트 통계 및 시스템 통계를 사용해서 총 비용을 계산합니다. 여기서 총 비용이란 SQL 문을 실행하기 위해 예상되는 소요 시간 혹은 자원의 사용량을 의미합니다.

728x90