WordPress : проста і ефективна оптимізація бази данних

Ви здивуєтесь коли я вам скажу, що в базі даних вордпресу знаходиться 80% зайвої, нікому не потрібної інфи. А так і є.
Оптимизация движка вордпресса и работа с базами данніх by Lilumi

В моєму випадку з бази я викинув 67% сміття, у вас я думаю показники будуть більші. Отож по порядку:

  1. Clean Options – чистим опції
  2. Знищуємо таблиці від непотрібних плагінів
  3. Міняємо кодування бази даних Вордпресу
  4. Вилучаємо ревізії постів
  5. Викидаєм зайве з Dashboard

А почалося все з цього:

wordpress optimization
Зверніть увагу на таблицю wp_options – 1.3Mb – це ж нечуванно!

Clean Options – чистим опції
Саме прикріше те, що “сміттєва” інформація знаходиться в таблиці wp_options (мабудь розраховували на те, що звичайний юзер побоїться в неї залізти). Отож скачуємо плагін Clean Options і запускаємо його кнопкою Find Orphaned Options. Ви побачите довжелезний список опцій що були добавленні плагінами, що стоять у вас, або колись стояли. От видалити ті опції плагінів що уже не стоять задача нелегка, адже там явно не вказано від якого плагіну той чи інший запис, тому прийдеться діяти наосліп озброївшись пошуком по гуглю. (можливо все таки варто зробити бекап бази перед цими діями, я відповідальності за ваші дії не несу). А нижче ви побачите список новин з rss-каналів що появляються в Панелі керування.

Ну признайтесь, хтось з вас їх читав? Я ні, а саме ці новини і займають по пару мегабайт в ваших базах даних вордпресу. От від них ми і безболісно позбавимось. Виділяєте їх і тиснете на “View Selected Options Information” де ви побачите зміст цих полів. Перед вами простягнеться довжелезне простирадло з довжелезним скроллом зі змістом того “сміття”. Одразу ж після завершення завантаження сторінки жміть End на клавіатурі, вибирайте галочку “Yes, Remove ALL of these options from the wp_options table.” і Submit. Здавалося би все — діло зроблене, але насправді ці дані все ще лишились в базі і для того щоб їх остаточно знищити слід зробити оптимізацію таблиць. Для цього заходимо в PhpMyAdmin і вибираємо таблицю wp_options а внизу вибираєм пунктик “Optimize Table”
wordpress optimization

Знищуємо таблиці від непотрібних плагінів

Як швидко дізнатись, що таблиця не “рідна-вордпресовська” а від плагіну?
По замовчуванню вордпрес створює 10 таблиць:
wp_comments
wp_links
wp_options
wp_postmeta
wp_posts
wp_terms
wp_term_relationships
wp_term_taxonomy
wp_usermeta
wp_users
Думаю у вас кількість таблиць значно більша і вияснити яка з них іще використовується, а яка вже ні, справа дещо складніша. Я лише так “на око” по назвам прикидував, здебільшого в назвах міститься натяк на те до якого плагіна вона відноситься. Ті таблиці що мені були невідомі я просто назву їх закидував в гугль і дивився результат. Таким чином з бази я викинув 21-у таблицю із 35!

Виправлення помилки в кодуваннях таблиць бази даних WordPress

В мене виявилось що по налаштуваннях MySql на хостингу всі нові таблиці створювались в кодуванні latin1_swedish_ci що є зовсім неправильним, але легко виправляється. Для цього в PhpMyAdmin в закладці Operations(Операции) знаходимо рядок: Collantions (Сравнение) і міняємо його на utf8_general_ci. Go! ok.
А от як бути з тими що вже в неправильному кодуванні? В інтернеті є описаний спосіб як його поміняти, але мені було простіше видалити всі таблиці в неправильному кодуванні і заново активувати плагіни що їх створювали (але в цьому я був впевнений, а вам так діяти не рекомендую, краще залишіть як є).

Видаляємо ревізії постів
В новій версії вордпресу ввели таке поняття як ревізії. Оскільки більшості ця функція нафіг не впала, то її можна вимкнути тим самим ще зменшити розмір бази даних і не давати їй так швидко розростатись. Для цього в файлі wp-config.php вимикаємо ревізії:

define('WP_POST_REVISIONS', false);

а потім все в тому ж PhpMyAdmin (Ви ж іще не закрили вкладку із ним, чи не так ;)) робимо запит:

DELETE FROM wp_posts WHERE post_type = 'revision'; 

Опісля виділяємо таблицю wp_posts і робимо її оптимізацію (надіюсь ще пам’ятаєте, пару абзаців вище я писав як ще робиться)

Викидуєм зайве з Dashboard (панель керування)
Ну і нарешті заліземо в один файлик — wp-admin/index.php з якого викинемо зайві рядки, аби нові rss-новини більше не засмічували базу.

<div id="dashboard-widgets-wrap">

<?php wp_dashboard(); ?>

</div>

От той рядок що закресленний якраз і треба викинути. Незручність лише в тому, що при кожному оновленні версії WordPress прийдеться знову чистити базу від RSS-каналів новин та знову видаляти цей рядочок у файлі.
В результаті цих дій я отримав таку картину:
wordpress optimization
і я нею задоволений, з 3-ох мегабайт зменшити базу до 1 метра!
p.s. До речі, плагін Clean Options після всіх цих дій, можна вимкнути, а коли обновитесь до нової версії WordPress то знову ввімкнете і повторите ці дії.