DB2의 데이터 관리는 page 단위로 이뤄진다. 그리고 지원하는 page 크기는 4K, 8K, 16K, 32K 가 존재한다.

이번 달에 출시된 V10.5 에서는 페이지 크기를 넘는 row를 기존 페이지에 관리할 수 있는 기능이 지원되었지만, 이런 page 단위의 데이터 관리는 IO 성능 관리에서 중요한 부분을 차지한다.

 

DB2에서는 여러 page에 데이터가 분리되어 들어가는 것을 허용하지 않기 때문에 데이터 단편화(?) 가 발생하지 않는다.

반면, 테이블을 생성 전 어떤 페이지 크기로 사용할 것인지 고민이 필요하다.

 

이런 데이터 단편화에 대한 의미는 2가지로 구분을 할 수 있는데, 일반적으로는 “row chain”으로 인식이 되는 것 같다.

그래서 경쟁사에 비해 DB2는 데이터 단편화가 발생하지 않는다는 말을 과거에 많이 들었고 경쟁사 대비 장점이였다.

 

그러나 DB2도 단편화는 발생한다. 이것을 DB2에서는 overflow라고 표현을 하는데  기존 record가 수정되면서 공간 부족으로 현재의 page에 저장이 되지 못하는 경우, 여유있는 페이지에 record를 저장하고 record가 저장된 위치만 현 page에 저장이 되는 현상을 말한다.

이것을 row migration 이라고 표현을 한다.

 

나름 엄격한 데이터 관리 방식으로 데이터 단편화를 현상을 원천 봉쇄를 하지만, 수정된 데이터에 대해서는 row migration은 발생할 수 있고

syscat.tables 뷰의 overflow 컬럼을 통하여 migration된 페이지를 확인할 수 있다.

이 수치가 커지는 경우 table reorg 및 index reorg 작업이 수행될 필요가 있다.

 

+ Recent posts