오라클 delete 후 insert시 데이터 블럭 질문있습니다! 0 4 3,649

by 블루블랙까마귀 [Oracle 기초] [2015.03.25 14:40:50]


안녕하세요 구루비에서 항상 많은 것을 배워가는 개발자입니다.

(초기 테이블스페이스 사용용량 0%)

1. TEST_TABLE에 데이터 천만건 INSERT
(테이블스페이스 사용용량 50%)

2.  TEST_TABLE에 데이터 모두 DELETE
(테이블스페이스 사용용량 50%)

3. TEST_TABLE에 데이터 천만건 INSERT

(테이블스페이스 사용용량 50%)

 

3번 작업까지하였을때 제가 생각하였을때는 
테이블스페이스 사용용량이 100%인걸로 알고있었거든여
왜냐하면 오라클은 delete를 하여 빈 데이터블럭을 만들더라도
그 공간에 insert가 불가능한걸로 알고있었는데,,
만약 delete를 쓸꺼면 쉬링크작업을 같이하고 
그게 아니라면 truncate를 해야만 실제 사용할 수 있는 데이터공간이 확보되는걸로 알고있었는데..

3번작업까지의 작업을 테스트 해보니까 실제 테이블스페이스사용용량이 50%정도인데,,

 

이렇다는것은 오라클이 delete를 하면 빈블럭이 생기고
추가로 insert되었을대 그 빈블럭에 데이터를 넣을수있는것인가요?..
궁금합니다 ㅠ

 

 

by 임상준 [2015.03.25 14:46:19]

"왜냐하면 오라클은 delete를 하여 빈 데이터블럭을 만들더라도
그 공간에 insert가 불가능한걸로 알고있었는데,," 부분을 잘못 알고 계십니다. 여기 강좌에 나와 있을거예요


by 블루블랙까마귀 [2015.03.25 15:15:19]

좋은정보 감사합니다.

 

그럼 delete를 해서 생긴 빈블럭에 insert를 다시 하는건 아니고

insert를 또다른 블럭에다가 하는구조인것같네요

대신 실제 디스크  사이즈는 증가하지 않는,,

 

위구조로가게 되면

select하였을때 조회해야할 블럭이 많아지니 성능적으로 조금 느려질순있을것같아요

성능이슈를 해결하기 위해서는 쉬링크작업을 해주면될것같고

맞게 이해했는지 모르겠네요ㅎㅎ,,


by 마농 [2015.03.25 17:11:04]

전체 삭제시 공간이 그대로 인것은 빈공간까지도 용량으로 보기 때문이구요.

이 공간을 줄이는것과 이 공간을 사용할 수 있는것과는 별개 문제입니다.

빈공간은 재활용 됩니다. 물론 여러 제약이 따르겠지요...

원칙적으로 "빈공간은 재활용 안된다"는 틀린 말입니다.


by 블루블랙까마귀 [2015.03.25 17:35:39]

답변감사합니다

마농님 덕분에 많이 알아가고있습니다.

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