[DB2] Table Size 알아보기
- Databases/DB2
- 2020. 10. 25.
• 첫번째방법.
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 항목을 참조.
이 또한 페이지 사이즈 임.
유의할 점은 인덱스의 경우 개별 인덱스의 크기가 아닌 해당 테이블 인덱스의 전체 크기임.
'Databases > DB2' 카테고리의 다른 글
[DB2] 레지스트리 및 환경 변수 (0) | 2020.10.27 |
---|---|
[DB2] Tablespace와 그 상태 분석하기 (0) | 2020.10.26 |
[DB2] Tablespace와 Bufferpool간의 성능 고려사항 (0) | 2020.10.13 |
[DB2] With문을 이용한 Recursive SQL (0) | 2020.09.17 |
[DB2] 통계정보(Runstats) 백업방법 (0) | 2020.09.13 |