MySQL에서 특정 테이블의 현재 크기와 메모리 사용량 등 상세 정보를 확인하려면 SHOW TABLE STATUS 명령어를 사용하면 됩니다. 이 명령은 테이블 이름, 스토리지 엔진, 행 수, 데이터 길이 등 다양한 정보를 한 번에 보여줍니다.
1. 기본 문법
SHOW TABLE STATUS LIKE '테이블명'\G
여기서 \G 옵션을 붙이면 결과가 세로 형태로 출력되어 가독성이 훨씬 좋아집니다.
2. 예제 테이블 생성
먼저 실습용 테이블을 만들어 보겠습니다.
mysql> CREATE TABLE DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> CustomerName varchar(20),
-> CustomerAge int,
-> CustomerCountryName varchar(20)
-> );
Query OK, 0 rows affected (0.75 sec)3. 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> INSERT INTO DemoTable(CustomerName,CustomerAge,CustomerCountryName) VALUES('John',24,'US');
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable(CustomerName,CustomerAge,CustomerCountryName) VALUES('Carol',22,'UK');
Query OK, 1 row affected (0.14 sec)4. 저장된 레코드 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> SELECT * FROM DemoTable;
출력 결과
+----+--------------+-------------+---------------------+ | Id | CustomerName | CustomerAge | CustomerCountryName | +----+--------------+-------------+---------------------+ | 1 | John | 24 | US | | 2 | Carol | 22 | UK | +----+--------------+-------------+---------------------+ 2 rows in set (0.00 sec)
5. 테이블 크기 조회 쿼리 실행
이제 DemoTable의 현재 크기(메모리 사용량)를 확인하는 쿼리를 실행합니다.
mysql> SHOW TABLE STATUS LIKE 'DemoTable'\G
출력 결과
*************************** 1. row *************************** Name: DemoTable Engine: InnoDB Version: 10 Row_format: Dynamic Rows: 0 Avg_row_length: 0 Data_length: 16384 Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: NULL Create_time: 2019-06-10 16:35:55 Update_time: NULL Check_time: NULL Collation: utf8_unicode_ci Checksum: NULL Create_options: Comment: 1 row in set (0.01 sec)
주요 항목 해석
출력 결과에서 테이블 크기와 관련된 핵심 항목은 다음과 같습니다.
- Data_length: 데이터 파일이 차지하는 실제 크기입니다. 위 예제에서는 16384바이트(16KB)로, InnoDB 엔진의 최소 페이지 단위 크기입니다.
- Index_length: 인덱스가 사용하는 디스크 공간입니다.
- Data_free: 삭제된 데이터로 인해 확보되었지만 아직 재사용되지 않은 여유 공간입니다.
- Avg_row_length: 행당 평균 길이를 의미합니다.
참고로 Rows 값이 0으로 표시되는 것은 InnoDB 엔진의 통계 정보가 실시간으로 갱신되지 않기 때문일 수 있으며, 정확한 행 수가 필요하다면 COUNT(*) 쿼리를 함께 사용하는 것이 좋습니다.