Генеральне прибирання триває: як почистити базу MySQL

320

Від автора: ви думаєте, що скрізь прибрали? Будинок вичистили, машину помили, дітей до блиску «видраяли». А на своєму сервері СУБД забули прибрати! Не вмієте? Це не страшно! Зараз я навчу вас, як почистити базу MySQL.

Навіщо прибирати?

Щоб не було сміття і пилу. У випадку з базами даних мається на увазі «цифрового» сміття. Якщо ваш ресурс працює на основі CMS, то навіть у цьому випадку в таблицях залишаються різні «кашу» після роботи плагінів, системи движка. Ну, може і ви десь теж рядок «забули». Поступово вся ця «пил» накопичується у величезні пласти, які негативно впливають на швидкодію всього ресурсу. А це негативно відбивається на юзабіліті сайту. Загалом, чистити все одно треба і доведеться.

Крім цього «виросла» як на дріжджах база може займати багато віртуального простору, в результаті чого хостер почне нервувати і завалювати вас повідомленні про перевищення ліміту. Якщо нічого не робитимете (не перейдете на дорогий тариф, в якому надаються великі «площі» під сайт), то він просто «висмикне з розетки» ваш ресурс. Тому краще навчитися, як почистити базу даних MySQL, ніж витрачатися на новий тарифний план або переїзд на «нові рейки».

Також іноді потрібно видалити тільки вміст таблиці, і зберегти її структуру. Все це ми розглянемо в сьогоднішньому матеріалі, присвяченому правильної прибирання на СУБД. Стартуємо!

Очищаємо таблицю

Часто потрібно не видаляти таблиці, а лише очистити її від всіх рядків, але при цьому зберегти всю її структуру: типи даних стовпців, індекси, первинні ключі та інші її параметри. Звичайно, завжди можна видалити таблицю за допомогою команди DROP TABLTE, але потім доведеться створювати її і прописувати всі атрибути заново. А це не зовсім зручно, тому в MySQL для видалення рядків таблиці є спеціальна команда. Її синтаксис:

TRUNCATE TABLE name_table;

Приклад, як почистити БД MySQL:

TRUNCATE TABLE `db1`.`user_animal`;

Генеральне прибирання триває: як почистити базу MySQL

Заглядаємо в таблицю, бачимо, що вкладка «Огляд» неактивна, а автоматично згенерований запит на вибірку повернула пустий результат. Тобто, отримали, що хотіли:

Генеральне прибирання триває: як почистити базу MySQL

Існує ще одна команда SQL, що дозволяє отримати аналогічний результат – DELETE FROM. Приклад використання:

DELETE FROM `db1`.`animal`;

Генеральне прибирання триває: як почистити базу MySQL

Таким чином ми очистили всі «клітини» таблиці animal від звірят. При цьому структура таблиці не була порушена, вилучені були тільки записи. Отримуємо в результаті один і той же результат:

Генеральне прибирання триває: як почистити базу MySQL

Перед тим, як почистити базу даних MySQL ще раз, розберемося, чим ці дві команди відрізняються. Точніше, ніж TRUNKATE переважно для використання:

На відміну від DELETE FROM ця команда не стирає всі записи порядково, а видаляє і заново створює таблицю. Дана операція займає менше часу.

Не повертає число видалених рядків, що також економить ресурси.

Можливість відтворення таблиці навіть при пошкоджених індексах або файлі даних.

Засоби програмної оболонки

Але можна не мучитися з написанням «нудних» запитів і застосувати для очищення таблиць вбудований функціонал phpMyAdmin. Заходимо в програму, зліва вибираємо потрібну базу. Після цього в розділі основного меню виділяємо таблицю, а в випадаючому списку відзначаємо дію, яку слід виконати з таблицею. Нас цікавить команда «Очистити». І не забуваємо натиснути у верхньому куті знизу «Ок».

Генеральне прибирання триває: як почистити базу MySQL

Як бачимо, додаток виконав ту ж команду (TRUNCATE) і стер всі записи із вказаної таблиці.

Генеральне прибирання триває: як почистити базу MySQL

Перед тим, як почистити базу MySQL остаточно, заглянемо на вкладку «Огляд», щоб переконатися, що в таблиці ніяких даних не залишилося. Все нормально, автоматично згенерувала вибірка повернула нульовий результат.

Легке прибирання

Але це ще не всі можливості, які надає ця програма. Її вбудовані засоби дозволяють трохи прибратися. Точніше, оптимізувати роботу вибраної таблиці, розставити все по своїх місцях. Для цього знову виділяємо потрібну таблицю з бази, але в випадаючому списку команд вибираємо «Оптимізувати таблицю».

Генеральне прибирання триває: як почистити базу MySQL

Система програми автоматично генерує запит до сервера СУБД, і відправляє його на виконання. Ядро, в свою чергу, повертає результат, та звіт про виконання запиту.

Генеральне прибирання триває: як почистити базу MySQL

Цю операцію можна виконувати замість «легкого прибирання» таблиці, або через певний проміжок часу після того, як ґрунтовно почистили БД MySQL. Але все-таки хотілося знати, що конкретно робить команда OPTIMIZE TABLE:

Відновлює видалені або неповні записи в таблиці.

Сортує індексні сторінки (призводить індекси порядок).

Оновлює статистику по таблиці.

Думаю, зрозуміло, що це потрібна команда, яку іноді слід виконувати, щоб підтримувати «здоров’я» таблиць в тонусі.

Сміттєзбиральники

Що стосується популярних движків, то з ними MySQL не зможе вам допомогти. Ну звідки СУБД може знати, які записи в таблицях є «сміттям», а які ні. Для цього (під кожну CMS) розробляються спеціалізовані розширення. Наведу кілька прикладів таких плагінів для WordPress:

WP-Cleanup. Повідомляється, що він не оновлювався цілих 2 роки, але насправді працює навіть на останніх версіях движка.

Генеральне прибирання триває: як почистити базу MySQL

WP-Optimize.

Генеральне прибирання триває: як почистити базу MySQL

Сподіваюся, ви навчилися, як чистити базу даних MySQL. Головне зрозуміти, що треба прибирати не тільки в квартирі, машині, але і на сервері СУБД. Інакше ваш сайт «захламится» так, що ні один відвідувач на нього не влізе». А цього не можна допускати!