앞서 MySQL 데이터베이스 전체의 크기를 확인하는 방법을 살펴보았습니다. 같은 원리로 특정 데이터베이스에 속한 개별 테이블의 크기도 손쉽게 조회할 수 있습니다. 이때 활용하는 것이 바로 information_schema.TABLES 뷰입니다.
테이블 크기 조회 쿼리
아래 쿼리는 SAMPLE 데이터베이스에 포함된 모든 테이블의 크기를 MB 단위로 계산하여 보여줍니다.
mysql> SELECT
-> table_name AS "Table",
-> round(((data_length + index_length) / 1024 / 1024), 2) as SIZE
-> FROM information_schema.TABLES
-> WHERE table_schema = "SAMPLE"
-> ORDER BY SIZE;
+-------------+-------+
| Table | SIZE |
+-------------+-------+
| employee | 0.02 |
| student | 0.02 |
| new_student | 0.02 |
+-------------+-------+
3 rows in set (0.00 sec)쿼리 해설
- data_length + index_length: 테이블의 실제 데이터 용량과 인덱스 용량을 합산한 값입니다.
- / 1024 / 1024: 바이트 단위를 메가바이트(MB) 단위로 변환합니다.
- round(..., 2): 결과를 소수점 둘째 자리까지 반올림해 가독성을 높입니다.
- WHERE table_schema = "SAMPLE": 조회 대상을 SAMPLE 데이터베이스로 한정합니다.
실행 결과
위 출력 결과는 SAMPLE 데이터베이스에 있는 세 개의 테이블(employee, student, new_student)이 각각 약 0.02MB 크기임을 보여줍니다.
참고로 현재 쿼리는 크기가 작은 순서(오름차순)로 정렬되어 있습니다. 가장 용량이 큰 테이블부터 확인하고 싶다면 마지막 줄을 ORDER BY SIZE DESC;로 변경하면 됩니다.