Как я знаю, использует ли таблица mysql myISAM или InnoDB Engine? - PullRequest
76 голосов
/ 23 декабря 2010

В MySQL нет способа указать механизм хранения для определенной базы данных, только для отдельных таблиц.Однако вы можете указать механизм хранения, который будет использоваться в течение одного сеанса, с помощью:

SET storage_engine=InnoDB;

Так что вам не нужно указывать его для каждой таблицы.

Какподтвердите, если действительно все таблицы используют InnoDB?

Ответы [ 3 ]

120 голосов
/ 23 декабря 2010

Если вы используете SHOW CREATE TABLE, вам нужно разобрать механизм из запроса.

Выбор из базы данных INFORMATION_SCHEMA - плохая практика, так как разработчики оставляют за собой право изменить свою схему в любое время (хотя это маловероятно).

Правильный запрос для использования: ПОКАЗАТЬ СТАТУС СТАТУСА - вы можете получить информацию обо всех таблицах в базе данных:

SHOW TABLE STATUS FROM `database`;

Или для конкретной таблицы:

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

Один из столбцов, который вы получите, - Engine.

15 голосов
/ 23 декабря 2010
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'
3 голосов
/ 23 декабря 2010

show create table <table> должен сделать свое дело.

...