База данных MySQL занимает много места?
Всем привет! Так получается, что со временем, по мере наполнения блога новыми постами и с появлением новых комментариев снижается свободное дисковое пространство на сервере. И часто виной тому бывает несоразмерно объемная база данных.
Посмотрите на свою базу данных, какая из таблиц занимает больше всего места? В прошлый раз мы рассмотрели какие стандартные таблицы присутствуют сразу после установки WordPress, до установки плагинов. Если префикс базы данных при установке не менялся, а был принят по-умолчанию, то таблица wp_commentmeta может быть довольно много весить.
Дело в том, что Акисмет к каждому комментарию добавляет свои мета-данные и записывает их в таблицу wp_commentmeta. То есть абсолютно все комментарии, даже помеченные как спам, несут с собой ненужную информацию. А после очистки корзины и спама эти мета-данные не удаляются и продолжают занимать место.
Вот, посмотрите сколько спама принял на себя блог:
Подумать только, более 71 тысячи! И все эти данные до сих пор хранятся в базе данных, не мудрено что она так неприлично разрослась:
По сравнению с другими таблицами она имеет наибольший размер — 5.1 Мб. Поэтому я решил найти способ снизить размер таблицы wp_commentmeta, а соответственно и общий размер базы данных.
Зачем уменьшать размер базы данных?
Странный вопрос, естественно для экономии ресурсов сервера, это и свободное дисковое пространство, и время, затраченное на обращение в данным. Очень часто чрезмерно большая база данных может привести к внутренней ошибке сервера 500 Internal Server Error.
Ранее я уже писал о нескольких способах, позволяющих сократить базу данных, а именно:
- оптимизация таблицы wp_postmeta, за счет удаления устаревшей служебной информации;
- оптимизация таблицы wp_posts, путем удаления ревизий (резервных копий) постов.
Теперь есть еще один способ уменьшить базу данных, за счет снижения размера таблицы wp_commentmeta.
Снижение размера таблицы wp_commentmeta
Способ был найден на форуме русскоязычной поддержки WordPress. Для сокращения размера требуемой таблицы необходимо выполнить SQL-запрос к базе данных:
Для этого нужно выбрать требуемую базу данных на сервере из панели 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, отметив галочками все таблицы и выбрав в выпадающем списке «Оптимизировать таблицу», так сказать последний штрих)
Ну вот, пройдет очередной этап, но на этом оптимизация WordPress не заканчивается, подписывайтесь на обновления блога, чтобы не пропустить очередной пост! 😉
Денис, спасибо за такую полезную информацию Обязательно этим займусь. На самом деле спама очень много.
Ответить
Мощно! Я люблю mysql и phpmyadmin. В работе с сайтом это отличный инструмент, все как на ладони. Если знать большинство команд, то работа намного упрощается. Наверное, в скорем, напишу небольшую заметку про mysql/
СпасибО! 😉
Ответить
Арина, конечно займитесь, даже хотя бы в профилактических целях следует проверять БД, оптимизировать, чистить, обязательно делать бэкапы.
Владимир, инструмент действительно хороший, можно вдоль и поперек перебрать базу данных и изменять настройки самого движка прямо там. Неоднократно приходилось выполнять запросы для массового редактирования и даже восстанавливать целые посты с комментариями к ним, когда «случайно» доигрался 😀
Ответить
И такое у меня было, доигрался серьезно однажды, введя команду DELETE FROM table WHERE id < 1000, а нужно было удалить десяток записей после 1000… Следовательно знак ставить не 😀
Ответить
Владимир, всякое бывает) В таких ситуациях главное не паниковать, как многие начинают, да что там говорить, я и сам начинаю паниковать если что-то не так пошло. Главное собраться, успокоиться и подумать как исправить. Для этого конечно же потребуется резервная копия базы данных, которую желательно делать вручную и хранить на своем компьютере.
Ответить
На мое счастье, у меня была резервная копия. Я жутко побелел, думал идти писать заявление 😀 Но вида не подал, чтобы не спросили, а что это я такой взволнованный.
Ответить
Денис, здравствуйте…У меня вчера пришло сообщение с хостинга Тайм Вэб, что дисковое пространство превышено и предлагают поменять тариф. Новый тариф предполагает оплату только за весь год, а меня это сейчас не устраивает 😐 Подскажите, как справиться с проблемой.
Ответить
Лесоруб, странные у них правила с оплатой, обычно можно выбирать на сколько месяцев продлевать. Очистите базу данных этим способом и дополнительными, которые приведены в посте.
А также при вставке изображений предварительно их сжимайте перед загрузкой (уже опубликованные также можно сжать). Далее если у Вас используются плагины для создания резервных копий, то вероятно они их сохраняют на сервере, что тоже сокращает свободное дисковое пространство.
Плагины кэширования в Вашем случае тоже лучше не использовать, т.к. все страницы сохраняются в папке кэша на сервере. Одним словом, избавьтесь от лишнего, если нет возможности перейти на новый тариф. Или смените хостинг-провайдера на того, у которого можно продлевать на столько месяцев, сколько понадобиться.
Ответить
У меня вообще данная таблица 16 мб весит. Надо очистить. Только ты забыл про префикс написать, не у всех он wp_
Ответить
Да почти у всех, мало кто меняет при установке. Наверное единицы. Я работаю по службе с сотней вордпрессов, только у одного префикс не wp_… 😉
Ответить
И от меня спасибо, Денис! В жизни не додумалась бы сама, что базу данных надо чистить))) А добра там, да, скопилось…. 😮
Ответить
Лесоруб, здравствуйте! Возможно что место превысил Ваш лог ошибок, либо еще какой-нибудь лог. Отключить или поинтересоваться можно, написав хостеру. Ну можно просто сменить хостинг, Locum очень хороший выбор. И цены нормальные и скорость… Я доволен!
Ответить
apisklov, правильно замечание, благодарю! В коде запроса нужно изменить префикс на свой, если он был изменен, а не применен по умолчанию.
Владимир, а кем работаешь, если не секрет? Вот бы мне такую работу, чтобы и увлечение и основное занятие совпадали ❓
Ответить
Полезно! Поудалял комментарии и у себя на некоторых сайтах WordPress
Ответить
Денис, а комментарии не удалятся? А то потом будет проблема с их восстановлением.
Ответить
Людмила, нет не удалятся, никаких проблем после чистки не возникнет, если сомневаетесь — сделайте резервную копию.
Ответить
У меня резервные копии делаются на автомате. Только я еще не пользовалсь ими для восстановления. Надеюсь, что и дальше не придется. А почистить надо. Накопилось много всего. ❗
Ответить
Спасибо за статью! У вас она весила 5.1 Мб, у кого то 16 мб, значит у меня рекорд)))
wp_commentmeta весила 135 метров, вся таблица около 145. Удалено 36740 строк.
Ответить
Михаил, вот это да! Наверное с таким размером БД очень сложно восстанавливать из архива, ведь есть ограничения на размер загружаемого файла… Скорее всего приходится прибегать к помощи поддержки хостера…
Ответить
Хотела почистить базу но у меня вместо wp_commentmeta написано wscrp_commentmeta. Что делать?
Ответить
Людмила, используйте в запросе имя своей таблицы. У Вас просто задан свой префикс к таблицам, по умолчанию он wp_
Выполните запрос:
DELETE FROM wscrp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)
Не забудьте про резервную копию! Это так, на всякий случай 🙂
Ответить
А вот я даже туда не суюсь дальше, боюсь и обхожу стороной, еле как перенес свою базу на свой хостинг, а оптимизировать и менять, уж точно испорчу 😈
Ответить
Алем, думаешь я там часто ковыряюсь? 😈 Так, пару раз пришлось покопаться, когда с древовидными комментариями начудил, да так, что комментарии к одной записи перебежали на другую страницу, пришлось разбираться…)
Ответить
Webliberty, что комментарии к одной записи перебежали на другую страницу, — Вот с этого места — можно подробнее? У меня глюки какие-то, комментарии пишутся и отображаются в ней правильно. Но на страницах сами коменты перебегают черт знает куда… ➡
Ответить
Михаил, сложно сказать, у меня это было после манипуляций с этими комментариями. Несколько убежало и менял в базе их id, чтобы перенести к другому посту. Т.е. проблема не массовая и с тех пор не появлялась. Если у Вас всегда такое происходит — попробуйте по отключать плагины, может какой-то из них глючит…
Ответить