От автора: вы думаете, что везде убрали? Дом вычистили, машину помыли, детей до блеска «выдраили». А на своем сервере СУБД забыли прибраться! Не умеете? Это не страшно! Сейчас я научу вас, как почистить базу MySQL.
Зачем убирать?
Чтобы не было мусора и пыли. В случае с базами данных имеется в виду «цифровой» мусор. Если ваш ресурс работает на основе CMS, то даже в этом случае в таблицах остаются различные «ошметки» после работы плагинов, системы движка. Ну, может и вы где-то тоже строку «забыли». Постепенно вся эта «пыль» скапливается в огромные пласты, которые затем негативно влияют на быстродействие всего ресурса. А это негативно отражается на юзабилити сайта. В общем, чистить все равно надо и придется.
Кроме этого «выросшая» как на дрожжах база может занимать много виртуального дискового пространства, в результате чего хостер начнет нервничать и заваливать вас сообщении о превышении лимита. Если ничего не предпримите (не перейдете на дорогостоящий тариф, в котором предоставляются большие «площади» под сайт), то он просто «выдернет из розетки» ваш ресурс. Поэтому лучше научиться, как почистить базу данных MySQL, чем тратиться на новый тарифный план или переезд на «новые рельсы».
Также иногда требуется удалить только содержимое таблицы, и сберечь ее структуру. Все это мы рассмотрим в сегодняшнем материале, посвященном правильной уборке на СУБД. Стартуем!
Очищаем таблицу
Часто требуется не удалять таблицу, а лишь очистить ее от всех строк, но при этом сохранить всю ее структуру: типы данных столбцов, индексы, первичные ключи и другие ее параметры. Конечно, можно всегда удалить таблицу целиком с помощью команды DROP TABLTE, но затем придется создавать ее и прописывать все атрибуты заново. А это не совсем удобно, поэтому в MySQL для удаления строк таблицы есть специальная команда. Ее синтаксис:
1 |
TRUNCATE TABLE name_table; |
Пример, как почистить БД MySQL:
1 |
TRUNCATE TABLE `db1`.`user_animal`; |
Заглядываем в таблицу, и видим, что вкладка «Обзор» неактивна, а автоматически сгенерированный запрос на выборку вернул пустой результат. То есть, получили, что хотели:
Существует еще одна команда SQL, позволяющая получить аналогичный результат – DELETE FROM. Пример использования:
1 |
DELETE FROM `db1`.`animal`; |
Таким образом мы очистили все «клетки» таблицы animal от зверюшек. При этом структура таблицы не была затронута, удалены были только записи. Получаем в итоге один и тот же результат:
Перед тем, как почистить базу данных MySQL еще раз, разберемся, чем эти две команды отличаются. Точнее, чем TRUNKATE предпочтительнее для использования:
В отличие от DELETE FROM эта команда не стирает все записи построчно, а удаляет и заново создает таблицу. Данная операция занимает меньше времени.
Не возвращает число удаленных строк, что также экономит ресурсы.
Возможность воссоздания таблицы даже при поврежденных индексах или файле данных.
Средства программной оболочки
Но можно не мучатся с написанием «скучных» запросов и применить для очистки таблиц встроенный функционал phpMyAdmin. Заходим в программу, выбираем слева нужную базу. После этого в разделе основного меню выделяем таблицу, а в выпадающем списке отмечаем действие, которое следует выполнить с таблицей. Нас интересует команда «Очистить». И не забываем нажать в правом углу снизу «Ок».
Как видим, приложение выполнило ту же команду (TRUNCATE) и стерло все записи из указанной таблицы.
Перед тем, как почистить базу MySQL окончательно, заглянем на вкладку «Обзор», чтобы убедиться, что в таблице никаких данных не осталось. Все нормально, автоматически сгенерированная выборка вернула нулевой результат.
Легкая уборка
Но это еще не все возможности, которые предоставляет эта программа. Ее встроенные средства позволяют немного убраться. Точнее, оптимизировать работу выбранной таблицы, расставить все по своим местам. Для этого снова выделяем нужную таблицу из базы, но в выпадающем списке команд выбираем «Оптимизировать таблицу».
Система программы автоматически генерирует запрос к серверу СУБД, и отправляет его на выполнение. Ядро, в свою очередь, возвращает результат и отчет о выполнении запроса.
Эту операцию можно выполнять вместо «легкой уборки» таблицы, или через определенный промежуток времени после того, как основательно почистили БД MySQL. Но все-таки хотелось знать, что конкретно делает команда OPTIMIZE TABLE:
Восстанавливает удаленные или неполные записи в таблице.
Сортирует индексные страницы (приводит индексы в порядок).
Обновляет статистику по таблице.
Думаю, понятно, что это нужная команда, которую иногда следует выполнять, чтобы поддерживать «здоровье» таблиц в тонусе.
Мусоросборники
Что касается популярных движков, то с ними MySQL не сможет вам помочь. Ну откуда СУБД может знать, какие записи в таблицах являются «мусором», а какие нет. Для этого (под каждую CMS) разрабатываются специализированные расширения. Приведу несколько примеров таких плагинов для WordPress:
WP-Cleanup. Сообщается, что он не обновлялся целых 2 года, но на самом деле работает даже на последних версиях движка.
WP-Optimize.
Надеюсь, вы научились, как чистить базу данных MySQL. Главное понять, что убирать надо не только в квартире, машине, но и на сервере СУБД. Иначе ваш сайт «захламится» так, что ни один посетитель на него не «влезет». А этого нельзя допускать!