DB에 저장되는 실제 데이터사이즈 구하려면?? 0 5 3,468

by 현아남푠 [SQL Query] 테이블스페이스 [2016.01.04 19:03:39]


안녕하세요, 다들 새해 복 많이 받으십시오. 저는 현아남푠 입니다.

궁금한점이 있어서 이렇게 글을 올립니다.

제가 실무로 데이터베이스를 사용하는데 테이블스페이스의 데이터파일 용량이 꽉 차서 용량을 늘렸습니다.

But, 얼마 후에 또 용량이 꽉 차는지 계산하기 위해 테이블에 row를 추가해주었는데 여유용량이 변하지 않았습니다. 

용량 구하는 쿼리문은 아래처럼 하였습니다.

select a.TABLESPACE_NAME as "테이블스페이스",
round( sum(a.BYTES) ) || 'Byte' as "전체",
round( sum(b.FREES) ) || 'Byte' as "여유"
from ( select FILE_ID, TABLESPACE_NAME, SUM(BYTES) BYTES
from DBA_DATA_FILES -- 전체용량
group by FILE_ID, TABLESPACE_NAME) a,
( select TABLESPACE_NAME, FILE_ID, SUM(BYTES) FREES
from DBA_FREE_SPACE -- 여유용량
group by TABLESPACE_NAME, FILE_ID ) b
where a.TABLESPACE_NAME = b.TABLESPACE_NAME and a.FILE_ID = b.FILE_ID
group by a.TABLESPACE_NAME;

 

1 row 부터 시작하여 50,000 row 정도 데이터를 insert 하여도..

저 쿼리문을 입력하면 여유 용량이 변하지 않습니다.

이게 안되면 그냥 data type을 더해서 용량 계산하려고 하는데 data type더한 크기가

그대로 저장되는지도 잘 모르겠고..ㅜㅠ

좀 도와 주십시오~

감사합니다.

현아남푠 올림.

 

ps) data type은 아래와 같습니다.

INTEGER
VARCHAR2(16 Byte)
DATE
INTEGER
CHAR(3 Byte)
INTEGER
INTEGER
INTEGER
INTEGER
CHAR(1 Byte)
INTEGER
INTEGER

 

 

by 부쉬맨 [2016.01.05 09:51:34]

http://www.gurubee.net/lecture/1099


by 현아남푠 [2016.01.05 14:15:51]

우선 답변 감사드립니다.

그런데 해당 강좌를 봐도 제가 한 sql문과 별반 차이가 없습니다...

아무리 데이터를 추가해도 해당 테이블스페이스의 데이터파일은 변함이 없습니다.

다만, UNDOTBS01.DBF 파일 사이즈는 변화가 있는데 이건 어떻게 해석해야 하죠...??


by 타락천사 [2016.01.06 08:32:05]

Tablespace 가 LMT 라고 가정 하에

TABLE SIZE 가 1G 이상이라면, 그 이후로 용량 할당은 64M 단위로 이루어 집니다.

중요한건 실제 INSERT 작업을 수행 하셨어도, TABLE 입장에서 이미 allocation 된 extent 로

Cover 된다면 추가로 extent를 할당 받지 않으면, free 용량 변화가 없겠죠..

 


by 현아남푠 [2016.01.06 18:10:03]

답변 감사드립니다.

그럼 table size를 강제로 늘리고 위의 쿼리문을 날리면 row 저장한 만큼 저장공간이 변화할까요??

용량 알수있는 방법좀 부탁드립니다..ㅠ


by 마농 [2016.01.07 10:51:35]

row 저장한 만큼 변하는게 아니죠.

Extent 할당 받은 만큼씩 변하겠죠.

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