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

MySQL에서 테이블의 현재 크기(메모리 사용량) 확인하는 방법

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(*) 쿼리를 함께 사용하는 것이 좋습니다.