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-скрипт для конвертації типу сховища представлений тут.

Зміст