DBMS : 옵티마이저

옵티마이저”데이터베이스에서 SQL 쿼리를 실행할 때, 가능한 여러 실행 계획 중에서 최적의 방법을 선택하여 데이터 검색 또는 조작에 대한 성능을 최적화하는 역할을 하는 도구입니다.

쿼리 옵티마이저는 테이블과 인덱스의 통계 정보를 활용하여 비용을 고려하여 최상의 실행 계획을 결정합니다.

옵티마이저 주요 기능

최적의 실행 계획 선택

테이블과 인덱스의 통계 정보를 분석하고, 가능한 다양한 실행 계획을 생성합니다.

그 중에서 비용(예: I/O 비용, CPU 비용)를 고려하여 최적의 실행 계획을 선택합니다.

인덱스 활용

인덱스를 효과적으로 활용하여 데이터를 검색하거나 조작하는 데 필요한 최소한의 작업을 수행합니다.

이를 통해 검색 속도가 향상됩니다.

조인 최적화

여러 테이블을 조인할 때, 가장 효과적인 조인 순서나 방법을 결정하여 성능을 최적화합니다.

캐시 활용

이전에 실행된 쿼리의 실행 계획이나 결과를 메모리에 캐싱하여 반복적인 실행에서 성능을 향상시킵니다.

옵티마이저가 사용자의 SQL 요청을 최적화하는 과정

  1. 사용자가 작성한 쿼리문 수행을 위해, 실행될 만한 실행 계획을 찾습니다.
  2. 데이터 딕셔너리에 미리 수집해 놓은 테이블, 인덱스 통계 정보를 이용해 각 실행 계획의 예상 비용을 산정합니다.
  3. 각 실행 계획을 비교해서 최저 비용을 갖는 하나를 선택하여 실행합니다.

테이블 통계 정보란?

테이블 통계 정보옵티마이저가 쿼리 실행 계획을 결정할 때 테이블의 데이터 분포 및 크기를 기반으로 최적의 실행 계획을 선택하는 데 활용됩니다.

대부분의 DBMS는 통계 수집 기능을 제공합니다.

MySQL에서는 ANALYZE TABLE 명령어를 사용하여 테이블과 인덱스의 통계를 수집할 수 있습니다.

테이블 통계 수집

ANALYZE TABLE your_table;

인덱스 통계 수집

인덱스의 통계를 수집하려면 다음과 같이 사용합니다.

ANALYZE TABLE your_table INDEX index_name;

참고할 만한 글

Leave a Comment

목차