Со временем база практически любого сайта растет. Под катом описание, как можно без установки плагинов, самостоятельно снизить размер базы данных.
Как обычно, перед тем как производить любые действия, сделайте бэкап и скачайте его к себе на компьютер.
Если база большая и есть доступ к сайту только по 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))
Эти запросы помогут сделать размер вашей базы данных меньше, а скорость работы сайта, больше.
1 комментарий к “Как почистить базу данных WordPress”