데이터양이 몇 천만 건을 넘어서면 아무리 서버 사양이 훌룡하고 인덱스를 잘 생성해 준다고 하더라도 SQL문장의 성능이 나오지않는다. 이때는 논리적으로 하나의 테이블로 보이지만, 물리적으로 여러 개의 테이블 스페이스에 쪼개어 저장될수 있는 파티셔닝을 적용한다.
8.9.1 범위 파티션 적용
다음은 요금 테이블에 PK가 요금일자+요금번호로 구성되어 있고, 데이터 건수가 1억 2천만건인 대용량 테이블의 경우다. 하나의 테이블로는 너무 많은 데이터가 존재하므로 성능이 느리다. 이때 요금의 특성상 항상 월단위로 데이터를 처리하는 경우가 많으므로 PK인 요금일자의 년+월을 이용하여 12개의 파티션 테이블을 만들었다.하나의 파티션 테이블당 평균 천만건의 데이터가 있다고 가정한다.
SQL문장을 처리할 때는 마치 하나의 테이블처럼 보이는 테이블을 이용하여 처리하면 되지만, DBMS내부적으로 SQL WHERE절에 비교된 요금일자에 의해 각 파티션에 있는 정보를 찾아가므로 평균 천만건의 데이터가 있는 곳을 찾아도 되어 성능이 개선될 수 있다.
범위 파티션은 데이터 보관주기에 따라 테이블에 데이터를 쉽게 지울 수 있으므로 (파티션 테이블을 DROP하면 되므로) 데이터 보관주기에 따른 테이블 관리가 용이하다
8.9.2 리스트 파티션 적용
지점,사업소, 사업장, 핵심적인 코드값 등으로 PK가 구성되어 있고, 대량의 데이터가 있는 테이블이라면 각각의 값에 의해 파티셔닝되는 리스트 파티션을 적용할수 있다.
그림 8-31은 고객 테이블에 데이터가 1억 건이 있는데, 하나의 테이블에서 데이터를 처리하기에는 SQL문장이 성능이 저하되어 지역을 나타내는 사업소 코드별로 리스트 파티션을 적용한 예다.
데이터양이 늘어나면 필수적으로 파티셔닝 기준을 나눌 수 있는 조건에 따라 적절한 파티션닝 방법을 선택하여 성능을 향상시키도록 한다.