Со временем Ваш сайт начинает медленней открываться, увеличивается нагрузка на сервер, из-за чего сайт иногда пропадает и становится не доступным для посетителей. Я провожу техническое обслуживание сайтов на WordPress и не по наслышке знаком с этим вопросом. Решением этих вопросов могут быть различные факторы — оптимизация кода файлов шаблона, ревизия плагинов и т.д., но в этой статье я дам некоторые рекомендации по очистке базы данных wordpress.
С самого начала установки и деятельности вашего сайта, в базу данных wordpress начинается регулярная запись информации, которую Вы размещаете на своем сайте — посты, ревизии (сохраненные копии) постов и страниц, настройки сайта, настройки плагинов, сообщения о пингах, различный кэш… и многое остается в ней на всегда хоть вы и удалили что-либо через административную часть вашего сайта.
Чистку базы данных wordpress нужно делать регулярно, я произвожу ее раз в месяц. Для этого я применяю специальные SQL запросы.
Вы можете это сделать сами при помощи ниже описанных запросов, но чтобы не заморачиваться такими вопросами, а так же исключить еще некоторые работы, которые нужно делать на своем сайте, предлагаю Вам воспользоваться моей услугой по техническому обслуживанию Вашего сайта
ВНИМАНИЕ!!! Прежде чем приступить к очистке базы данных wordpress, сделайте ее резервную копию! Это позволит восстановить прежний вариант, если вы вдруг допустите ошибку и сломаете Ваш сайт.
Данные SQL запросы применимы для базы данных wordpress со стандартным префиксом в ее таблицах, если у таблиц в Вашей базе данных префикс другой, то просто замените в запросе префикс «wp_» на тот, который Вы используете.
1. Очищаем таблицу wp-commentmeta:
1 |
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments) |
2. Удаление комментариев списком:
— спам:
1 |
DELETE FROM wp_comments WHERE comment_approved = 'spam'; |
— неодобренные:
1 |
DELETE FROM wp_comments WHERE comment_approved = '0'; |
— одобренные:
1 |
DELETE FROM wp_comments WHERE comment_approved = '1'; |
По умолчанию WordPress при оставлении комментария сохраняет информацию о комментаторе в базе данных wordpress. Большинство блогерров не используют эти данные и что бы ибавиться от этой информации, примените следующий запрос, который заменить такие строки на пустые, что существенно уменьшит размер вашей базы данных если у Вас много комментаторов.
1 |
update wp_comments set comment_agent ='' ; |
3. Удаление ревизий
При написание постов и страниц вордпрес создает автоматические копии, так же все копии старых сообщений, которые Вы редактировали, остаются в базе данных wordpress — это так называемые ревизии, которые позволяют Вам вернуться к старому варианту статьи если вдруг понадобилось, но такое случается очень редко и в большинстве случаев это не нужно, тем более не нужны все остальные оставшиеся ревизии этой статьи, которые просто захламляют базу данных сайта. Для удаления ревизий из базы данных и всяких связей с ними используйте этот запрос:
1 2 3 4 5 |
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision' |
4. Чистка таблицы wp_postmeta
1 |
DELETE FROM `wp_postmeta` WHERE `meta_key` IN('_edit_lock', '_edit_last','_wp_old_slug') |
5. Удаление уведомлений
Уведомления, если по простому — это такие комментарии, что кто-то сослался на Вас, если Вы решили что такие комментарии Вам не нужны на Вашем сайте, их можно удалить следующим образом
1 |
DELETE FROM wp_comments WHERE comment_type = 'pingback'; |
После удаления, можно закрыть возможность принимать пинги
1 |
UPDATE wp_posts p SET p.ping_status = 'closed' |
Если будет нужно открыть прием пингов, то примените следующий запрос
1 |
UPDATE wp_posts p SET p.ping_status = 'open' |
6. Удаление неиспользуемых тегов записей
Если какие-то теги потеряли актуальность их можно удалить применив такой запрос:
1 2 3 |
DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 ); DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms); DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy); |
7. Очищаем кэш фида
Кэш фида так же храниться в базе данных wordpress, чтобы очистить его — выполните следующий запрос:
1 |
DELETE FROM `wp_options` WHERE `option_name` LIKE ('_transient%_feed_%'); |
Все не мог понять, почему растет размер сайта? Даже когда не добавляю новую информацию. Перенес все изображения на отдельный хостинг. Даже удалил некоторые страницы. Довел сайт до минимума, но почему, то его размер составлял 50 МБ.
В общем, дело в том, что я обнаружил на сервере в корневом каталоге файл error_log размеров 20МБ. Я его удалил — место освободилось. Файл error_log снова появился. Так что обратите на это внимание.
Спасибо, Николай, за информацию. Думаю, пригодиться, когда сайт разрастется до больших размеров.
@ Сергей:
Файл error_log — это спецфайл, который создаётся програмным обеспечением хостинга, в него записываются автоматически все действия, которые оговорены в специальных протоколах хостинга на случай возникновения каких-либо ошибок, несоответствий и т.д. (я не претендую на точную формулировку в определении назначения данного файла, а просто примерно описываю его назначение более доступным языком)
Если в настройках хостинга не предусмотренна его периодическая очистка, то эту чистку нужно производить самому (не удалять файл, а редактировать), удаляя из него информацию и сохраняя его…
Спасибо! Пока все работает нормально.
Информацию из error_log можно использовать для восстановления сайта, если возникнут какие-либо ошибки?
Для чего закрыть открыть прием пингов?
Пинги имеет смысл закрывать в случае создания большой нагрузки на сервер через них
Спасибо за полезную и нужную информацию!
Нужный материал, я сейчас как раз занимаюсь ускорением блога и воспользуюсь вашими советами, спасибо!