MySQL 테이블의 스토리지 엔진 확인하기
MySQL에서 특정 테이블이 MyISAM 엔진을 사용하는지, 아니면 InnoDB 엔진을 사용하는지 확인하고 싶다면 SHOW TABLE STATUS 구문을 활용하면 됩니다. 이 명령은 테이블 이름뿐만 아니라 엔진 종류, 행 형식, 생성 시간 등 다양한 메타 정보를 한 번에 보여줍니다.
데이터베이스의 모든 테이블 조회
데이터베이스에 속한 여러 테이블의 엔진 정보를 한꺼번에 확인하려면 아래 구문을 사용합니다.
show table status from yourDatabaseName;
특정 테이블만 조회
특정 테이블 하나의 엔진만 확인하고 싶다면 LIKE 절에 테이블 이름을 지정하면 됩니다.
show table status from yourDatabaseName Like 'yourTableName';
실제 사용 예시
1) 전체 테이블의 엔진 조회
아래는 sampleTest 데이터베이스의 모든 테이블 엔진을 출력하는 쿼리입니다.
mysql> show table status from sampleTest;
실행 결과는 다음과 같습니다.
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | datetimedemo | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 0 | NULL | 2018-12-05 09:22:54 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | primarydemo | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 0 | NULL | 2018-12-05 09:23:34 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | student | MyISAM | 10 | Dynamic | 0 | 0 | 0 | 281474976710655 | 1024 | 0 | 1 | 2018-12-05 09:22:22 | 2018-12-05 09:22:23 | NULL | utf8mb4_0900_ai_ci | NULL | | | +--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ 3 rows in set (0.19 sec)
결과의 Engine 컬럼을 보면 datetimedemo와 primarydemo는 InnoDB, student는 MyISAM 엔진을 사용하고 있음을 알 수 있습니다.
2) 특정 테이블의 엔진 조회
이번에는 student 테이블 하나만 지정해서 엔진 타입을 확인해 보겠습니다.
mysql> show table status from sampletest Like 'student';
실행 결과는 다음과 같으며, student 테이블만 출력됩니다.
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | student | MyISAM | 10 | Dynamic | 0 | 0 | 0 | 281474976710655 | 1024 | 0 | 1 | 2018-12-05 09:22:22 | 2018-12-05 09:22:23 | NULL | utf8mb4_0900_ai_ci | NULL | | | +---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ 1 row in set (0.00 sec)
참고: 다른 확인 방법
SHOW TABLE STATUS 외에도 엔진 정보를 확인할 수 있는 방법이 있습니다.
- SHOW CREATE TABLE: 테이블 생성 문구 마지막에
ENGINE=...항목으로 엔진이 표시됩니다.SHOW CREATE TABLE student; - information_schema 조회: 데이터베이스 전체 테이블의 엔진을 SQL로 필터링해 볼 수 있습니다.
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'sampleTest';
이처럼 간단한 명령어 몇 개만 익혀두면 테이블별 스토리지 엔진을 손쉽게 파악할 수 있으며, 성능 최적화나 백업 전략을 세울 때 큰 도움이 됩니다.