Database

[MySQL] 테이블 용량 확인

비번변경 2022. 3. 12. 19:20

데이터베이스의 스토리지 용량이 계속 문제가 돼서 모든 테이블 용량을 확인하려고 한다.

테이블 용량은 테이블의 상태 정보를 통해 확인할 수 있다.

 

모든 테이블 용량의 합

모든 데이터베이스, 모든 테이블 용량의 합을 계산한다.

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;

데이터베이스 별 모든 테이블 용량의 합