2.7.14. Типы хранилищ и их изменение

Примечание

По умолчанию на хостинге используется тип хранилища MyISAM.

MySQL поддерживает два основных типа хранилища:

  • MyISAM — имеет более простую архитектуру, таблицы этого типа занимают меньше дискового пространства, чем InnoDB.
  • InnoDB — поддерживает транзакции и внешние ключи, однако имеет несколько существенных недостатков: занимаемое таблицами место может только увеличиваться и никогда не уменьшается, таблицы сложно или невозможно восстановить в случае сбоя.

Рекомендуем по умолчанию использовать MyISAM, а InnoDB применять только в тех случаях, где необходимы возможности, которых нет в MyISAM (например, транзакции).

Внимание!

Перед выполнением действий создайте резервную копию базы данных.

Изменить тип хранилища в отдельных таблицах MySQL можно несколькими способами.

  1. Подключитесь к базе данных с помощью phpMyAdmin или любого другого MySQL-клиента.
  2. Для нужных таблиц выполните SQL-запрос вида:
    ALTER TABLE table_name ENGINE=InnoDB;

    В запросе вместо table_name укажите нужную таблицу, а вместо InnoDB — нужный тип движка хранилища.

  1. Подключитесь к хостингу по SSH.
  2. Для конвертации всех таблиц в 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-скрипт для конвертации типа хранилища представлен здесь.

Содержание