WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Ремонт и оптимизация таблиц базы данных в WordPress

C таблицами Базы Данных может случиться разное и есть много кейсов, когда ремонт (REPAIR TABLE) или оптимизация (OPTIMIZE TABLE) таблиц БД решает проблему.

Несколько примеров:

  1. У меня бывало такое, что при попытке получить какие-либо данные из БД их там просто не было, хотя при проверке они там есть.

  2. Другой пример, из практики моего коллеги - таблица wp_options весит космические 11-17 ГБ, а при дампе всего 10-100 МБ. После запуска:

    OPTIMIZE TABLE wp_options;

    17 ГБ превратились в 311 КБ. Сделал так для всех сайтов, в итоге освободил около 100 ГБ места на сервере.

    Дело тут видимо в каком-то кэше, который передавался при копировании БД из одного сайта к другому.

Родной скрипт WordPress для оптимизации БД

В WordPress есть родной скрипт для ремонта таблиц базы данных. Находится он по адресу: http://mysite.com/wp-admin/maint/repair.php это самодостаточный скрипт, но для обращения к этому скрипту (файлу) напрямую по URL, в wp-config.php должна быть установлена константа:

define( 'WP_ALLOW_REPAIR', true );

Если такая константа есть, то при переходе по URL вы увидите такую страницу (диалоговое окно):

Немного о SQL командах OPTIMIZE и REPAIR

OPTIMIZE TABLE

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

Как автоматизировать данную операцию на сервере?

Для отдельной таблицы это можно сделать SQL-запросом

OPTIMIZE TABLE table_name

Для всех таблиц в базе, с помощью утилиты mysqlcheck.

mysqlcheck --user=uuuuuu --password=pppppp --optimize database_name

Или можно воспользоваться WP CLI командой wp db optimize:

$ wp db optimize
Success: Database optimized.

REPAIR TABLE

Восстанавливает, возможно поврежденную, таблицу базы данных. Работает только для некоторыз SQL движков, в частности это таблицы: MyISAM, ARCHIVE и CSV.

Или можно воспользоваться WP CLI командой wp db repair:

$ wp db repair
Success: Database repaired.
Комментариев нет