본문 바로가기
DB/SQL 활용

SQL 자격검정실전문제 - SQL 최적화 기본 원리 (옵티마이저와 실행계획, 인덱스 기본, 조인 수행 원리)

by 참외롭다 2024. 6. 25.
반응형

비용기반 옵티마이저(CBO)에 대해 서술하시오

 

테이블 및 인덱스 등의 통계정보를 활용해 SQL문을 실행하는데 소요될 처리시간 및 CPU, I/O 자원량 등을 계산하여 가장 효율적일 것으로 예상되는 실행계획을 선택하는 옵티마이저 입니다. 비용기반 옵티마이저는 테이블, 인덱스, 칼럼등 객체의 통계정보를 사용해 실행계획을 수립하므로 통계정보가 변경되면 SQL의 실행계획이 달라질 수 있습니다.

 

규칙기반옵티마이저(RBO)에 대해 서술하시오

 

규칙기반 옵티마이저에서 제일 낮은 우선순위는 테이블 전체 스캔이고 제일 높은 우선순위는 ROWID를 활용해 테이블을 엑세스하는 방법입니다. 적절한 인덱스가 존재하면 전체 테이블 스캔보다는 항상 인덱스를 사용햐려합니다.

 

오라클 실행계획에 대해 서술하시오.

 

실행계획은 SQL 처리를 위한 실행 절차와 방법을 표현한 것입니다. 동일 SQL에 대해서 실행계획은 달라질 수 있지만 실행결과는 항상 동일합니다. 실행계획의 구성요소는 다음과 같습니다. 

 

- 조인기법
- 질의처리 최적화 정보
- 엑세스 기법
- 연산

 

SQL 처리 흐름도에 대해 서술하시오.

 

SQL 실행계획의 내부적 처리절차를 시각화해서 표시한 것입니다. SQL 실행시 발생하는 인덱스 스캔, 테이블 전체 스캔등과 같은 액세스 기법과 성능적 측면을 시각적으로 표현합니다.

 

관계형 데이터베이스의 인덱스에 대해 서술하시오.

 

인덱스는 크게 기본인덱스와 보조 인덱스로 구분됩니다. 기본 인덱스는 UNIQUE & NOT NULL 제약조건이 있습니다. 보조인덱스는 UNIQUE 제약이 없으면 중복 데이터의 입력이 가능합니다. 두 인덱스 모두 공통적로 자주 변경되는 속성을 인덱스로 선정할 경우 UPDATE, DELETE 성능에 좋지 않은 영향을 미칩니다. 다만, 인덱스를 구성하는 칼럼 이외의 데이터가 UPDATE 될 때는 인덱스로 인한 부하가 발생하지 않습니다.

 

테이블의 전체 데이터를 읽는 경우는 인덱스를 사용하지 않는 FULL TABLE SCAN을 사용합니다. 인덱스는 조회만을 위한 오브젝트로 삽입 삭제, 갱신의 경우 오히러 부하를 높입니다. 관겨형 데이터배이스에서 가장 많이 쓰이는 인덱스는 Balance Tree 인덱스이고 대량의 데이터를 삽입할때는 인덱스를 제거하고 삽입이 끝난후 다시 생성하는 것이 좋습니다.

 

인덱스의 종류와 특징에 대해 서술하시오

 

B-TREE 인덱스는 브랜츠 블록과 리프블록으로 구성되며, 브랜치 블록은 분기를 목적으로 하고 리프블록은 인덱스를 구성하는 칼럼의 값으로 정렬됩니다. 일반적으로 OLTP 시스템 환경에서 가장 많이 사용됩니다.

 

Clustered 인덱스는 인덱스의 리프 페이지가 곧 데이터 페이지이며, 리프 페이지의 모든 데이터는 인덱스 키 칼럼 순으로 물리적으로 정렬되어 저장됩니다.

 

BITMAP 인덱스는 시스템에서 사용될 질의를 시스템 구현시에 모두 알수 없는 경우인 DW 및 AF-HOC 질의 환경을 위해 설계되었으며 하나의 인덱스 키 엔트리가 많은 행에대한 포인터를 저장하고 있습니다.

 

ORACLE의 조인기법에 대해 서술하시오

 

ORACLE의 기본적인 JOIN 기법은 NL JOIN, HASH JOIN, SORT MERGE JOIN이 있습니다. NL JOIN은 OLTP 성 목록처리업무에 많이 사용됩니다. NL JOIN은 조인 칼럼에 적당한 인덱스가 있어서 자연조인이 효율적일 때 우용합니다. DRIVING TABLE의 조인 데이터 양이 조인에 큰 영향을 주는 조인 방식입니다. DW 등 데이터 집계업무에서 많이 사용되는 기법은 HASH JOIN, SORT MERGE JOIN 입니다.

 

소트머지조인에 대해 서술하시오

 

조인 칼럼을 기준으로 데이터를 정렬하여 조인을 수행합니다. NL JOIN은 주로 랜덤 엑세스 방식으로 데이터를 읽는 반면, 소트머지 조인은 주로 스캔 방식으로 데이터를 읽습니다. 소트머지조인은 정렬할 데이터가 많아 메모리에서 모든 정렬작업을 수행하기 어려운 경우 임시 영역을 사용하기 때문에 성능이 떨어질 수 있습니다. NON-EQUI JOIN 조건에서도 사용이 가능합니다.

 

HASH JOIN에 대해 서술하시오

 

HASH JOIN은 조인 칼럼의 인덱스를 사용하지 않기 때문에 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있습니다. HASH JOIN은 해시 하수를 이용해 조인하기 때문에 동등조인에서만 사용할 수 있습니다.

반응형