데이터베이스의 스토리지 용량이 계속 문제가 돼서 모든 테이블 용량을 확인하려고 한다.
테이블 용량은 테이블의 상태 정보를 통해 확인할 수 있다.
모든 테이블 용량의 합
모든 데이터베이스, 모든 테이블 용량의 합을 계산한다.
SELECT
SUM(DATA_LENGTH),
SUM(INDEX_LENGTH),
SUM((DATA_LENGTH + INDEX_LENGTH))
FROM information_schema.TABLES;
# GB 단위로 출력
SELECT
ROUND(SUM(DATA_LENGTH /(1024 * 1024 * 1024)), 2) AS 'DATA_SIZE(GB)',
ROUND(SUM(INDEX_LENGTH /(1024 * 1024 * 1024)), 2) AS 'INDEX_SIZE(GB)',
ROUND(SUM((DATA_LENGTH + INDEX_LENGTH)/(1024 * 1024 * 1024)), 2) AS 'TOTAL(GB)'
FROM information_schema.TABLES;
data_length, index_length는 byte 단위이다. 보기 쉽게 GB 단위로 출력하기 위해서는 적절하게 계산해야 한다.
특정 데이터베이스의 모든 테이블 용량의 합
특정 데이터베이스의 모든 테이블의 합을 계산하여, 데이터베이스 이름과 함께 출력한다.
SELECT
TABLE_SCHEMA,
SUM(DATA_LENGTH + INDEX_LENGTH) AS 'TOTAL_SIZE'
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = '<DATABASE_NAME>';
# GB 단위로 출력
SELECT
TABLE_SCHEMA,
SUM(ROUND((DATA_LENGTH + INDEX_LENGTH)/(1024 * 1024 * 1024), 2)) AS 'TOTAL_SIZE_GB'
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = '<DATABASE_NAME>';
데이터베이스 별 모든 테이블 용량의 합
데이터베이스 별 모든 테이블 용량의 합을 계산하여, 데이터베이스 이름과 함께 출력한다.
SELECT
TABLE_SCHEMA,
SUM(DATA_LENGTH + INDEX_LENGTH) as 'TOTAL_SIZE'
FROM information_schema.TABLES
GROUP BY TABLE_SCHEMA
ORDER BY TABLE_SCHEMA;
# GB 단위로 출력
SELECT
TABLE_SCHEMA,
SUM(ROUND((DATA_LENGTH + INDEX_LENGTH)/(1024 * 1024 * 1024), 2)) as 'TOTAL_SIZE_GB'
FROM information_schema.TABLES
GROUP BY TABLE_SCHEMA
ORDER BY TABLE_SCHEMA;