База данных MySQL занимает много места?

База данных MySQL занимает много места?

Всем привет! Так получается, что со временем, по мере наполнения блога новыми постами и с появлением новых комментариев снижается свободное дисковое пространство на сервере. И часто виной тому бывает несоразмерно объемная база данных.

Оптимизация базы данных с помощью phpmyadmin

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

Одной из основных причин, почему база данных занимает много места,  может стать наличие огромного числа спам-комментариев и в какой-то мере установленный плагин Akismet.

Дело в том, что Акисмет к каждому комментарию добавляет свои мета-данные и записывает их в таблицу wp_commentmeta. То есть абсолютно все комментарии, даже помеченные как спам, несут с собой ненужную информацию. А после очистки корзины и спама эти мета-данные не удаляются и продолжают занимать место.

Вот, посмотрите сколько спама принял на себя блог:

База данных сильно увеличивается в объеме от спама

Подумать только, более 71 тысячи! И все эти данные до сих пор хранятся в базе данных, не мудрено что она так неприлично разрослась:

Таблица wp_commentmeta занимает очень много места

По сравнению с другими таблицами она имеет наибольший размер — 5.1 Мб. Поэтому я решил найти способ снизить размер таблицы wp_commentmeta, а соответственно и общий размер базы данных.

Зачем уменьшать размер базы данных?

Странный вопрос, естественно для экономии ресурсов сервера, это и свободное дисковое пространство, и время, затраченное на обращение в данным. Очень часто чрезмерно большая база данных может привести к внутренней ошибке сервера 500 Internal Server Error.

Ранее я уже писал о нескольких способах, позволяющих сократить базу данных, а именно:

  • оптимизация таблицы wp_postmeta, за счет удаления устаревшей служебной информации;
  • оптимизация таблицы wp_posts, путем удаления ревизий (резервных копий) постов.

Теперь есть еще один способ уменьшить базу данных, за счет снижения размера таблицы wp_commentmeta.

Снижение размера таблицы wp_commentmeta

Способ был найден на форуме русскоязычной поддержки WordPress. Для сокращения размера требуемой таблицы необходимо выполнить SQL-запрос к базе данных:

Оптимизация таблицы wp_commentmeta на вордпресс

Для этого нужно выбрать требуемую базу данных на сервере из панели phpMyAdmin, перейти на вкладку SQL и в появившемся окне вставить этот код запроса к базе данных:

DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)

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

Снижение размера базы данных

Требуемый результат достигнут, таблица уменьшилась в размере почти в 5 раз! Теперь она весит 1,1 Мб, вместо 5.1 Мб. После таких операций я советую дополнительно оптимизировать базу данных стандартными средствами phpMyAdmin, отметив галочками все таблицы и выбрав в выпадающем списке «Оптимизировать таблицу», так сказать последний штрих)

В очередной раз обращаю особое внимание на осторожное обращение с базами данных и не забывайте делать резервные копии перед выполнением SQL-запросов.

Ну вот, пройдет очередной этап, но на этом оптимизация WordPress не заканчивается, подписывайтесь на обновления блога, чтобы не пропустить очередной пост! 😉

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(5 голосов, в среднем: 4.8 из 5)
Опубликовано 29.02.2012

