Как почистить базу данных WordPress

Оптимизация базы даных WordPress

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

Как обычно, перед тем как производить любые действия, сделайте бэкап и скачайте его к себе на компьютер.
Если база большая и есть доступ к сайту только по ftp, можно воспользоваться вот этим скриптом — https://sypex.net/ Отлично справился даже с базой в полтора гигабайта.

Из интереса можно предварительно попробовать найти все дублирующиеся мета поля

SELECT *,COUNT(*) AS keycount
FROM wp_postmeta
GROUP BY post_id,meta_key
HAVING (COUNT(*) > 1)

 

А затем удалить эти дубликаты мета полей

DELETE FROM wp_postmeta
WHERE (meta_id IN (
SELECT * FROM (
SELECT meta_id
FROM wp_postmeta tmp
GROUP BY post_id,meta_key
HAVING (COUNT(*) > 1)
) AS tmp
))

 

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

SELECT DISTINCT meta_key FROM wp_postmeta

Так же вполне безопасно удалить и вот эти мета поля
DELETE FROM wp_postmeta
WHERE meta_key IN ('_edit_lock','_edit_last')

А бывает наоборот, запись с сайта удалена, а мета поля остались.
Этот запрос поможет найти забытые мета поля.

SELECT * FROM wp_postmeta
LEFT JOIN wp_posts ON (wp_postmeta.post_id = wp_posts.ID)
WHERE (wp_posts.ID IS NULL)

А этот сможет их удалить.
DELETE wp_postmeta FROM wp_postmeta
LEFT JOIN wp_posts ON (wp_postmeta.post_id = wp_posts.ID)
WHERE (wp_posts.ID IS NULL)

Удаляем кэш transient api. Из-за специфики работы, этот кэш отчищается только при повторном запросе.
То есть, если данным был установлен срок жизни в час, а за 30 минут до конца срока вы удалили плагин, записавший в кэш эти данные, они останутся там.

DELETE FROM wp_options
WHERE option_name LIKE '%transient%'

Удаляем те ревизии постов, которые старше 15 дней

DELETE FROM wp_posts
WHERE
(post_type = 'revision') AND
(post_modified_gmt < DATE_SUB(NOW(),INTERVAL 15 DAY))

Эти запросы помогут сделать размер вашей базы данных меньше, а скорость работы сайта, больше.

Автор: dimas

1 комментарий к “Как почистить базу данных WordPress

  • Хоть у меня блог недавно и мусора пока что мало, всё равно почистил и теперь знаю, как это делать в дальнейшем. Благодарствую за статью!