DB2 데이터베이스 구조 및 관리방안(reorganization, runstats, optimizer, 추출)

RDBMS인 DB2 데이터베이스의 논리적 데이터베이스 구조와 DB2 데이터베이스의 관리방안에 대해서 알아보고자 한다.

DB2 데이터베이스는 실무에서 오라클(Oracle) 데이터베이스와 함께 종종 사용되곤 한다.

 

DB2 논리적 데이터베이스 구조

DB2 는 아래와 같이 물리적인 데이터 파일을 논리적으로 구조화한다.

(Storage Group, Database, Tablespace, Table, Index, View)

 

데이터베이스 논리적 구조
데이터베이스 논리적 데이터베이스 구조

DB2 데이터베이스 관리 방안

데이터베이스 관리 방안을 재구성(Reorganization), Runstats, Optimizer, 추출 등 으로 나누어 살펴보자.

 

(1) 데이터베이스 재구성(Reorganization)

 

데이터베이스 재구성(reorganization)은 테이블 내 데이터가 자주 insert 또는 delete 되는 경우 데이터가 산발적으로 저장되어 data fetch시 성능저하 우려를 막기위해 수행한다. 이로써 SQL의 성능향상(효율적인 Fetch)과 디스크 단편화 현상등을 축소할 수 있다.

 

 

데이터베이스 재구성
왼쪽은 재구성 전, 오른쪽은 재구성 후 데이터의 배열이다.

위 처럼 보다 나은 실행경로(plan)와 조각난 공간을 회수하기 위하여 테이블스페이스 또는 인덱스를 정돈하는 작업이다.

데이터베이스 재구성
데이터베이스 재구성

위와 같은 작업은 서비스 환경마다 다양한 주기로 실시한다. 보통 데이터의 입출력량에 따른 데이터 산발정도 및 성능 보장의 정도에 따라 달라질 수 있다. 주기적인 부분은 경험치적인 부분이라고 할 수 있다. 실시대상은 Extent가 과다 발생한 테이블, 인덱스 혹은 조각난 공간(단편화)이 일정 수준 이상이거나 데이터 정렬(sort, fetch 효율성 저하우려)이 일정수준 이하인 테이블 및 인덱스를 대상으로 한다.

 

이를 수행하면 물리적인 공간을 효율적으로 사용할 수 있고 보다 효율적인 프로그램 실행경로(Access Path)로 수행가능하다.

 

(2) 데이터베이스 통계자료 작성(Runstats)

 

데이터베이스의 현황에 대한 세부정보를 Catalog에 수집 및 기록하는 것을 말한다.

 

데이터베이스 runstats
데이터베이스 Runstats

데이터베이스 내 보관중인 테이블스페이스(tablespace), 테이블(table), 인덱스(index) 각각에 해당하는 여러가지 정보(데이터 건수, 데이터 정돈상태 등)을 catalog에 기록한다.

 

runstats 구조
Runstat 구조

DB2 성능 데이터는 거래정보(수행횟수, 시간, CPU사용시간 등)을 테이블에 저장하여 수집된다.

보통 영업일에 해당하는 CPU 사용량 및 TOP CPU 과다 점유 트랜잭션을 점검하고 이를 저장한다.

Deadlock 발생정보도 저장하여 애플리케이션 단에서 개선할 수 있는 방안을 찾기위한 부가정보로 활용한다.

 

또한 전체 테이블스페이스 및 인덱스를 대상으로 RUNSTAT을 실행하면 DB 엔진이 실행경로(plan)을 선택하는데 기초 판단자료로서 활용하게 되므로 매우 중요한 의미를 지닌다고 할 수 있다. 더불어 Reorg 시점을 판단하는데 사용되기도 한다.

 

(3) 최적화(Optimizer)

 

SQL문장과 가능한 Index 정보, Catalog를 통한 통계 데이터를 이용하여 최적의 프로그램 실행경로를 결정한다.

 

데이터베이스 최적화
Query Optimizer

(4) 데이터 추출

 

매일 서비스를 통해 누적되는 업무용 데이터를 특정 주기마대 대상을 산정하고 삭제(추출)하는 것을 말한다.

통상적으로 데이터를 소멸시키지 않으며 별도의 디스크 장치에 보관한다. (용량당 비용을 중요하게 생각, 고려요소임)

스페이스 효율적인 사용 및 프로그램 실행경로의 최적화가 가능하다.

 

데이터베이스 데이터 추출
데이터베이스 추출 개념

프로그램 실행경로 등을 통해 최적화도 가능하지만 실제 데이터베이스 튜닝을 통해서도 성능최적화가 가능하다.

성능 최적화를 위한 관리방안인 데이터베이스 튜닝에 대해서 궁금하면 아래 포스팅을 참고하시면 도움이 될 것 같다.

 

2020/08/01 - [Public/데이터베이스] - 왜 데이터베이스(DB) 튜닝을 해야할까?

 

왜 데이터베이스(DB) 튜닝을 해야할까?

왜 데이터베이스(DB) 튜닝을 해야할까? - 개념/특징/성능분석 등 데이터베이스 튜닝에 대해서 언제, 누가, 어떻게, 무엇을, 어떻게, 왜 하는지 살펴보고자 한다. 또한 위의 단계에서 살펴본 데이터

travislife.tistory.com

 

+ Recent posts