> 자료실 > News Letter
 
Download
News Letter
Site Link
XpertMon 뉴스레터 62호 - 향상된 Row Compression
2010/03/11 17:39 18142



DB2 V9.7
에서는 보다 발전된 형태의 데이터 압축 성능을 보여 주고 있습니다. 이는 기존의 제품 보다 더욱더 스토리지 공간 사용률을 줄 일 수 있게 되었습니다.

 

DB2 V9.7에서 향상 된 압축 기술

l        Index Compression

l        Temp table Compression

l        XML Compression (XDA)

l        Replication support for compression

 

1. Index Compression

   인덱스 압축을 통하여 디스크 스토리지의 사용량을 30~50% 까지 줄일 수 있게 되었습니다.

테이블이 압축 가능하도록 작성된 경우 디폴트로 인덱스 역시 압축이 되도록 되어 있습니다. 이 외 명시적으로 Create / Alter Index 문장을 통해서도 인덱스 압축 여부를 결정할 수 있습니다.

 

CREATE / ALTER INDEX <index_name> COMPRESS YES

 

압축 사용이 활성화 되어 있을 시 인덱스 생성 시 자동으로 압축이 수행되도록 되어 있습니다.

Alter Index 문장을 통해 Compress YES / NO를 수행한 경우는 반드시 Reorg 명령을 통해 인덱스를 Rebuild 해 주어야 합니다. 인덱스 rebuild 과정에서 compress/uncompress 동작이 수행됩니다.

, MDC의 블록 인덱스, XML path 인덱스, 카탈로그 인덱스는 압축이 되지 않습니다.

 

인덱스가 생성되거나 데이터가 삽입될 때 데이터베이스 메니저는 새로 들어온 키 값을 인접한 인덱스 키 값과 비교를 통해 Prefix 하는 방식으로 압축을 수행합니다.




그림 1. Index Compression

 

인덱스 압축을 통해 얻을 수 있는 이익에 대한 정보를 SQL을 통해 미리 확인 할 수 있도록 새로운 Table 함수가 새로이 추가 되었고, SYSCAT.INDEXES에 압축 관련 컬럼이 새로이 추가 되었습니다.

추가된  테이블 함수

l        ADMIN_GET_INDEX_INFO(‘object_type’, ‘object_schema’, ‘object_name’)

l        ADMIn_GET_INDEX_COMPRESS_INFO(‘object_type’, ‘object_schema’, ‘object_name’,

dbpartitionum, datapartitionid)

변경된 SYSCAT.INDEXES – DB2V9.5와 비교 새로 추가된 컬럼

컬럼명

설명

COMPRESSION

인덱스 압축이 활성화되었는지 여부를 지정

PCTPAGESSAVED

인덱스 압축의 결과로 인덱스에 저장되는 페이지의 대략 적인 백분율

(Runstats 결과에 의해 갱신 됨.)

AVGLEAFKEYSIZE

인덱스에 있는 leaf 페이지의 키에 대한 평균 인덱스 크기

AVGNLEAFKEYSIZE

인덱스에 있는 n-leaf 페이지의 키에 대한 평균 인덱스 크기

LASTUSED

-

 

2. Temporary Table Compression

DB2 V97 에서는 사용자가 정의한 Temporary 테이블에 대해서도 데이터 압축 기능을 지원 합니다. 임시 테이블 작성 시 사용되는 디스크 공간의 절약과 함께 쿼리 성능 향상 이라는 이점을 얻게 됩니다.

 

임시 테이블 데이터 압축 기능이 사용되기 위해서는 Storage Optimization Feature 라이선스가 등록 되어야 합니다. DGTT./CGTT에 대한 데이터 압축이 바로 수행되며, 일반 적인 영구 보관 테이블의 샘플링 선정 압축과는 다른 압축 알고리즘을 사용하게 됩니다.

임시 테이블에 대한 압축은 옵티마이저에 의해 압축 여부가 판단 되어지며, 압축 여부는 Explain을 통해서 확인이 가능합니다.  db2pd를 이용 임시 테이블 스페이스의 사용률을 확인 할 수 있습니다.

 

3. XML(XDA) & LOB Compression

 XML 데이터 압축은 기존의 데이터 압축과 동일한 구조를 가지고 있습니다. CREATE/ALTER TABLE 문에 COMPRESS YES를 통해서 데이터 압축 여부를 결정합니다.

 




그림 2. XML Compression

 

XML LOG 처리의 개선 된 기능으로 XML 값과 LOB 데이터를 기본 테이블의 행으로 저장할 수 있도록 변경되었습니다. 이전 버전의 경우 XML이나 LOB의 경우 별도의 LOB 스토리지 오브젝트를 통해 저장을 하였으나, CREATE TABLE INLINE LENGTH 키워드를 통해 테이블의 행으로 저장 할 수 있습니다. INLINE LENGTH를 통해 LOB 컬럼의 크기를 결정한 경우 해당 크기 이하의 데이터에 대해서는 테이블의 행으로 저장이 되며, 그 이상의 크기가 들어온 경우 디폴트 LOB 스토리지 오브젝트에 저장되게 됩니다. INLINE으로 저장된 XML LOB에 대해서는 기본 데이터와 동일하게 압축이 가능합니다.

 

4. Replication Support for compression

DB2 V9.7 에서는 복제(Replication) 시 소스 테이블에 대해 Compress 옵션과 DATA CAPTURE CHANGES 옵션의 혼용이 가능해 졌습니다. 이 의미는 Capture Log 레코드로부터 uncompress 된 데이터를 읽어 올 수 있다는 것입니다.

 

db2ReadLogAPI를 통해 log 레코드로부터 decompress log 데이터를 읽어 올 수 있습니다.

REORG RESETDICTIONARY 옵션을 통해 compress dictionary를 새로 만들게 된 경우, 현재 데이터 compress dictionary 와 바로 전 시점의 데이터 compress dictionary historical compress dictionary를 통해서 compress dictionary 변경 전의 데이터를 가져 올 수 있습니다.

 




그림 3. db2ReadLogAPI

목록 글쓰기 수정