Almost Over

Конвертация InnoDB в MyISAM и обратно

Конвертация InnoDB в MyISAM и обратно

По вопросу, чем отличается InnoDB от MyISAM, можно обратиться к гуглу, рассмотрев все минусы и плюсы того или иного типа хранения данных. От себя же вкратце скажу так: если у Вас сильно большой и динамический ресурс (форум, соц-сеть, etc.), требующий много как операций чтения, так и записи, то лучше всего будет использовать InnoDB. Если же сайт более-менее статический и требует больше операций чтения, чем записи (блог, новостной сайт, и т.д.), в таком случае лучше будет использовать MyISAM.

Но самое главное отличие этих типов наблюдается при частом бекапировании баз данных — это блокировка таблиц у MyISAM на время бекапа. С InnoDB можно свободно работать даже во время бекапов БД. Соответственно, если вы делаете очень частые бекапы или Ваша БД разрослась до такого объёма, что время бекапа длится очень долго, то наилучшим выбором также будет InnoDB.

Для конвертации типа хранения данных не требуется никаких экспортов или импортов. По-сути, делается обыкновенный запрос и тип таблицы меняется. И, конечно же, перед любыми манипуляциями с базами данных, делаем бэкап.

$ mysql -u root -p%PASS% %DB_NAME%
$ show tables;

Смотрим, в какой именно таблице нужно сменить тип, ниже это и вводим в %TABLE_NAME%.

InnoDB -> MyISAM

$ alter table %TABLE_NAME% ENGINE=MyISAM;

MyISAM -> InnoDB

$ alter table %TABLE_NAME% ENGINE=InnoDB;

P.S. Через внешний SQL-запрос (например, через PHPMyAdmin) достаточно выбрать нужную БД и в поле SQL-запроса ввести предыдущую команду.