[정보처리기사 실기 - 데이터베이스] 튜닝 (Tuning) :: 소림사의 홍반장!

1. 튜닝의 개요

- 데이터베이스 튜닝이랑 데이터베이스 응용 프로그램, 데이터베이스 자체, 운영체제 등의 조정을 통하여 데이터베이스 관리 시스템의 성능을 향상시키는 작업을 말한다.

 

- 데이터베이스 튜닝을 통해 데이터베이스 관리 시스템이 높은 작업 처리량과 짧은 응답 시간을 갖도록 하는 것이 중요하다.

 

 

2. 튜닝의 목표

- 데이터베이스에 접근하는 SQL문의 실행 시 디스크 블록에 대한 접근 횟수를 최소화한다.

: 원하는 데이터가 포함된 디스크를 적절히 분산시켜 디스크 입출력이 집중되는 것을 막는다.

 

- 디스크 블록에서 한번 읽어온 데이터는 가능한 한 메모리 영역에 보관하여 하시 그 데이터가 필요할 때 메모리에서 신속히 가져오게 한다.

 

- 모든 SQL문은 공유가 가능하도록 대소문자 일치 등의 이름 작성 규칙을 준수하여 작성한다.

 

- 여러 명의 사용자가 자원들을 안정적으로 접근할 수 있도록 허용하기 위해 잠금 기능의 사용을 최소화 한다.

: 잠금이 최소한으로 발생하도록 트랜잭션을 분산시키는 방법을 사용한다.

 

 

 

3. 튜닝의 단계

 

비지니스 규칙 튜닝

데이터 설계 튜닝

응용 프로그램 설계 튜닝

데이터베이스의 논리적 구조 튜닝

데이터베이스 접근 방식 튜닝

접근 경로 튜닝

메모리 관리 튜닝

물리적 구조 및 입출력 튜닝

자원의 경합 튜닝

H/W 시스템에 특화된 부분의 튜닝

 

 

4. 인덱스 튜닝

인덱스 종류

- B-트리 인덱스 : 데이터 양에 상관없이 모든 데이터의 인덱스 탐색 시간이 동일

- 비트맵 인덱스 : 분포도가 좋은 컬럼에 적합, 효율적인 논리연산 가능, 저장 공간이 작다

- 역방향 인덱스 : B-트리 인덱스에서 발생할 수 있는 불균형 문제를 해결, 데이터의 분포도가 좋아져 검색 성능 좋다

 

클러스터드 인덱스 VS 넌클러스터드 인덱스

클러스터드 인덱스 (Clustered Index) 

넌클러스터드 인덱스 (Non-Clustered Index)  

 책의 앞쪽에 있는 '목차'에 해당 

 책의 뒤쪽에 있는 '찾아보기'에 해당

 인덱스 키의 순서에 따라 데이터가 정렬되어 저장

 인덱스를 검색하지 않아도 빠르게 검색 가능

 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터의 재정렬이 필요하다.

 한 개의 릴레이션에 하나의 인덱스만 생성할 수 있다.

 인덱스 키 값만 정렬되어 있을 뿐 실제 데이터는 정렬되지  않는 방식이다.

 데이터를 검색하기 위해서는 먼제 인덱스를 검색하여 실제 데이터의 위치를 확인해야 하므로 클러스터드 인덱스에 비하면 검색 속도가 떨어진다.

한 개의 릴레이션에 여러 개의 인덱스를 만들 수 있다. 

 

인덱스 선정 기준

- 분포도가 좋은 컬럼은 단독으로 인덱스를 생성한다.

- 데이터의 변경이 빈번하지 않은 컬럼에 인덱스를 생성한다.

- 인덱스들이 자주 조합되어 사용되는 경우는 하나의 결합 인덱스(Concatenate Index)를 생성한다.

- 결합 인덱스의 컬럼 순서는 데이터의 분포도가 좋은 컬럼을 선행 컬럼으로 설정한다.

 

결합 인덱스를 생성하는 SQL

CREATE INDEX index_인덱스이름 ON 테이블명(컬럼명1, 컬럼명2)

 

인덱스를 사용하지 못하는 경우

- 인덱스 키 생성 시 NULL 값은 인덱스 대상에 포함되지 않으므로 NULL 값 비교 연산자인 'IS NULL' 등을 적용하여 추출한 데이터에는 인덱스를 사용해도 의미가 없다.

- <>.!=,NOT 등의 부정 연산자는 다수의 데이터를 검색하므로 인덱스를 이용하지 못하고 전체 테이블을 대상으로 검색할 때 사용한다.

 

 

 

 

 

 

[참고] 2011 시나공 정보처리기사 실기 문제집

다른 카테고리의 글 목록

Dev. 관련자격증/정보처리기사 카테고리의 포스트를 톺아봅니다