2.7.14. Типы хранилищ и их изменение
Типы хранилищ
MySQL поддерживает два основных типа хранилища:
- MyISAM — имеет более простую архитектуру, таблицы этого типа занимают меньше дискового пространства, чем InnoDB.
- InnoDB — поддерживает транзакции и внешние ключи, однако имеет несколько существенных недостатков: занимаемое таблицами место может только увеличиваться и никогда не уменьшается, таблицы сложно или невозможно восстановить в случае сбоя.
Рекомендуем по умолчанию использовать MyISAM, а InnoDB применять только в тех случаях, где необходимы возможности, которых нет в MyISAM (например, транзакции).
Изменение типа хранилища
Внимание!
Перед выполнением действий создайте резервную копию базы данных.Изменить тип хранилища в отдельных таблицах MySQL можно несколькими способами.
С помощью SQL-запроса
- Подключитесь к базе данных с помощью phpMyAdmin или любого другого MySQL-клиента.
Через консоль
- Подключитесь к хостингу по SSH.
- Для конвертации всех таблиц в InnoDB выполните команду:
for n in `mysql -h хост -u логин -pПАРОЛЬ имя_БД -B -N -e "show tables;"`;do mysql -h хост -u логин -pПАРОЛЬ имя_БД -B -N -e "ALTER TABLE $n ENGINE=innodb;";done
В команде укажите данные для подключения к базе данных (всё, кроме типа хранилища, указывается в двух местах):
хост
— сервер баз данных.логин
— имя пользователя базы данных.ПАРОЛЬ
— пароль пользователя базы данных.имя_БД
— название базы данных.innodb
— тип хранилища.
При выполнении команды вывод может выглядеть так:
mysql: [Warning] Using a password on the command line interface can be insecure.
Такого сообщения не стоит пугаться. Это уведомление лишь указывает на то, что использование пароля в команде небезопасно. Если других данных нет, то команда выполнилась корректно.
С помощью PHP-скрипта
PHP-скрипт для конвертации типа хранилища представлен здесь.