Как перевести таблицу из InnoDB в MyISAM

Admin MySQL, WordPress

Меняем формат хранения табличных данных. Переводим таблицы базы данных для WordPress из InnoDB в MyISAM.

Зачем может понадобиться смена формата таблиц?

У каждой из таблиц есть свои преимущества и недостатки. В целом считается, что InnoDB более надежная база для больших структур, чем MyISAM.

Однако на деле, в привычной жизни рядового вебмастера таблицы с InnoDB приносят больше проблем, чем MyISAM. Потому что последние чинить гораздо проще.

Ниже ошибка в базе данных InnoDB, которая не чинится встроенными инструментами SQL, phpMyAdmin или WordPress.

Вы будете получать уведомления:

the storage engine for the table doesn't support repair wordpress

Также в логах можно увидеть ошибки от InnoDB такого рода:

171027 15:11:53 InnoDB: The InnoDB memory heap is disabled
171027 15:11:53 InnoDB: Mutexes and rw_locks use GCC atomic builtins
171027 15:11:53 InnoDB: Compressed tables use zlib 1.2.7
171027 15:11:53 InnoDB: Using Linux native AIO
171027 15:11:53 InnoDB: Initializing buffer pool, size = 128.0M
171027 15:11:53 InnoDB: Completed initialization of buffer pool
171027 15:11:53 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
171027 15:11:53  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
171027 15:11:54  InnoDB: Waiting for the background threads to start
171027 15:11:55 Percona XtraDB (http://www.percona.com) 5.5.49-MariaDB-38.0 started; log sequence number 402087117

Для починки таких ошибок нужно заходить через SHH, создавать DUMP InnoDB и затем его восстанавливать. А это несколько замороченее, чем починка таблиц MyISAM.

Переводим таблицы из InnoDB в MyISAM

К тому же таблицах в таблицах InnoDB полноценные текстовой поиск не работает (хотя в последних версиях вроде как заявлена). Это приводит к тому, что некоторые плагины поиска на WordPress либо просят перевести таблицу в другой формат либо ищут некачественно.

Команда перевода основных таблиц WordPress из InnoDB в MyISAM:

ALTER TABLE wp_commentmeta ENGINE=myisam;
ALTER TABLE wp_comments ENGINE=myisam;
ALTER TABLE wp_links ENGINE=myisam;
ALTER TABLE wp_options ENGINE=myisam;
ALTER TABLE wp_postmeta ENGINE=myisam;
ALTER TABLE wp_posts ENGINE=myisam;
ALTER TABLE wp_termmeta ENGINE=myisam;
ALTER TABLE wp_terms ENGINE=myisam;
ALTER TABLE wp_term_relationships ENGINE=myisam;
ALTER TABLE wp_term_taxonomy ENGINE=myisam;
ALTER TABLE wp_usermeta ENGINE=myisam;
ALTER TABLE wp_users ENGINE=myisam;

Команды нужно вводить в phpMyAdmin или в программах работающих с базами данных удалённо, например, Sequel Pro.

Метки:

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Комментарии к статье “Как перевести таблицу из InnoDB в MyISAM” (2)

  • Вадим
    23.12.2022 в 16:51

    Как в итоге, после стольких лет, стоит ли переходить или не трогать если работает? Производительность больше всего интересует, есть ли заметные улучшения после конвертации?

    • Admin
      Автор записи
      26.12.2022 в 12:48

      Просадки в производительности не заметил. Проблем после перевода в MyISAM не заметил. Если брать в целом — то после стольких лет отдаю предпочтение PostgreSQL. Если есть возможность работать с ним, то лучше он.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Как перевести таблицу из InnoDB в MyISAM"