본문으로 바로가기

1. 테이블 정보

INFORMATION_SCHEMA.TABLES

DESC information_schema.tables;

+------------------+---------------------+------+-----+---------+-------+
| Field            | Type                | Null | Key | Default | Extra |
+------------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG    | varchar(512)        | NO   |     |         |       |
| TABLE_SCHEMA     | varchar(64)         | NO   |     |         |       |
| TABLE_NAME       | varchar(64)         | NO   |     |         |       |
| TABLE_TYPE       | varchar(64)         | NO   |     |         |       |
| ENGINE           | varchar(64)         | YES  |     | NULL    |       |
| VERSION          | bigint(21) unsigned | YES  |     | NULL    |       |
| ROW_FORMAT       | varchar(10)         | YES  |     | NULL    |       |
| TABLE_ROWS       | bigint(21) unsigned | YES  |     | NULL    |       |
| AVG_ROW_LENGTH   | bigint(21) unsigned | YES  |     | NULL    |       |
| DATA_LENGTH      | bigint(21) unsigned | YES  |     | NULL    |       |
| MAX_DATA_LENGTH  | bigint(21) unsigned | YES  |     | NULL    |       |
| INDEX_LENGTH     | bigint(21) unsigned | YES  |     | NULL    |       |
| DATA_FREE        | bigint(21) unsigned | YES  |     | NULL    |       |
| AUTO_INCREMENT   | bigint(21) unsigned | YES  |     | NULL    |       |
| CREATE_TIME      | datetime            | YES  |     | NULL    |       |
| UPDATE_TIME      | datetime            | YES  |     | NULL    |       |
| CHECK_TIME       | datetime            | YES  |     | NULL    |       |
| TABLE_COLLATION  | varchar(32)         | YES  |     | NULL    |       |
| CHECKSUM         | bigint(21) unsigned | YES  |     | NULL    |       |
| CREATE_OPTIONS   | varchar(2048)       | YES  |     | NULL    |       |
| TABLE_COMMENT    | varchar(2048)       | NO   |     |         |       |
| MAX_INDEX_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       |
| TEMPORARY        | varchar(1)          | YES  |     | NULL    |       |
+------------------+---------------------+------+-----+---------+-------+

[주요 컬럼 정보]

TABLE_SCHEMA : 테이블이 속한 스키마(데이터베이스)의 이름입니다.

TABLE_NAME : 테이블의 이름입니다.

TABLE_TYPE : 테이블의 유형입니다. 
(SYSTEM VIEW, BASE TABLE, VIEW)

ENGINE : 테이블용 스토리지 엔진
(InnoDB, MyISAM, PERFORMANCE_SCHEMA, Aria, CSV, MEMORY)

TABLE_ROWS : 테이블의 행 개수
 MyISAM은 정확한 개수를 저장
→ InnoDB경우 이 값은 근사치이며 실제 값과 40%에서 50%까지 다를 수 있습니다.
(정확한 값은  SELECT COUNT(*))

AVG_ROW_LENGTH : 평균 행 길이

DATA_LENGTH 
MyISAM의 경우 데이터 파일의 길이(바이트)
InnoDB의 경우 클러스터형 인덱스에 할당된 대략적인 공간의 양(바이트)

MAX_DATA_LENGTH :
 MyISAM의 경우 MAX_DATA_LENGTH데이터 파일의 최대 길이
 InnoDB에 대해 사용하지 않음

INDEX_LENGTH 
 MyISAM의 경우 INDEX_LENGTH 인덱스 파일의 길이(바이트)
 InnoDB의 경우 INDEX_LENGTH 클러스터 되지 않은 인덱스에 할당된 대략적인 공간의 양(바이트)

DATA_FREE : 할당되었지만 사용되지 않은 바이트 수

AUTO_INCREMENT : 다음에 들어갈 AUTO_INCREMENT값

CREATE_TIME : 테이블 생성시간

UPDATE_TIME : 데이터 파일이 마지막으로 업데이트된 시간

 

TABLE_COLLATION : 해당 문자셋을 어떻게 정렬할지를 결정하는 알고리즘
 ORDER BY 나 LIKE,  Primary Key 나 Unique, 비교 연산자 등 여러 SQL 연산에 영향을 줌

 

CREATE_OPTIONS : CREATE TABLE와 함께 사용되는 추가 옵션 


TABLE_COMMENT : 테이블을 생성할 때 사용된 주석

 

2. DB 크기 조회

SELECT table_schema,
       ROUND(SUM(data_length + index_length),2) as 'SIZE(B)',
       ROUND(SUM(data_length + index_length)/(1024),2) as 'SIZE(KB)',
       ROUND(SUM(data_length + index_length)/(1024*1024),2) as 'SIZE(MB)',
       ROUND(SUM(data_length + index_length)/(1024*1024*1024),2) as 'SIZE(GB)'
FROM information_schema.tables
WHERE table_schema = 'DB 이름'
GROUP BY table_schema
ORDER BY 2 DESC;

3. TABLE 크기 조회

SELECT table_name,
       ROUND((data_length + index_length),2) as 'Size(B)',
       ROUND((data_length + index_length)/(1024),2) as 'Size(KB)',
       ROUND((data_length + index_length)/(1024*1024),2) as 'Size(MB)',
       ROUND((data_length + index_length)/(1024*1024*1024),2) as 'Size(GB)'
FROM information_schema.tables
WHERE table_schema = 'DB 이름'
# AND table_name = 'Table 이름'
GROUP BY table_name
ORDER BY 2 DESC;

4. 실제 파일 크기 조회

1. 데이터 파일 경로 조회

SHOW VARIABLES
WHERE Variable_name = 'datadir';

 

2. 경로로 접근하여 확인

// 특정 디렉터리의 하위 디렉터리 포함 크기 조회(kb 단위)
# du /var/lib/mysql/
2804    /var/lib/mysql/mysql
4       /var/lib/mysql/performance_schema
2212276 /var/lib/mysql/test_db
2426976 /var/lib/mysql/

// 특정 디렉터리의 하위 디렉터리 포함 크기 조회(-h 옵션 사용하여 보기 좋은 단위로 변경)
# du -h /var/lib/mysql/
2.8M    /var/lib/mysql/mysql
4.0K    /var/lib/mysql/performance_schema
2.2G    /var/lib/mysql/test_db
2.4G    /var/lib/mysql/

// 특정 디렉터리만 크기 조회
# du -sh /var/lib/mysql/
2.4G    /var/lib/mysql/