[질문]파티션테이블 삭제 0 4 5,485

by 손님 파티션테이블 파티션 [2011.07.20 15:08:58]


안녕하세요..
파티션테이블에대해 공부중인 초보개발자입니다.

5분단위로 3000건씩 insert되는 작업이라 월별로 나눠 파티션 테이블을 만들었습니다.
따라서 월별 파티션테이블에 2천5백9십만건씩 데이터가 쌓이게 되네요..
파티션 키? 인 동시에 PK키를 '날짜' 컬럼으로 두었습니다.

1년이 흘러 12개의 태이블에 모두 쌓인후 부터, 오래된 데이터를 지워주는 작업을 하려고 합니다.
시점은 1~12월까지 다 찬다음, 다음 달로 넘어가기 전날 이 작업을 수행하려고 합니다.
이때부턴 매달 말일에 다음달에 넣어줄 파티션테이블을 비우는 작업을 수행하게 되겠습니다..;;

이때 제가 생각한 방식은 맨 마지막 달의 파티션태이블을 드롭하고,
다시 생성하는 방법을 써볼려고 하는데요..제가 하려는 방식이 올바른건지 모르겠네요.
각각 매달 쌓인 데이터량이 2천5백9십만건인데 드롭하는데 시간이 많이 소요되는지 알고싶습니다.
이런 작업을 하는 중에도 5분단위로 계속 값이 들어올 예정이구요..
많은 답변 부탁드립니다~
by 현 [2011.07.20 16:05:08]
일단 님께서 질문하신 것에 대한 답변....
드롭하는데 걸리는 시간은 순식간 입니다.
데이터를 delete 하는 것이 아닌 파티션을 드롭하시는 것이기 때문에 금방 됩니다.
그런데 문제는 인덱스 입니다.
만약 인덱스가 로컬인덱스가 아닌 글로벌 인덱스라면
리빌드를 해 주셔야 합니다.
당연히 리빌드 할때는 락이 걸리므로 계속 값이 들어 오는 것은 안되겠네요..

이럴 경우 인덱스를 로컬인덱스로 만들어 주시면 해결 됩니다.

by 발로차는새 [2011.07.20 16:05:52]
네 그렇게 하시면 됩니다, 파티션 DROP/TRUNCATE 할때 시간 많이 소요되지 않습니다(수초이내)

한가지 체크하실 점은, 해당 테이블의 모든 인덱스가 LOCAL INDEX 인지 확인은 필요 합니다, GLOBAL INDEX 가 있을 경우는, 하시려는 작업의 관점으로 볼때 파티셔닝 안한 테이블과 마찬가지라고 보시면 됩니다

그리고 최근 1년간 데이터 보존이라면 DROP/ADD 하지 마시고, 12개 파티션을 만드신 후 다음달 파티션을 TRUNCATE 하는 방법은 어떨까요?

by 손님 [2011.07.20 16:22:09]
아...그렇군요..TRUNCATE 방식으로 하는게 좋을듯 싶네요..ㅎㅎ
빠른 답변 감사합니다..!

by 이재현 [2011.07.21 14:29:20]
어짜피 파티션 지난 파티션을 드롭하는 경우이니..

한번에 드롭하시는게 나을듯합니다.

그런데 월별 파티션으로 2천5백9십만건은 너무 많은거 아닌가요??

주별로 하는게 적당하다고 생각합니다.

물로 월별로 작업을 많이 한다고 치면 월별로 하셔두 상관없지만.

주별 작업이나 일별 작업이 더 많다면..

전 일별 파티션 추천을 드리고 싶습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입