본문 바로가기
oracle

SQL 특징 및 최적화

by chunkind 2023. 3. 6.
반응형

SQL(Structured Query Language)

SQL은 관계형 데이터베이스에 포함된 데이터를 쿼리하기 위해 설계된 언어입니다. SQL은 C나 BASIC과 같은 명령형 언어가 아닌 집합적이고 선언적인 질의 언어입니다.

SQL의 주요 특징

  • 구조적(Structured): SQL은 데이터베이스 스키마와 구조에 맞춰 데이터를 정의하고 조작하는 언어입니다.
  • 집합적(Set-based): SQL은 개별 행이 아닌 데이터 집합을 처리합니다.
  • 선언적(Declarative): SQL은 원하는 결과를 선언적으로 기술하며, 이를 어떻게 수행할지는 DBMS에 맡깁니다.

SQL 최적화

SQL은 기본적으로 구조적이고 집합적이며 선언적인 질의 언어입니다. 사용자는 원하는 결과 집합을 구조적이고 집합적으로 선언하지만, 그 결과 집합을 만드는 과정은 절차적입니다. 이 과정에서 프로시저가 필요하게 되며, 이를 생성하는 DBMS 내부 엔진이 바로 SQL 옵티마이저입니다. 옵티마이저는 사용자를 대신해 프로시저를 작성하고 컴파일하여 실행 가능한 상태로 만듭니다. 이 전 과정을 'SQL 최적화'라고 합니다.

SQL 최적화 과정

  1. SQL 파싱
    • 파싱 트리 생성: SQL 문장을 파싱하여 파싱 트리를 생성합니다.
    • Syntax 체크: SQL 문법을 검사합니다.
    • Semantic 체크: SQL 문장이 데이터베이스 스키마와 일치하는지 검사합니다.
  2. SQL 최적화
    • 옵티마이저는 다양한 실행 계획을 생성하고, 비용 기반 분석을 통해 최적의 실행 계획을 선택합니다. 이 과정에서 인덱스 사용 여부, 조인 순서, 조인 방식 등을 결정합니다.
  3. 로우 소스 생성
    • 최적화된 실행 계획을 기반으로 데이터를 가져오기 위한 로우 소스(Row Source)를 생성합니다. 이는 실제 데이터베이스 연산을 수행하는 단계입니다.

오라클 SQL 최적화 과정

오라클 데이터베이스에서 SQL 최적화는 매우 중요한 과정입니다. 오라클 옵티마이저는 쿼리의 실행 계획을 분석하여 가장 효율적인 경로를 선택합니다. 이를 통해 쿼리 성능을 극대화하고, 시스템 자원의 효율적인 사용을 도모합니다.

SQL 파싱 단계

  1. 파싱 트리 생성: SQL 문장을 분석하여 파싱 트리를 생성합니다. 이는 SQL 문장의 구조를 나타내는 트리 형태의 자료구조입니다.
  2. Syntax 체크: SQL 문장의 문법을 검사하여 올바른 SQL 구문인지 확인합니다.
  3. Semantic 체크: SQL 문장의 의미를 검사하여, 데이터베이스 스키마와 일치하는지 확인합니다. 예를 들어, 테이블이나 컬럼이 실제로 존재하는지 확인합니다.

SQL 최적화 단계

SQL 문장이 파싱되고 나면, 옵티마이저는 다양한 실행 계획을 생성하고, 그 중에서 최적의 계획을 선택합니다. 이 과정에서 다음과 같은 요소들을 고려합니다:

  • 인덱스 사용 여부: 인덱스를 사용할 경우 전체 테이블을 스캔하는 것보다 훨씬 빠르게 데이터를 조회할 수 있습니다.
  • 조인 순서: 여러 테이블이 조인되는 경우, 조인의 순서를 결정합니다. 어떤 테이블을 먼저 조인하느냐에 따라 성능 차이가 발생할 수 있습니다.
  • 조인 방식: Nested Loop Join, Hash Join, Sort-Merge Join 등 다양한 조인 방식을 고려합니다.
  • 통계 정보: 옵티마이저는 테이블과 인덱스의 통계 정보를 이용하여 실행 계획을 최적화합니다.

로우 소스 생성 단계

최적화된 실행 계획이 선택되면, 오라클은 이를 기반으로 실제 데이터를 가져오기 위한 로우 소스를 생성합니다. 로우 소스는 데이터베이스 연산을 수행하는 실제 작업 단위입니다. 이 단계에서는 최적화된 계획에 따라 테이블을 스캔하고, 조인을 수행하며, 필요한 데이터를 가져옵니다.

결론

SQL은 관계형 데이터베이스에서 데이터를 효과적으로 쿼리하기 위한 구조적, 집합적, 선언적 언어입니다. SQL 문장은 최적화 과정을 거쳐 효율적인 실행 계획이 생성되며, 이 과정은 파싱, 최적화, 로우 소스 생성의 단계를 포함합니다. 특히 오라클 데이터베이스는 강력한 옵티마이저를 통해 복잡한 쿼리의 성능을 극대화합니다. 이러한 최적화 과정을 이해함으로써, 우리는 더욱 효율적인 SQL 쿼리를 작성할 수 있습니다.

반응형