• Skip to main content

Lilumi - Wordpress PHP Full Stack Developer

Hide Search
You are here: Home / wordpress фішки / Wordpress : проста і ефективна оптимізація бази данних

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

lilumi · 11 Листопада 2008 · 19 коментарів

Ви здивуєтесь коли я вам скажу, що в базі даних вордпресу знаходиться 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 то знову ввімкнете і повторите ці дії.

пости по цій темі

  • wordpress: корисні функції в functions.php (14)
  • Хитрий і ефективний метод боротьби зі спамерами. І без КАПЧ. (69)
  • Десяток корисних хаків для WordPress (14)
  • І знову про захист сайту від зламу (10)

wordpress фішки optimization, phpmyadmin, post revisions, wordpress plugins, wordpress фішки, блогерам, оптимізація wordpress'у

Reader Interactions

Comments

  1. masterpiecer says

    14 листопадаа 2008 at 22:24

    Респект! Щоправда я не досяг таких супер результатів (2.8 Мб – 2.5 Мб), але тримати все в порядку – надзвичайно приємно :)

    Відповіcти
    • lilumi says

      14 листопадаа 2008 at 22:31

      хм. цікаво, можливо в тебе в адмінці вже були вирізані rss-потоки новин?

      Відповіcти
      • masterpiecer says

        14 листопадаа 2008 at 22:40

        Не знаю, ну я там ще деякі повидаляв сторонні таблиці… Ну от так десь :)

        Відповіcти
  2. podarok says

    15 листопадаа 2008 at 00:26

    в мене не вордпрес, але результат чистки іноді із 80 мегабайт до 20

    Відповіcти
    • lilumi says

      15 листопадаа 2008 at 13:27

      це в друпалі така чистка можлива ?
      А чого ти кажеш що оптимізацію бази данних непотрібно робити?
      В мене просто раніше дуже часто появлялися error_log’и а з тих пір як зробив цю оптимізацію, то тьху-тьху, більше не появлялись

      Відповіcти
  3. hellveen says

    15 листопадаа 2008 at 01:32

    Класно)
    а от так швидко міняти кодування я би не радив – у мене з цим були дуже серйозні проблеми http://blogoreader.org.ua/2008/06/18/moving-wordpress-to-new-hosting/

    Відповіcти
    • lilumi says

      15 листопадаа 2008 at 13:39

      я колись читав ту статтю в тебе і тоді побоявся щось у себе міняти.
      А зараз начитався купи книжок і вирішив ризикнути =)

      Відповіcти
  4. LaSet says

    18 листопадаа 2008 at 04:59

    багато плагінів не мають деінсталяції свої таблиць, тому такі чистки можна робити

    але ефект буде чисто пізнавальний

    Відповіcти
  5. Igor says

    11 Грудня 2008 at 20:50

    лишнє » зайве
    мусор » сміття
    Панель управління » Панель керування
    полей » полів
    виключити (в сенсі turn off) » вимкнути
    включити (в сенсы turn on) » увімкнути

    і дурне запитання — насправді так впирається в розмір бази даних? :)

    P.S. повідомляти про нові до цього поста » повідомляти про нові коментарі до цього постУ (або, ще краще, запису — але мабуть всюди на сайті саме “пост”)

    Відповіcти
    • lilumi says

      15 Грудня 2008 at 16:31

      Щиро вдячний за виправлення. Мені насправді дуже не хватає редактора-коректора як українських так і російських текстів, бо чим далі від школи, тим менше в пам’яті лишається з граматики.
      То ж завжди буду радий таким виправленням.

      Впирається не в розмір бази даних а в тому аби навести порядок і позбавитись зайвого.

      Відповіcти
      • kernpro says

        26 Грудня 2008 at 12:15

        можу допомогти в цьому питанні, я прихильник чистого укр-нету

        Відповіcти
    • kernpro says

      26 Грудня 2008 at 12:16

      абсолютно підписуюся під дурним запитанням ;-) (тобто приєднуюся)

      Відповіcти
  6. Bohdan says

    2 Січня 2009 at 11:52

    Дякую, викинув багато непотребу..

    Відповіcти
    • lilumi says

      2 Січня 2009 at 15:53

      нема за що. Але я помітив, що все одно дані з рсс-потоків накопичуються і ніяк не можу знайти те місце де б заборонювався їх виклик.

      Відповіcти
  7. bubastic says

    1 Грудня 2009 at 08:35

    >> DELETE FROM wp_posts WHERE post_type = “revision”;
    не совсем правильно

    Лучше выполнить такой запрос
    DELETE `p`, `pm`, `c`, `tr`
    FROM `wp_posts` AS `p`
    LEFT JOIN `wp_postmeta` AS `pm`
    ON `p`.`ID` = `pm`.`post_id`
    LEFT JOIN `wp_comments` AS `c`
    ON `p`.`ID` = `c`.`comment_post_ID`
    LEFT JOIN `wp_term_relationships` AS `tr`
    ON `p`.`ID` = `tr`.`object_id`
    WHERE
    `p`.`post_type` = ‘revision’;

    Відповіcти
  8. Vendock says

    1 Грудня 2011 at 11:03

    Топовая гильдия World of Warcraft ждет вас на сервере Гордунни.

    Відповіcти
  9. Тусько says

    24 Грудня 2012 at 00:50

    Було: 848.8 КБ :D
    Стало: 792.8 КБ

    Ще використовував WP Optimize :)

    з кодуванням те ж саме було)
    latin1_swedish_ci на utf8_general_ci поміняв без проблем)

    Відповіcти
    • Тусько says

      24 Грудня 2012 at 01:51

      іншу базу оптимізував з 2,4мб до 1,4мб

      дякую за допомогу)))

      Відповіcти

Залишити відповідь Скасувати відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Lilumi - Wordpress PHP Full Stack Developer