Меняем формат хранения табличных данных. Переводим таблицы базы данных для WordPress из InnoDB в MyISAM.
Зачем может понадобиться смена формата таблиц?
У каждой из таблиц есть свои преимущества и недостатки. В целом считается, что InnoDB более надежная база для больших структур, чем MyISAM.
Однако на деле, в привычной жизни рядового вебмастера таблицы с InnoDB приносят больше проблем, чем MyISAM. Потому что последние чинить гораздо проще.
Ниже ошибка в базе данных InnoDB, которая не чинится встроенными инструментами SQL, phpMyAdmin или WordPress.
Вы будете получать уведомления:
Также в логах можно увидеть ошибки от InnoDB такого рода:
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_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.
Как в итоге, после стольких лет, стоит ли переходить или не трогать если работает? Производительность больше всего интересует, есть ли заметные улучшения после конвертации?
Просадки в производительности не заметил. Проблем после перевода в MyISAM не заметил. Если брать в целом — то после стольких лет отдаю предпочтение PostgreSQL. Если есть возможность работать с ним, то лучше он.