기술자료
DBMS, DB 구축 절차, 빅데이터 기술 칼럼, 사례연구 및 세미나 자료를 소개합니다.
DB2 튜닝 가이드 Part 2: 최상의 성능을 위한 DB 구성(1) 대부분의 DB2 시스템은 ' 성능 전개 (performance evolution)' 과정을 거친다 . 시스템을 배포한 후 시스템 모니터링을 하고 , 만약 문제점이 발생되면 문제해결 과정을 거친다 . DB2 튜닝 가이드는 단계별로 최상의 성능을 위한 최적의 설정을 제시함으로써 , DB2 시스템 성능이 최상을 유지하도록 도와준다 . 이번 회는 DB2 튜닝 가이드 중 최상의 성능을 위한 DB 구성 첫 번째로 DB2 데이터 분할 (DPF), 코드 페이지와 데이터 정렬 선택 , 물리적 데이터베이스 디자인 , 초기 DB2 구성 설정 등을 알아본다 .<연재순서 >
DB2 데이터 분할 기능 (DPF) 코드 페이지와 데이터 정렬 선택 물리적 데이터베이스 디자인 초기 DB2 구성 설정 필자소개DB2 튜닝 가이드 Part 2: 최상의 성능을 위한 DB 구성(1)
DB2 튜닝 가이드 Part 1: 최상의 성능을 위한 시스템 구성
DB2 튜닝 가이드 Part 2: 최상의 성능을 위한 DB 구성 (1)
데이터베이스에 다중 언어로 된 데이터가 포함되고 , 해당 데이터의 올바른 정렬 순서가 중요하다면 , UCA500R1_xxx 같은 정확한 데이터 정렬 중 하나를 사용한다 . 이러한 데이터 정렬은 데이터와 애플리케이션에 따라 IDENTITY 시퀀스에 비해 1.5~3 배 가량의 성능 오버헤드를 발생시킬 수 있다 . 정확한 데이터 정렬에는 표준화와 비표준화된 방식 모두 갖고 있다 . UCA500R1_NO 같은 표준화된 데이터 정렬은 잘못된 문자를 처리하는 추가 검사가 있는 반면 , UCA500r1_NX 같은 표준화 되지 않은 데이터 정렬에는 추가 검사가 없다 . 잘못된 문자의 처리가 문제가 되지 않는다면 , 표준화 코드 방지로 인한 성능상의 이점을 위해 표준화 되지 않은 버전을 사용한 것이 좋다 . 표준화되어 있지 않으며 문화적으로 올바른 데이터 정렬은 매우 부담 ( expensive ) 이 된다 . 데이터베이스가 다양한 언어를 호스팅하지 않고도 단일 바이트 환경에서 유니코드 환경으로 변환하는 경우 , ‘ 언어 인식 (language aware)' 데이터 정렬을 사용한다 . 언어 인식 데이터 정렬은 대부분의 유니코드 데이터베이스에 한 가지 언어로만 된 데이터를 포함한다 . 이 데이터 정렬은 SYSTEM_819_BE 와 같은 단일 바이트 데이터 정렬로 , 동일한 조회 테이블 기반 데이터 정렬 알고리즘을 사용하기 때문에 매우 효율적이다 . 일반적으로 단일 바이트 데이터베이스의 데이터 정렬 동작이 허용되는 경우 , 언어 콘텐츠가 유니코드로 변환되면서 심각한 변화가 없는 한 문화적으로 인식 가능한 데이터 정렬을 고려한다 . 이 데이터 정렬은 문화적으로 올바른 데이터 정렬보다 현저히 높은 성능을 제공한다 .
일반적으로 파일 기반의 데이터베이스 관리 스토리지 (Database Managed Storage) 정규 테이블 스페이스는 시스템 관리 스토리지 (System Managed Storage) 정규 테이블 스페이스보다 더 나은 성능을 제공한다 . 임시 테이블이 아주 작은 경우에 SMS 는 주로 임시 테이블 스페이스에 사용된다 . 그러나 이 경우 시간이 지남에 따라 SMS 의 성능 이점은 줄어든다 . 과거에는 DMS 원시 장치 (raw device) 테이블 스페이스는 DMS 파일 테이블 스페이스 보다 상당히 많은 성능 이점이 있었다 . 그러나 직접적인 I/O 가 도입된 DMS 파일테이블 스페이스는 DMS 원시 장치 (raw device) 테이블 스페이스와 같은 성능을 제공한다 . I/O 는 현재 CREATE TABLESPACE 와 ALTER TABLESPACE, ALTER TABLESPACE 구문의 NO FILE SYSTEM CACHING 절에 기본값으로 설정되었다 .
DB2 9.1 버전부터 데이터베이스를 생성할 때 , AUTOCONFIGURE 명령문이 자동으로 실행되지만 AUTOCONFIGURE 명령문은 여전히 명시적 으로 실행하는 것이 더 좋다 . 왜냐하면 시스템에 대한 결과를 조정할 수 있는 키워드 / 값 쌍 (pair) 을 지정할 수 있기 때문이다 . 데이터베이스를 채운 다음 AUTOCONFIGURE 명령문을 실행한다 . 이렇게 하면 데이터베이스 특성에 대해 더 많은 정보를 가진 도구를 제공하다 . 원칙적으로 ‘ 채움 (populated)' 은 상당한 양의 활성 데이터 (active data) 를 의미한다 . 이러한 데이터는 버퍼 풀 크기 계산에 영향을 미친다 . 데이터가 너무 많거나 적어도 계산의 정확도는 떨어진다 . mem_percent, tpm 와 num_stmts 같은 주요 AUTOCONFIGURE 명령문 키워드 등에 대해 다른 값을 시도하여 이러한 변경으로 인해 어떤 구성 값이 어느 정도 영향을 받는지 알아 본다 . 다른 키워드나 값을 사용해 보는 경우 apply none 옵션을 사용한다 . 이렇게 하면 현재 설정된 값과 권장되는 값을 비교해 볼 수 있다 . 기본값이 시스템에 적절하지 않을 수 있기 때문에 모든 키워드에 대해 값을 지정한다 . 예를 들어 mem_percent 기본값을 25% 으로 지정하면 전용 DB2 서버의 경우 너무 낮은 값이 된다 . 이 경우 85% 를 지정해야 한다 .
Thomas Rech:DB2 SAP Center of Excellence 선임 컨설턴트
Gang Shen:IBM Data Servers 기술 영업 전문가
Roman B. Melnyk:DB2 Information Development출처 : KDUG (http://www.kdug.kr/)제공 : DB포탈사이트 DBguide.net