Чистка базы данных WordPress

Что делать, если ваша база данных занимает много места?

На одном сайте, который находиться у меня на обслуживании, заметил не прилично большой размер базы данных, при этом сайт содержит порядка 1300 комментариев и около 300 записей всего, а вес базы данных составлял около 20 гигабайт.

Я залез в phpMyAdmin, чтобы узнать, какие таблицы занимают так много места, но как оказалось – это была всего одна таблица posts. Занимала она 19 гигабайт

19 гагабайт занимает база wordpress

Подумал, может глюк и поэтому посчитал количество записей в таблице

SELECT COUNT(1) FROM `wp_posts`

Запрос выдал мне 946800 записей, почти миллион записей, когда на сайте записей всего то около 300. Что за черт подумал я, и узнал вот что. WordPress, при загрузке изображений на сайт, считает их отдельной записью, каждому такому изображению присваивается свой id и строка в базе данных.

Тут я вспомнил, что автор сайта, делал «глобальную чистку» у себя, удалял старые посты, удалял какие то изображения и т.д. + делали бэкапы базы, переносили сайт, может что то еще и тогда накосячили, мне не известно. Но делать что-то нужно.

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

SELECT COUNT(1) FROM `wp_posts` WHERE `post_parent`=0 AND `post_type`='attachment'

Запрос выдал мне около 2000 записей.

Пишем запрос, чтобы удалить это все:

DELETE FROM `wp_posts` WHERE `post_parent`=0 AND `post_type`='attachment'

снова проверяем и смотрим размер базы данных, размер не на много и похудел. Ищем дальше..

В phpMyAdmin я решил посмотреть какие вообще записи хранятся в posts и решил глянуть сразу 1000-ую страницу, и увидел полный мрак, у меня есть какие то записи, которые содержат какой то js код, и имеют post_status – 200ok. Я посчитал количество записей, их около 450000 в базе, пишу запрос на удаление этого чуда, жду очень долго, в итоге ничего не получаю. Размер базы данных остается не изменым. Ищу дальше и нахожу записи интересные с post_type –  http, считаю, пол миллиона записей, выбираем их и удаляем.

После удаления всего этого мусора, размер базы данных стал 36 мегабайт, нужно еще поработать над оптимизацией базы.

Сколько места занимает ваша база данных и что можно еще оптимизировать, чтобы она была поменьше и пошустрее ?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *