본문 바로가기
컴퓨터/Oracle

[Oracle]Range partition table

by TEATO 2014. 7. 23.
반응형

[Oracle]Range partition table


테이블을 구성할때 파티션을 나누는것은 매우 중요합니다.

성능상 그리고 관리차원에서 꼭 필요하죠. range partition은 범위를 정해서

데이터를 자주 뽑아낼때 이에 맞춰서 구성하면 아주 유용하게 쓰일 수 있습니다.


먼저 C드라이브에 4개의 폴더를 만들겠습니다.

실습이라 이렇게 하지만 실제로 구성할때는 C D E F등 다른 디스크장치로

지정하는것이 좋겠죠 


각각에 테이블 스페이스를 만들어 줍니다.


RANGE PARTITION TABLE을 만드는 문법은 위와 같이 됩니다.

위는 2011년 데이터, 2012년, 2013, 2014 데이터를 각각의 파티션에 나눠서 저장하도록 만들었습니다.

IDATE라는 DATE를 기준으로 분할을 하고있죠.


이렇게 데이터를 넣게되면 서로다른 테이블스페이스에 데이터가 저장됩니다.


조회를 할때는 마치 하나의 테이블스페이스에서 조회되는 것처럼 나오네요


파티션 테이블이 잘 만들어졌나 확인하는방법은 

USER_TAB_PARTITIONS라는 테이블을 조회하면 알 수 있습니다.


ALTER TABLE [table_name] ENABLE ROW MOVEMENT

라는 명령어를 주고나서 2012년도 데이터를 2013으로 바꿧다면 자동으로 

2013이 저장되는 테이블스페이스로 데이터가 이동하게 됩니다.


RAGE PARTITION TABLE은 이처럼 구성했을때 년도별로 데이터를 불러온다면

데이터가 모아져있기 때문에 성능상으로도 유리하고 다른년도를 조회하는 사용자하고는

I/O도 분리되니 정말 효율적이겠죠.

하지만 2012년도 2013년도 2014년도를 섞어서 데이터를 뽑아 불러와야한다면

여러테이블스페이스에서 뽑아서 조합해야 하므로 효율면에서 떨어지겠죠.

이처럼 상황에 따라 파티션테이블을 잘 구성해야 효율적으로 관리할 수 있습니다.



반응형

댓글