Оптимизация базы данных WordPress | Удаление ревизий

0
9

Многие из нас используют WordPress для создания своих сайтов, но не многие знают о скрытых настройках сего чуда. По умолчанию в WordPress включена и настроена функция автосохранения копий редактируемых записей, так называемые ревизии.

Получается, что каждые 60 сек когда мы в консоли редактируем нашу статью, WP записывает эти изменения в базу данных и после сохранения не удаляет их. А это в свою очередь приводит к активному росту размера базы WordPress, что сказывается на работе сайта и хостинга в целом.

Автосохранения
Функция, которая сохраняет каждые 60 сек (по умолчанию) редактируемые записи и страницы. Копия сохраняется отдельной записью в базе под специальным типом поля — ревизия. При этом она не перезаписывает текущую запись и\или страницу.
Для настройки автосохранения, надо в файл wp-config.php добавить строку и заменить 60 на свое число (в секундах), так вы сможете настроить период автосохранения.

define(‘AUTOSAVE_INTERVAL’, 60);

Настройки ревизий
При автосохранение в базе создается большое количество ревизий одной и той же записи.

Для предотвращения этого добавьте в файл wp-config.php эту константу

define(‘WP_POST_REVISIONS’, constant);

где constant может принимать значения:

  • true, -1: будет хранить все ревизии(по умолчанию)
  • false, 0: не хранит ревизий, кроме одной на запись (это лучший выбор)
  • (int) > 0: будет хранить выбранное количество ревизий, и перезаписывать старые ревизии автоматически.
  • Например, автосохранение 3 ревизий выглядит так:

    define(‘WP_POST_REVISIONS’, 3);

    отключение сохранения ревизий:

    define(‘WP_POST_REVISIONS’, 0);

    Очистка базы WordPress
    Внимание: Перед тем, как проводить какие-то работы с базой данных — сделайте полный бэкап базы! Это спасет вас от лишней нервотрепки!

    Если вашему сайту уже не первый месяц, вы его активно наполняете и не настроили или не отключили автосохранение, то вам надо очистить базу данных от лишних записей и оптимизировать ее.

    Можно конечно в таблице wp_posts удалить все записи типа revision, таким запросом:

    DELETE FROM wp_posts WHERE post_type = ‘revision’;

    но это не правильно, ведь останется еще куча хвостов в связанных таблицах. Поэтому, используйте вот этот SQL запрос для очистки базы данных WordPress:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DELETE `p`, `pm`, `c`, `tr`
    FROM `wp_posts` AS `p`
    LEFT JOIN `wp_postmeta` AS `pm`
    ON `p`.`ID` = `pm`.`post_id`
    LEFT JOIN `wp_comments` AS `c`
    ON `p`.`ID` = `c`.`comment_post_ID`
    LEFT JOIN `wp_term_relationships` AS `tr`
    ON `p`.`ID` = `tr`.`object_id`
    WHERE
    `p`.`post_type` = ‘revision’;

    и этот SQL запрос для оптимизации таблиц WordPress:

    1
    2
    3
    4
    5
    OPTIMIZE TABLE
    `wp_posts`,
    `wp_postmeta`,
    `wp_comments`,
    `wp_term_relationships`;

    Примечание: «wp_» — это префикс по умолчанию, так что поменяйте на свой.

    В WordPress существует API функция для удаления ревизий, но без пользовательского интерфейса.

    Интересный факт:

    Штрих код
    Штрих код был изобретен Бернардом Сильвером (Bernard Silver) и Норманном Вудландом (Norman Woodland) в 1948 году. Их аппарат использовал свет, чтобы прочитать ряд кругов, но им пришлось ждать два десятилетия, до появления компьютера и лазера, которые сделали их систему практичной. Впервые систему штрих кода начала использовать компания IBM как универсальный код изделия в 1973 году. Первым закодированным проданным продуктом супермаркета был пакет резины в 1974 году.