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

По умолчанию используется InnoDB.

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

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

Внимание!

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

Изменить тип хранилища в отдельных таблицах 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-скрипт для конвертации типа хранилища представлен здесь.

Содержание