본문 바로가기

ORACLE11g/DATABASE 이론

[18장] 튜닝 (Tuning)

1. 튜닝의 개요


・DBMS의 성능을 향상시키는 작업.

높은 작업 처리량과 짧은 응답시간을 갖도록 하는 것.



2. 튜닝의 목표


・SQL 실행 시 디스크 블록에 대한 접근 횟수 최소화.

・필요할 때 캐시 메모리에서 신속히 가져오도록 한다.

작성 규칙을 준수하도록 한다.

・안정적인 공유도를 위해 잠금 기능의 사용을 최소화 한다.



3. 튜닝의 단계


§ 비즈니스 규칙(Business Rule) 튜닝

・설계와 구현에 대한 정확하지 않은 분석, 부적절한 비즈니스 규칙으로 인해 발생한 문제.

・동시에 많은 사용자가 접속하는 현실을 고려하여 튜닝.


§ 데이터 설계(Data Design) 튜닝

・필요한 데이터를 정확히 파악해야 한다.

・데이터간의 관계와 속성을 파악하고 구조화를 해야한다.


§ 응용 프로그램 설계(Application Design) 튜닝

・구현 목적에 따른 여러가지 설계가 가능하다.

・부하가 발생하는 시점의 시간 및 데이터를 조사한다.

・튜닝이 필요한 응용프로그램을 집중적으로 튜닝한다.


§ DB의 논리적 구조(Logical Structure) 튜닝

・부하를 예상하여 그에 맞는 스키마를 작성, 성능 향상을 도모한다.


§ DB 접근 방식(Access Method) 튜닝

・보유하고 있는 DBMS의 기능을 충분히 활용하도록 한다.


§ 접근 경로(Access Path) 튜닝

・B-트리 인덱스, 비트맵 인덱스, 역방향 인덱스 등의 사용을 고려한다.

・인덱스의 추가 및 삭제, 설계의 개선을 고려한다.


§ 메모리 관리(Memory Management) 튜닝

・효율적인 자원 할당

・캐시의 성능 개선

・SQL문의 파싱 작업 감소


§ 물리적 구조(Physical Structure) 및 입・출력(Input/Output) 튜닝

・효율적인 데이터 블록 운영으로 접근 비용 최소화

・데이터를 분산하여 입・출력 경합 감소


§ 자원의 경합(Competition) 튜닝

・블록, 공유 풀(Shared Pool), 잠금(Lock) 등의 경합 형태를 감소시키기 위해 노력.


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

・DB가 사용되는 H/W 시스템의 종류와 특성에 따라 성능에 차이가 발생한다.



4. 인덱스 튜닝


§ 인덱스 종류

・B-트리 인덱스(B-Tree Index)

― 루트에서 하위 노드로 키 값의 크기를 비교해 나가면서 검색

― 데이터 양에 상관없이 모든 데이터의 탐색 시간이 동일하다.

・비트맵 인덱스(Bitmap Index)

 인덱스 데이터를 0, 1로 변환하여 키로 사용한다.

 분포도가 좋은 컬럼에 적합, 효율적인 논리 연산이 가능하고 저장공간이 적다.

・역방향 인덱스(Reverse Index)

 인덱스 컬럼의 데이터를 역으로 변환하여 인덱스 키로 사용하는 방법

 분포도가 좋아져 검색 성능이 좋음.


§ 인덱스 선정 기준

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

변경이 빈번하지 않은 컬럼에 생성

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

・결합 인덱스의 컬럼 순서는 분포도가 좋은 컬럼을 선행으로 설정


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

NULL값은 인덱스 대상에 포함되지 않으므로 불가능.

부정 연산자는 다수의 데이터를 검색하므로 불가능.

・찾고자 하는 검색어의 첫글자를 알 수 없는 경우 불가능.

함수나 수식을 사용하면 키 값이 변형되어 불가능.



※ 클러스터드 인덱스 / 넌클러스터드 인덱스


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

・키의 순서에 따라 정렬 저장 되어 있음.

・정렬이 되어 있기 때문에 인덱스 검색 없이도 원하는 데이터를 빨리 찾을 수 있음.

・삽입, 삭제 발생 시 순서 유지를 위해 데이터를 재정렬 해야 함.

릴레이션 하나에 인덱스 하나만 생성 가능.


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

키 값은 정렬, 데이터는 정렬 되지 않음.

・인덱스를 검색하여 실제 데이터 위치를 찾아야 하므로 검색 속도는 떨어짐.

릴레이션 하나에 여러 개의 인덱스 생성 가능.


'ORACLE11g > DATABASE 이론' 카테고리의 다른 글

[20장] 고급 데이터베이스  (0) 2016.10.05
[19장] 객체 지향 데이터베이스  (0) 2016.10.05
[17장] 보안 (Security)  (0) 2016.10.05
[16장] 병행 제어 (Concurrency Control)  (0) 2016.10.05
[15장] 회복 (Recovery)  (0) 2016.10.04