ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 데이터 중복제거 안되는 이유
    스토리지 지식 2020. 12. 26. 02:50

    데이터의 중복 제거를 스토리지가 담당하고 있긴 하나, 중복 제거가 잘 되는지의 여부는 시스템의 환경과 데이터의 형식에 크게 좌우된다. 전자는 VDI 환경과 같이 중복된 데이터가 많을 때이고, 후자는 암호화되지 않은 순수 데이터 파일일 경우 중복 제거에 유리하다.

     

    오라클 데이터 파일은 암호화되어 있지 않은 일반 파일임에도 불구하고 중복 제거가 거의 되지 않는다. 이는, 오라클 데이터 블록에서 그 해답을 찾을 수 있다.

     

    Oracle Data Block Format

     

    Oracle은 데이터베이스의 Datafile에 있는 저장 공간을 Data block이라는 단위로 관리한다. 데이터 블록은 데이터베이스에서 사용하는 가장 작은 데이터 단위이다. 이 데이터 블록 사이즈는 2KB에서 32KB까지 다양하지만, 기본적으로 8KB를 대부분 사용한다.

     

    데이터 블록에는 데이터베이스에 저장되는 순수 데이터 (Table or Index)뿐만 아니라, 여러가지 정보를 함께 담고 있다. 예를 들면, 블록에 대한 주소, 세그먼트 타입 (데이터 또는 인덱스)과 같은 제너럴 블록 정보 등이 포함된다. 만일 스토리지의 블록 사이즈도 8KB라면 (8KB로 슬라이싱된 블록으로 중복 제거 연산), 데이터 블록별 동일한 Row Data를 갖고 있다 하더라도, 블록의 고유한 헤더 정보로 인해 같은 데이터 블록으로 판단할 수 없게 된다. 또한, 동일 테이블의 같은 Row라 하더라도 Column 데이터까지 두 데이터블록에 동일하게 저장될 확률은 극히 낮기에 데이터블록이 중복되기란 쉽지 않다.

     

    정리하면, Oracle Data Block은 Overhead (Header, Table Directory, Row Directory를 총칭함)와 Row Data로 구성되는데, 데이터 (테이블 or 인덱스)가 저장되는 Row Data 영역이 같더라도 Overhead가 다르므로 중복된 블록이 발생할 수 없다. 다만, 스토리지가 오라클의 기본 데이터블록 (8KB)보다 작은 사이즈로 중복 제거 처리한다면 중복 제거 가능성이 높아지긴 하나, 이 또한 실제 중복 제거율은 매우 낮다.

    참고로, 데이터 블록의 오버헤드 사이즈는 평균적으로 84~107Byte이다.

     

     

    댓글

Designed by Tistory.