Генеральная уборка продолжается: как почистить базу MySQL
От автора: вы думаете, что везде убрали? Дом вычистили, машину помыли, детей до блеска «выдраили». А на своем сервере СУБД забыли прибраться! Не умеете? Это не страшно! Сейчас я научу вас, как почистить базу MySQL.
Зачем убирать?
Чтобы не было мусора и пыли. В случае с базами данных имеется в виду «цифровой» мусор. Если ваш ресурс работает на основе CMS, то даже в этом случае в таблицах остаются различные «ошметки» после работы плагинов, системы движка. Ну, может и вы где-то тоже строку «забыли». Постепенно вся эта «пыль» скапливается в огромные пласты, которые затем негативно влияют на быстродействие всего ресурса. А это негативно отражается на юзабилити сайта. В общем, чистить все равно надо и придется.
Кроме этого «выросшая» как на дрожжах база может занимать много виртуального дискового пространства, в результате чего хостер начнет нервничать и заваливать вас сообщении о превышении лимита. Если ничего не предпримите (не перейдете на дорогостоящий тариф, в котором предоставляются большие «площади» под сайт), то он просто «выдернет из розетки» ваш ресурс. Поэтому лучше научиться, как почистить базу данных MySQL, чем тратиться на новый тарифный план или переезд на «новые рельсы».
Также иногда требуется удалить только содержимое таблицы, и сберечь ее структуру. Все это мы рассмотрим в сегодняшнем материале, посвященном правильной уборке на СУБД. Стартуем!
Очищаем таблицу
Часто требуется не удалять таблицу, а лишь очистить ее от всех строк, но при этом сохранить всю ее структуру: типы данных столбцов, индексы, первичные ключи и другие ее параметры. Конечно, можно всегда удалить таблицу целиком с помощью команды DROP TABLTE, но затем придется создавать ее и прописывать все атрибуты заново. А это не совсем удобно, поэтому в MySQL для удаления строк таблицы есть специальная команда. Ее синтаксис:
MySQL очистка базы данных.
Как писал недавно, необходимо было поставить трекер на сервак, что прошло без проблем, но вылезла новая проблема, оказывается из-за неправильно настроенной функции на портале, для которого это все было задумано, раздачи не раздавались с него, что опечалило меня и мое начальство ))))
Не вешать нос… Пообщавшись с техподдержкой, были выяснены причины, и мне было дано очередное задание, грохнуть базу данных трекера нах ((( чтоже, ничего не поделаешь, надо значит надо.
Зная что функции очищающей базу данных нет, пришлось все делать ручками, так как время поджимало, а писать скрипт было некогда. В общем начнем, сначала надо залогиниться под своим пользователем БД в мускуле:
ввели свой чудо пароль, и увидели нечто подобное:
если да, то значит все в полном порядке и можно продолжать далее.
Выберем нашу базу:
и просмотрим список ее таблиц:
у меня было нечто такое:
сел прикинул, что влом для каждой таблицы прописывать drop table, и решил на авось затестить скопом удалить таблицы в одной команде:
и чесслово был приятно удивлен, т.к. не думал что все пройдет ок:
для большей уверенности проверил точно ли таблицы удалились:
оказалось что да.
Можно было сделать проще, удалить нахер базу данных, например так:
и по новой ее создать, но мы не ищем легких путей как говорится
Вывод, надо читать документацию по мускулу, чем в ближайшее время и займусь.
Чистим базу данных MySql от ненужного мусора и ускоряем работу блога
Всем привет друзья. В сегодняшней статье я хочу рассказать вам, как очистить базу данных MySql от ненужного мусора и существенно ускорить работу всего блога. Не так давно, я переносил свой блог на другой хостинг (о его преимуществах написал в этой статье) и при переносе базы данных заметил, что ее размер составляет почти 57 Mb. Мягко говоря, я был удивлен, ведь перенос разных сайтов осуществлялся не один раз до этого, и тогда размеры баз составляли от 1 до 20 Mb, а сами сайты были намного больше этого блога. Откуда у блога с количеством статей меньше 200 может взяться такой огромный размер базы данных? Естественно я начал разбираться в этом деле и хочу поделиться с вами результатами своей работы.
Но перед этим давайте рассмотрим основные элементы, которые так сильно увеличивают размер нашей базы данных, и по порядку будем выполнять действия для уменьшения ее размера.
— Рост статей на блоге (здесь мы ничего оптимизировать не будем, это вполне нормальное явление у каждого развивающегося блога).
— Увеличение количества ревизий (резервные копии написанной статьи). Когда мы пишем статьи на свой блог, движок WordPress автоматически через определенные периоды времени создает резервные копии этой самой статьи. К примеру, последняя написанная мною статья на блог, получила 4 ревизии.
И это притом, что написана она была в текстовом редакторе Word и только после этого вставлена на блог, где я уже проводил небольшие поправки. Теперь представьте ситуацию, если бы я писал статью непосредственно с админки блога. Тогда бы количество ревизий исчислялось бы десятками, а каждая из них это дополнительный размер вашей базы данных.
Чтобы такого больше не повторялось, мы запретим нашему движку создавать резервные копии записей. Для этого откройте файл wp-config.php (он находится в корне вашего сайта) и после строки
вставьте следующую строку
которая полностью запрещает создавать резервные копии записей. В результате у вас должна получится вот такая комбинация:
Если же вы хотите чтобы ревизии постов создавались, но в строго ограниченном количестве, тогда после строки
где цифра 2 означает количество создаваемых ревизий (можете менять ее на любую цифру).
Для того, чтобы создать резервную копию базы данных, зайдите в phpMyAdmin (система управления базами данных) выберите в меню слева нужную вам базу, отметьте все таблицы и нажмите кнопку «Экспорт», после чего жмем «ОК» и сохраняем копию базы данных.
Эти действия хороши для новых записей, а как же быть с уже опубликованными ранее записями с ревизиями? Все очень просто, заходите на своем хостинге в phpMyAdmin и в строке SQL (верхнее горизонтальное меню) выполняете данный запрос:
DELETE FROM wp_posts WHERE post_type = «revision»
и подтверждаете свои действия нажатием кнопки «ОК».
Не переживайте, этот запрос удалит только резервные копии, все ваши записи останутся целыми и невредимыми.
— Рост количества комментариев на блоге. Опять-таки, если это нормальные человеческие комментарии, то все ок, тут наоборот радоваться нужно. Но, наверное, уже все знают, что на 1 нормальный комментарий, приходится около 10 спамных. Для борьбы со спамными комментариями можете прочесть вот эту статью.
Взгляните на мою статистику комментариев:
Больше 23000 комментариев находятся в корзине, и каждый из них занимает свое место в базе данных. Также есть 28 спамных комментариев.
Для того, чтобы удалить все спамные комментарии из базы, данных делаем такой SQL-запрос:
DELETE FROM wp_comments WHERE comment_approved = «spam»
Для удаления всех комментариев из корзины, выполняем такой SQL-запрос:
DELETE FROM wp_comments WHERE comment_approved = «trash»
У многих блоггеров установлен плагин Akismet который довольно хорошо ведет борьбу с назойливыми спамерами, но в свою очередь тоже нагружает базу данных. Для того, чтобы очистить таблицу wp_commentmeta (именно в эту таблицу и записывает свои данные плагин Akismet) совершим такой SQL-запрос:
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)
А теперь друзья, давайте все это дело свяжем воедино и скачаем плагин WP-Cleanup целью которого, является выполнение части задач, которые я описал выше, и не только их:
— удаление неодобренных комментариев
— удаление неиспользуемых тегов
— удаление неиспользуемых META-данных
— оптимизация неиспользуемой части БД
Итак, устанавливаем плагин и в консоле блоге переходим по адресу Настройки- WP-Cleanup, отмечаем чекерами все поля и жмем кнопку «Cleanup the selected items!»
Всего через пару секунд вы увидите примерно такое сообщение с уведомлением о выполненной работе по оптимизации:
А теперь давайте сравним результаты до оптимизации базы данных и после.
До начала работ размер базы данных составлял почти 57 Mb, после выполнения всех операций описанных выше размер базы составил 8,7 Mb. Представьте себе, почти в 7 раз размер базы данных стал меньше.
Ну и напоследок можно еще в phpMyAdmin зайти в вашу базу данных выделить все таблицы и выбрать из выпадающего списка пункт Оптимизировать таблицу. После такой оптимизации, вес моей базы данных уменьшился еще на 300 Kb.
Вот так вот друзья. Кстати после проведенной оптимизации, блог стал намного быстрее загружаться, чему я, несомненно, рад.
Ну, а я буду заканчивать этот пост. Обязательно проводите чистку ваших баз, и если что-то непонятно переспросите у меня перед выполнением работ.