Комментарии

  1. Денис, спасибо за такую полезную информацию Обязательно этим займусь. На самом деле спама очень много.

    Ответить

  2. Владимир Жданов:

    Мощно! Я люблю mysql и phpmyadmin. В работе с сайтом это отличный инструмент, все как на ладони. Если знать большинство команд, то работа намного упрощается. Наверное, в скорем, напишу небольшую заметку про mysql/
    СпасибО! 😉

    Ответить

  3. Webliberty:

    Арина, конечно займитесь, даже хотя бы в профилактических целях следует проверять БД, оптимизировать, чистить, обязательно делать бэкапы.

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

    Ответить

  4. Владимир Жданов:

    И такое у меня было, доигрался серьезно однажды, введя команду DELETE FROM table WHERE id < 1000, а нужно было удалить десяток записей после 1000… Следовательно знак ставить не 😀

    Ответить

  5. Webliberty:

    Владимир, всякое бывает) В таких ситуациях главное не паниковать, как многие начинают, да что там говорить, я и сам начинаю паниковать если что-то не так пошло. Главное собраться, успокоиться и подумать как исправить. Для этого конечно же потребуется резервная копия базы данных, которую желательно делать вручную и хранить на своем компьютере.

    Ответить

  6. Владимир Жданов:

    На мое счастье, у меня была резервная копия. Я жутко побелел, думал идти писать заявление 😀 Но вида не подал, чтобы не спросили, а что это я такой взволнованный.

    Ответить

  7. Лесоруб:

    Денис, здравствуйте…У меня вчера пришло сообщение с хостинга Тайм Вэб, что дисковое пространство превышено и предлагают поменять тариф. Новый тариф предполагает оплату только за весь год, а меня это сейчас не устраивает 😐 Подскажите, как справиться с проблемой.

    Ответить

  8. Webliberty:

    Лесоруб, странные у них правила с оплатой, обычно можно выбирать на сколько месяцев продлевать. Очистите базу данных этим способом и дополнительными, которые приведены в посте.

    А также при вставке изображений предварительно их сжимайте перед загрузкой (уже опубликованные также можно сжать). Далее если у Вас используются плагины для создания резервных копий, то вероятно они их сохраняют на сервере, что тоже сокращает свободное дисковое пространство.

    Плагины кэширования в Вашем случае тоже лучше не использовать, т.к. все страницы сохраняются в папке кэша на сервере. Одним словом, избавьтесь от лишнего, если нет возможности перейти на новый тариф. Или смените хостинг-провайдера на того, у которого можно продлевать на столько месяцев, сколько понадобиться.

    Ответить

  9. apisklov:

    У меня вообще данная таблица 16 мб весит. Надо очистить. Только ты забыл про префикс написать, не у всех он wp_

    Ответить

  10. Владимир Жданов:

    Да почти у всех, мало кто меняет при установке. Наверное единицы. Я работаю по службе с сотней вордпрессов, только у одного префикс не wp_… 😉

    Ответить

  11. И от меня спасибо, Денис! В жизни не додумалась бы сама, что базу данных надо чистить))) А добра там, да, скопилось…. 😮

    Ответить

  12. Владимир Жданов:

    Лесоруб, здравствуйте! Возможно что место превысил Ваш лог ошибок, либо еще какой-нибудь лог. Отключить или поинтересоваться можно, написав хостеру. Ну можно просто сменить хостинг, Locum очень хороший выбор. И цены нормальные и скорость… Я доволен!

    Ответить

  13. Webliberty:

    apisklov, правильно замечание, благодарю! В коде запроса нужно изменить префикс на свой, если он был изменен, а не применен по умолчанию.

    Владимир, а кем работаешь, если не секрет? Вот бы мне такую работу, чтобы и увлечение и основное занятие совпадали ❓

    Ответить

  14. Роман Малышев:

    Полезно! Поудалял комментарии и у себя на некоторых сайтах WordPress

    Ответить

  15. Людмила:

    Денис, а комментарии не удалятся? А то потом будет проблема с их восстановлением.

    Ответить

  16. Webliberty:

    Людмила, нет не удалятся, никаких проблем после чистки не возникнет, если сомневаетесь — сделайте резервную копию.

    Ответить

  17. Людмила:

    У меня резервные копии делаются на автомате. Только я еще не пользовалсь ими для восстановления. Надеюсь, что и дальше не придется. А почистить надо. Накопилось много всего. ❗

    Ответить

  18. Михаил:

    Спасибо за статью! У вас она весила 5.1 Мб, у кого то 16 мб, значит у меня рекорд)))

    wp_commentmeta весила 135 метров, вся таблица около 145. Удалено 36740 строк.

    Ответить

  19. Webliberty:

    Михаил, вот это да! Наверное с таким размером БД очень сложно восстанавливать из архива, ведь есть ограничения на размер загружаемого файла… Скорее всего приходится прибегать к помощи поддержки хостера…

    Ответить

  20. Людмила:

    Хотела почистить базу но у меня вместо wp_commentmeta написано wscrp_commentmeta. Что делать?

    Ответить

  21. Webliberty:

    Людмила, используйте в запросе имя своей таблицы. У Вас просто задан свой префикс к таблицам, по умолчанию он wp_

    Выполните запрос:

    DELETE FROM wscrp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)

    Не забудьте про резервную копию! Это так, на всякий случай 🙂

    Ответить

  22. allemiko:

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

    Ответить

  23. Webliberty:

    Алем, думаешь я там часто ковыряюсь? 😈 Так, пару раз пришлось покопаться, когда с древовидными комментариями начудил, да так, что комментарии к одной записи перебежали на другую страницу, пришлось разбираться…)

    Ответить

  24. Михаил:

    Webliberty, что комментарии к одной записи перебежали на другую страницу, — Вот с этого места — можно подробнее? У меня глюки какие-то, комментарии пишутся и отображаются в ней правильно. Но на страницах сами коменты перебегают черт знает куда… ➡

    Ответить

  25. Webliberty:

    Михаил, сложно сказать, у меня это было после манипуляций с этими комментариями. Несколько убежало и менял в базе их id, чтобы перенести к другому посту. Т.е. проблема не массовая и с тех пор не появлялась. Если у Вас всегда такое происходит — попробуйте по отключать плагины, может какой-то из них глючит…

    Ответить

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

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

Отправляя комментарий, вы соглашаетесь с политикой конфиденциальности.