본문 바로가기
🖥Web/🔥DB & SQL

[DB & SQL] SQL 기본 및 활용 / SQL 최적화 기본 원리

by 요즘이슈야 2022. 5. 21.
반응형

SQL 최적화 기본 원리

 

 

Sort Merge Join

Sort Merge Join은 조인칼럼을 기준으로 데이터를 정렬하여 조인을 수행한다. NL(Nested Loops Join) Join은 주로 랜덤 액세스 방식으로 데이터를 읽는 반면 Sort Merge Join은 주로 스캔 방식으로 데이터를 읽는다. Sort Merge Join은 랜덤 액세스로 NLJoin에서 부담이 되던 넓은 범위의 데이터를 처리할 때 이용되던 조인기법이다. 그러나 Sort Merge Join은 정렬할 데이터가 많아 메모리에서 모든 정렬 작업을 수행하기 어려운 경우에는 임시 영역(디스크)을 사용하기 때문에 성능이 떨어질 수 있다.

 

NL(Nested Loops Join) Join

NL Join은 프로그래밍에서 사용하는 중첩된 반복문과 유사한 방식으로 조인을 수행한다. 선행 테이블의 조건을 만족하는 행을 추출하여 후행 테이블을 읽으면서 조인을 수행한다. 이 작업은 선행 테이블의 조건을 만족하는 모든 행의 수만큼 반복 수행합니다. 따라서 결과행의 수가 적은 테이블을 선행 테이블로 선택하는 것이 좋다.

 

Hash Join

Hash Join은 조인 칼럼의 인덱스를 사용하지 않기 때문에 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있는 조인 기법이다.

Hash Join은 해쉬 함수를 이용하여 조인을 수행하기 때문에 '='로 수행하는 조인 즉, 동등 조인에서만 사용할 수 있다.

 

비용기반 옵티마이저(CBO: Cost Based Optimizer)

  • 테이블 및 인덱스 등의 통계 정보를 활용하여 SQL문을 실행하는데 소요 될 처리시간 및 CPU, I/O 자원량 등을 계산하여 가장 효율적일 것으로 예상되는 실행 계획을 선택하는 옵티마이저

 

인덱스(INDEX)의 종류

  • B-TREE 인덱스
    • B-TREE 인덱스는 브랜치 블록과 리프 블록으로 구성되며, 브랜치 블록은 분기를 목적으로 하고 리프블록은 인덱스를 구성하는 컬럼의 값으로 정렬된다. 일반적으로 OLTP 시스템 환경에서 가장 많이 사용한다.
  • CLUSTERED 인덱스
    • CLUSTERED 인덱스는 인덱스의 리프 페이지가 곧 데이터 페이지이며, 리프 페이지의 모든 데이터는 인덱스 키 컬럼 순으로 물리적으로 정렬되어 저장된다.
  • BITMAP 인덱스
    • BITMAP 인덱스는 시스템에서 사용될 질의를 시스템 구현 시에 모두 알 수 없는 경우인 DW 및 AD-HOC 질의 환경을 위해서 설계되었으며, 하나의 인덱스 키 엔트리가 많은 행에 대한 포인터를 저장하고 있는 구조이다.

 

온라인 트랜잭션 처리 (OLTP: Online transaction processing)

온라인 트랜잭션 처리 (OLTP: Online transaction processing)는 트랜잭션 지항 애플리케이션을 손쉽게 관리할 수 있도록 도와주는 정보 시스템의 한 계열로서, 일반적으로 데이터 기입 및 트랜잭션 처리를 위해 존재한다. 이 용어는 모호할 수도 있는데, 컴퓨터 환경에서 트랜잭션을 데이터베이스 트랜잭션으로 해석할 수도 있는 비즈니스 분야에서 금융 거래로 정의할 수도 있기 때문이다. 또, OLTP는 시스템이 사용자 요청에 즉각 반응하는 처리를 가리키는 용어이기도 하다. 은행의 현금 자동 입출금기(ATM)가 상용 트랜잭션 처리를 응용한 하나의 예로 볼 수 있다.

 

 

 

 

 

 

참조:

SQL자격검정실전문제

 

 

 

반응형