반응형

테이블 생성 시 ,생성한 테이블은 하나지만(논리적 테이블은 1개) 물리적으로 테이블을 분리 할 수 있습니다. 이때 사용 되는 기술이 파티션 테이블입니다. 테이블을 분리한다는 말은 특정 컬럼을 기준으로 물리적으로 데이터를 분리하여 저장한다는 것 입니다. 예를 들어 날짜 컬럼 기준으로(ex)2017년(600만건) / 2018년(700만건) / 2019년(70만건)) 각각 테이블을 물리적으로 나누어 저장 할 수 있습니다. 어떤 이점이 있냐면 데이터 조회 시 2019년도 데이터는 2019년도 테이블만 바라보게끔 하여 전체 데이터를 조회하는 것이 아닌 70만건 만 조회하기 때문에 성능을 향상 시킬 수 있습니다. 또한 파티션 테이블의 강점은 데이터 삭제 할 때 더욱 큰 강점을 보이기도 합니다.


ms-sql 같은 경우는 파티션 테이블을 사용하기가 지인을 통해서 굉장히 까다롭다고 들었습니다. 하지만 오라클에서는 아래 구문을 통해서 쉽게 파티션 테이블을 생성 할 수 있습니다. 다음 예제를 보도록 하겠습니다.

CREATE TABLE SHOP_USER ( CLOSE_MONTH VARCHAR2(6) NOT NULL, CLOSE_DATE VARCHAR2(8) NOT NULL, SEQ VARCHAR20(20) NOT NULL, USER_NAME VARCHAR2(10), POINT_MONEY NUMBER(15) ) PARTITION BY RANGE(CLOSE_MONTH) (     PARTITION SHOP_USER_2012 VALUES LESS THAN ('201301') TABLESPACE DATA_USER,     PARTITION SHOP_USER_2013 VALUES LESS THAN ('201401') TABLESPACE DATA_USER,     PARTITION SHOP_USER_2014 VALUES LESS THAN ('201501') TABLESPACE DATA_USER,     PARTITION SHOP_USER_2015 VALUES LESS THAN ('201601') TABLESPACE DATA_USER,     PARTITION SHOP_USER_2016 VALUES LESS THAN ('201701') TABLESPACE DATA_USER,     PARTITION SHOP_USER_2017 VALUES LESS THAN ('201801') TABLESPACE DATA_USER,     PARTITION SHOP_USER_ETC VALUES LESS THAN (MAXVALUE) TABLESPACE DATA_USER );

정산월(CLOSE_MONTH) 기준으로 테이블을 나눴습니다. 2012년 데이터는 SHOP_USER_2012 테이블에 들어가고 2013년 데이터는 SHOP_USER_2013 테이블에 값이 들어갑니다. 2018년 데이터 부터는 SHOP_USER_ETC 테이블에 값이 들어 가겠습니다. TABLESPACE를 명시하지 않으면 DB세팅시 디폴트 테이블 스페이스에 생성이 되겠습니다. 하나 명심해야 될 것은 파티션을 나누고 각각의 파티션 네임을 선언하고 데이터가 각각 들어가지만, 실제 사용은 SHOP_USER 테이블 하나만 사용 하는 것입니다. 데이터 조회 시 어떤 파티션 테이블 조회하는지 확인을 하고 싶을 때는 실행계획을 확인하여 알 수 있습니다.

반응형

+ Recent posts