Partition 의 Drop? Truncate? 관련해서 질문 드립니다. 0 1 2,726

by 훈훈후니 [Oracle 기초] [2016.02.14 21:22:28]


안녕하세요~

Oracle 11g 에서 Table 을 Interval Partition 으로 생성해서 사용하고 있습니다.

다름이 아니라 오래된 Partition 들을 삭제해야 하는데.. Interval 이 No 인 Partition 의 Last Partition 은 삭제가 안되어서..

ALTER TABLE A SET INTERVAL() 실행 후 Partition Drop 을 하고 있는데요.

저 Alter 명령어가 데이터가 많이 쌓이니까 상당히 느리더라구요.

 

그래서 오래된 Partition 을 Drop 하지 않고 Truncate 로 바꿀까 하는데..

나중에 Partition 이 몇백개 쌓이고 이러면(실제 데이터 있는건 몇개 Partition, 나머지는 다  Truncate 된 빈 껍데기 Partition) Select 나 Insert 하는 데 성능에 문제가 생길까요?

감사합니다.~

by drakula [2016.02.23 10:39:30]

음. Partition Pruning이 잘 일어 난다면. 성능상 큰 이슈는 없습니다.(8Block만 읽음. 아래 참조)

(Partition Pruning ==> 해당 파티션만 잘 읽는다면~)

 

하지만, 운  나쁘게, 전체 파티션을 다 읽어야 할 경우가 있으면, 성능상 이슈가 약간 생길 수 있습니다.

Partition Truncate를 하게 되면, Initial Extents는 반환하지는 않으나 H.W 까지 읽게 되므로 TRUNCATE 하게 되면, h.w 마크는 이미 내려와 있으므로 HEADER BLOCK 정도 더 읽을 수 있습니다. 하지만~ 그래도 drop이 더 좋지 않을까요?

 

개인적으로 Partition Drop을 권해 드립니다~!!!!!

 

P.S  데이터가 많아서 성능이 느리다고 하셨는데,  

만약, Partition Truncate 이후에 "ALTER TABLE A SET INTERVAL() "하게 되고, 성능상 느리나요?

 

PARTITION TRUNCATE  -> "ALTER TABLE A SET INTERVAL() " -> PARTITION DROP으로

한번 테스트 해보시죠?

 

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