[mysql] mysql 테이블이 myISAM 또는 InnoDB 엔진을 사용하고 있는지 어떻게 알 수 있습니까?

MySQL에서는 특정 데이터베이스에 대해 단일 테이블에 대해서만 스토리지 엔진을 지정할 수있는 방법이 없습니다. 그러나 다음을 사용하여 한 세션 동안 사용할 스토리지 엔진을 지정할 수 있습니다.

SET storage_engine=InnoDB;

따라서 각 테이블에 대해 지정할 필요가 없습니다.

실제로 모든 테이블이 InnoDB를 사용하고 있는지 어떻게 확인합니까?



답변

SHOW CREATE TABLE을 사용하는 경우 쿼리에서 엔진을 구문 분석해야합니다.

INFORMATION_SCHEMA 데이터베이스에서 선택하는 것은 좋지 않습니다. 개발자가 언제든지 스키마를 변경할 수있는 권한을 보유하기 때문입니다.

사용할 올바른 쿼리는 SHOW TABLE STATUS 입니다. 데이터베이스의 모든 테이블에 대한 정보를 얻을 수 있습니다.

SHOW TABLE STATUS FROM `database`;

또는 특정 테이블의 경우 :

SHOW TABLE STATUS FROM `database` LIKE 'tablename';

다시 보게 될 열 중 하나는 Engine입니다.


답변

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'


답변

show create table <table> 트릭을해야합니다.


답변