반응형

오늘은 오라클 DB의 테이블 사이즈를 조회 하는 방법과

인덱스 사이즈 그리고 1Row 별 사이즈 까지 조회하는 방법에 대해 알아보겠습니다.

 

1. 테이블 사이즈 조회

아래 쿼리는 소유자 별로 소유한 테이블들의 사이즈를 조회하는 쿼리이다.

SELECT owner, segment_name, segment_type, sum(bytes)/1024/1024 as MB
FROM dba_segments
WHERE segment_type='TABLE'
AND owner = '소유자명'
GROUP BY owner, segment_name, segment_type
ORDER BY MB desc;

 

ex) 쿼리 조회 결과

OWNER SEGMENT_NAME SEGMENT_TYPE MB
HONGCODING MY_TABLE1 TABLE 43215
HONGCODING MY_TABLE2 TABLE 32541
HONGCODING MY_TABLE3 TABLE 1790
HONGCODING MY_TABLE4 TABLE 521

 

또는 아래와 같은 쿼리로도 조회가 가능하다.

SELECT A.SEGMENT_NAME, ROUND(SUM(A.BYTES)/1024/1024) "SIZE_MB", A.SEGMENT_TYPE
FROM DBA_SEGMENTS A, DBA_TABLES B
WHERE A.SEGMENT_NAME = B.TABLE_NAME
AND A.SEGMENT_TYPE IN ('TABLE', 'TABLE_PARTITION')
AND A.OWNER = '소유자명'
GROUP BY A.SEGMENT_NAME, A.SEGMENT_TYPE
ORDER BY 2 DESC;

 

2. 인덱스 사이즈 조회

방법은 위의 2번 방법과 굉장히 유사하다.

쿼리의 TABLE을 넣는 자리에 INDEX를 넣으면 된다.

SELECT A.SEGMENT_NAME, ROUND(SUM(A.BYTES)/1024/1024) "SIZE_MB", A.SEGMENT_TYPE
FROM DBA_SEGMENTS A, DBA_INDEXES B
WHERE A.SEGMENT_NAME = B.INDEX_NAME
AND A.SEGMENT_TYPE IN ('INDEX', 'INDEX PARTITION')
AND A.OWNER = '소유자명'
GROUP BY A.SEGMENT_NAME, A.SEGMENT_TYPE
ORDER BY 2 DESC;

 

ex) 쿼리 조회 결과

SEGMENT_NAME SIZE_MB SEGMENT_TYPE
MY_INDEX1 3512 INDEX
MY_INDEX2 2140 INDEX
MY_INDEX3 520 INDEX

 

3. 테이블 1Row 사이즈 조회

아래 쿼리는 테이블 별로 각 1Row 의 사이즈를 조회하는 쿼리이다.

select table_name, sum(data_length) byte
from all_tab_columns
where owner = '소유자명'
group by table_name
order by byte desc;

해당 결과로

1 Row 사이즈 * Row 수 를 계산하여

새로 넣을 데이터의 총 크기도 알 수가 있겠죠?

 

이렇게 오늘은

테이블 사이즈를 조회하는 방법과

인덱스 사이즈를 조회하는 방법,

테이블 별 1Row 의 사이즈를 조회하는 방법에 대해 알아보았습니다.

 

긴 글 읽어주셔서 감사합니다!

반응형

+ Recent posts