데이터를 삭제한 후의 테이블 스페이스에 대하여 0 5 2,376

by 빛돌 [Oracle 기초] 테이블 스페이스 HWM 데이터 삭제 [2013.04.18 14:02:14]


hwm.PNG (7,159Bytes)


테이블에서 데이터를 삭제하면, 데이터는 삭제되더라도 테이블 스페이스의 사용 가능한 용량은 그대로입니다.

이는 HWM때문이라고 들었는데요,
HWM이 테이블에서 사용되었던 마지막 블록을 가리키기 때문에 데이터가 줄어도 이 HWM은 변하지 않는다. 또한 추후에 저장되는 데이터는 HWM 이후의 공간에 저장되기 때문이라고 이해하고있습니다.

그럼 첨부한 hwm.png 파일처럼 공간이 쌓이는 것인지요?



이를 해결하기 위한 방법은

1. 새로운 테이블을 생성

2. 원본 테이블의 data를 새로운 테이블에 복제

3. 원본 테이블을 삭제

4. 새로운 테이블 이름을 원본 이름으로 변경


하는 방법밖에 없는걸까요?...


by 마농 [2013.04.18 14:23:09]
잘못 이해하셨네요.
새로 입력되는 데이터는 HWM 이후의 공간이 아닌 빈공간에 저장됩니다.
빈공간은 재활용됩니다.

by 빛돌 [2013.04.18 14:33:53]
엇 그런가요? 하지만 데이터를 삭제하기 전과 후의 테이블 스페이스의 남은 용량을 찾아봤을 때는 변함이 없었거든요.
그래서 찾아보다가 낸 결론이 본문과 같은 내용이었구요.

마농님 말씀대로라면 본문의 이미지를 예로들면, 새로 저장된 데이터는 3이 아닌 2에 저장되는게 맞는거고, 테이블 스페이스의 남은 용량을 체크했을 때도 남은 용량이 늘어나야하는게 아닌가요?...


아니면 남은 용량 체크하는 쿼리문이 HWM을 기준으로 해서 그런걸가요?..

by 마농 [2013.04.18 14:53:53]

테이블의 크기가 HWM 까지입니다. 맞는 표현인지는 모르겠네요.
정확히 말하면 Extent 받은만큼이 테이블의 크기이겠지요.
빈공간을 가지던 안가지던 테이블 크기는 변함이 없지요.


by 빛돌 [2013.04.18 17:24:10]
아하 그럼 테이블스페이스가 HWM이라고 생각하면 되는거군요.
친절하고 이해가 쏙쏙 되는 답변! 감사합니다.

by 마농 [2013.04.18 17:42:49]

테이블스페이스가 HWM 이라구요? 아닙니다...
HWM 은 테이블에서 Extent 단위로 할당된 공간을 사용공간과 미사용공간을 나누는 기준이구요.
즉 HWM 은 테이블과 관련이 있지...
테이블스페이스와는 무관합니다.
테이블스페이스는 테이블보다 더 상위의 개념입니다.

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