MySQL 서버에서 InnoDB 스토리지 엔진을 사용하는 모든 테이블의 이름을 한눈에 확인하고 싶다면, information_schema.TABLES 뷰를 조회하면 됩니다. 이 뷰에는 현재 MySQL 인스턴스에 존재하는 모든 데이터베이스와 테이블의 메타데이터가 저장되어 있어, 원하는 조건에 맞는 테이블을 손쉽게 필터링할 수 있습니다.
InnoDB 테이블 조회 쿼리
아래 쿼리는 ENGINE 값이 'InnoDB'인 테이블만 골라서 데이터베이스 이름, 테이블 이름, 엔진 타입을 함께 출력합니다. 시스템 데이터베이스(mysql, information_schema, performance_schema)는 제외되어 있으므로, 실제 사용자 데이터베이스에 속한 테이블만 깔끔하게 확인할 수 있습니다.
mysql> SELECT TABLE_SCHEMA AS DATABASENAME,
-> TABLE_NAME AS AllTABLENAME,
-> ENGINE AS ENGINETYPE
-> FROM information_schema.TABLES
-> WHERE ENGINE = 'InnoDB'
-> AND TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema');
실행 결과
위 쿼리를 실행하면 InnoDB 엔진을 사용하는 테이블 목록이 출력됩니다. 아래는 전체 결과 중 일부입니다.
+--------------+------------------+------------+ | DATABASENAME | AllTABLENAME | ENGINETYPE | +--------------+------------------+------------+ | sys | sys_config | InnoDB | | business | mytable | InnoDB | | business | primarytable | InnoDB | | business | tblstudent | InnoDB | | business | modifydatatype | InnoDB | | business | nulldemo | InnoDB | | business | groupdemo | InnoDB | | sample | mytable | InnoDB | | sample | yourtable | InnoDB | | education | university | InnoDB | | education | student | InnoDB | | test | destination | InnoDB | +--------------+------------------+------------+ 194 rows in set (0.01 sec)
전체 실행 결과로 총 194개의 테이블이 조회되었습니다. 각 행에는 해당 테이블이 속한 데이터베이스(DATABASENAME), 테이블 이름(AllTABLENAME), 그리고 사용 중인 스토리지 엔진 유형(ENGINETYPE)이 순서대로 표시됩니다.
쿼리 구성 요소 설명
- TABLE_SCHEMA AS DATABASENAME : 테이블이 속한 데이터베이스(스키마) 이름을 출력합니다.
- TABLE_NAME AS AllTABLENAME : 테이블 이름을 출력합니다.
- ENGINE AS ENGINETYPE : 해당 테이블이 사용하는 스토리지 엔진의 종류를 출력합니다.
- WHERE ENGINE = 'InnoDB' : InnoDB 엔진을 사용하는 테이블만 필터링합니다.
- TABLE_SCHEMA NOT IN (...) : mysql, information_schema, performance_schema와 같은 시스템 데이터베이스를 결과에서 제외합니다.
추가 팁
특정 데이터베이스에 속한 InnoDB 테이블만 확인하고 싶다면 WHERE 절에 AND TABLE_SCHEMA = '데이터베이스명' 조건을 추가하면 됩니다. 또한 MySQL 8.0 이상 버전에서는 SHOW TABLE STATUS 명령이나 data dictionary를 통해 각 테이블의 엔진 정보를 더욱 편리하게 확인할 수도 있습니다.