[DB2] Table Size 알아보기

첫번째방법.

http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.rtn.doc/doc/r0052897.html

SELECT TABSCHEMA, TABNAME, SUM(DATA_OBJECT_P_SIZE),
SUM(INDEX_OBJECT_P_SIZE), SUM(LONG_OBJECT_P_SIZE),
SUM(LOB_OBJECT_P_SIZE), SUM(XML_OBJECT_P_SIZE)
FROM SYSIBMADM.ADMINTABINFO GROUP BY TABSCHEMA, TABNAME

이 방식에는 단점이 하나 있습니다.

WHERE 조건에 필터링을 사용하더라도 내부적으로는 전체 CATALOG 뒤져서 결과를 가져온 필터링 조건을 적용하여 해당 결과만 표시하는 듯합니다. 따라서 오브젝트가 많을 경우 시간도 오래걸리고 또한 수행 도중 오브젝트에 LOCK 걸려 있으면 LOCKTIMEOUT 발생하게 되서 튕겨져 나오기도 합니다.

 

• 2번째방법

통계정보가 주기적으로 수행이 된다면 SYSCAT.TABLES FPAGES SYSCAT.INDEXES NLEAFS 에다 해당 테이블스페이스의 페이지 사이즈를 곱하면 대략적인 크기를  있습니다.

(이건 통계정보가 최신일수록 정확합니다.)

 

• 3번째방법

db2pd -d <database_alias> - tcbstats

이건 통계정보와는 상관없이 해당 테이블이 액세스 되었다면

메모리에 해당 테이블에 대한 정보가 올라오게 .

(액세스 되지 않았다면 메모리에 올라오지 않아 보이지 않기 때문에

간단히 몇건만 SELECT 하셔도 메모리에 올라옴.)

여기에는 액세스 내역과 크기 정보가 있다.

데이터는 DataSize 항목을 인덱스의 경우는 IndexObjSize 항목을 참조.

또한 페이지 사이즈 .

유의할 점은 인덱스의 경우 개별 인덱스의 크기가 아닌 해당 테이블 인덱스의 전체 크기임.

Designed by JB FACTORY