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

MySQL에서 InnoDB 스토리지 엔진을 사용하는 모든 테이블 조회하는 방법


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를 통해 각 테이블의 엔진 정보를 더욱 편리하게 확인할 수도 있습니다.