안녕하세요~
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 하는 데 성능에 문제가 생길까요?
감사합니다.~
음. 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으로
한번 테스트 해보시죠?