오라클이 엔터프라이즈급이 아니여서 파티션 테이블을 사용 할 수 없습니다.
그래서 테이블을 아주 작게 분리 하여 로그성 테이터를 저장할 생각 인데요,
보관 기간으로 계산해보니, 204228 개의 테이블을 생성 해 주어야 하는군요. (뜨악 ㅜ.ㅜ)
Oracle에서 테이블 수 Limits을 찾아 보니 unlimit 던데요,
이렇게 무식하게 테이블을 많이 만들어서 사용 해도 성능에 지장 없을 까요?
성능이 문제가 아니라....관리를 어떻게 하느냐가 문제죠. 너무 많으면 관리하기 어렵습니다.
보통 파티션 기능이 없을 경우... 그리고 보관주기 설정이 가능할 경우 다음과 같은 방법을 흔히 사용합니다.
보관주기 1년, 월 단위 데이터 관리
1월,2월,3월~12월 로 테이블을 12개 만듭니다. 1월일 때 해당 테이블을 최초 truncate한 후 데이터를 입력합니다. 2월이 되면 2월 테이블에 데이터를 넣습니다. 1년이 지나서 해를 넘기면 다시 1월 테이블을 Truncate 한후 데이터를 넣습니다. (필요하면 백업 받고 truncat할 수도 있겠죠.)
delete로 삭제하지 않는 이유는 데이터량이 많은 경우 DB에 많은 부하를 주기 때문입니다. 물론 Undo 사용량도 많아지게 됩니다.
이 경우 테이블명이 계속 변해야 하므로 mylog_m1, mylog_m2 .... dynamic Query로 작성해야하고 쿼리 복잡도가 올라가는 불편함이 있지만 단순 로그성일 경우에는 유효한 방법입니다.
(쿼리를 단순하게 하기 위해 View를 활용하는 방안도 강구하시기 바랍니다.)
보관주기가 없어서 영구보관을 해야 한다면... 변경 조회가 빈번한 최근 1년치 데이터만 월 단위로 12개 테이블로 운용하시고... 1년 이전 데이터는 1개의 통 테이블에 관리하시면 테이블 개수를 13개로 관리할 수 있습니다. 옛날 데이터는 단순보관용이고 조회나 변경이 일어날 가능성이 거의 없기 때문이죠.