Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 전체 데이터베이스 크기 한 번에 확인하는 방법

MySQL에서 모든 데이터베이스 크기 확인하기

MySQL에서는 information_schema의 TABLES 테이블을 조회하면 서버에 존재하는 모든 데이터베이스의 크기를 한 번에 확인할 수 있습니다. 각 테이블의 실제 데이터 용량(data_length)과 인덱스 용량(index_length)을 합산한 뒤, 데이터베이스별로 그룹화하면 됩니다.

기본 조회 쿼리

아래 쿼리를 실행하면 모든 데이터베이스의 크기를 MB 단위로 확인할 수 있습니다.

mysql> SELECT table_schema "Database",
    -> SUM(data_length + index_length)/1024/1024 "Size in MB"
    -> FROM information_schema.TABLES GROUP BY table_schema;

실행 결과 예시

+--------------------+----------------+
| Database           | Size in MB     |
+--------------------+----------------+
| gaurav             | 1.04785156     |
| information_schema | 0.00878906     |
| mysql              | 0.68551350     |
| performance_schema | 0.00000000     |
| sample             | 0.04687500     |
| tutorial           | 0.03125000     |
+--------------------+----------------+

6 rows in set, 1 warning (0.33 sec)

쿼리 설명

table_schema는 데이터베이스(스키마) 이름을 의미하며, data_length는 테이블에 저장된 실제 데이터의 바이트 수, index_length는 인덱스가 차지하는 바이트 수를 나타냅니다. 이 두 값을 더한 후 1024로 두 번 나누면(/1024/1024) 바이트 단위 값이 MB 단위로 변환됩니다.

유용한 응용 팁

1. 크기 순으로 정렬하기

용량이 큰 데이터베이스부터 확인하고 싶다면 ORDER BY 절을 추가합니다.

SELECT table_schema "Database",
       ROUND(SUM(data_length + index_length)/1024/1024, 2) "Size in MB"
FROM information_schema.TABLES
GROUP BY table_schema
ORDER BY SUM(data_length + index_length) DESC;

2. GB 단위로 변환하기

대용량 데이터베이스라면 MB 대신 GB 단위가 더 직관적입니다. 1024로 세 번 나누면 됩니다.

SELECT table_schema "Database",
       ROUND(SUM(data_length + index_length)/1024/1024/1024, 2) "Size in GB"
FROM information_schema.TABLES
GROUP BY table_schema;

3. 특정 데이터베이스만 확인하기

WHERE 절을 사용하면 원하는 데이터베이스 하나의 크기만 조회할 수도 있습니다.

SELECT table_name,
       ROUND((data_length + index_length)/1024/1024, 2) "Size in MB"
FROM information_schema.TABLES
WHERE table_schema = 'sample'
ORDER BY (data_length + index_length) DESC;

정리

information_schema.TABLES를 활용하면 별도의 도구 없이 SQL 쿼리만으로 MySQL 서버 전체 또는 개별 데이터베이스의 디스크 사용량을 손쉽게 파악할 수 있습니다. 스토리지 용량 관리나 성능 최적화 작업 시 유용하게 활용해 보시기 바랍니다.