Когато един WordPress сайт е съвсем нов, базата му данни е лека и бърза и е почти празна. С течение на времето в нея се натрупва голямо количество данни и обекти, част от които не са нужни за работата на сайта.
Колкото повече се увеличава размерът на базата, толкова повече се забавя процесът по намирането и извличането на конкретна информация от нея. Което се усеща от посетителите като забавено зареждане на сайта.
Ако имате или поддържате WordPress сайт, за да ускорите зареждането му и да подобрите потребителското изживяване при работа с него, можете да извършвате периодична оптимизация на базата данни. Това включва изчистване на ненужните обекти от нея. Но кои са тези ненужни обекти и в кои таблици на базата данни най-често се натрупват?
Оптимизирането на базата данни ще допринесе за:
- По-бърза обработка на бекъпа – създаване или възстановяване;
- Поддържане на съвместимост с хостинг параметрите на плановете;
- Намаляване на генерираното процесорно време от базата данни;
- Намаляване на потреблението на системна памет;
- Повишаване на производителността и ускоряване на зареждането на сайта;
- Подобряване на потребителското изживяване при взаимодействие със сайта.
Вижте кои са най-често натоварените таблици в базата данни на WordPress и как можете да ги оптимизирате:
Таблици в базата данни на WordPress
В таблиците на базата данни се съхранява цялата информация за сайта – настройките му, статии, коментари, както и данните на плъгините, темите. При всяко зареждане на страница от сайта, системата постоянно се допитва до базата за настройките и информацията, която трябва да се покаже.
Оптимизацията на базата данни засяга самата информация в базата (дисково пространство, системен достъп). Като не се налагат промени по другите части на приложението – логиката за записването, извличането, обработката и презентацията на данните от приложението (PHP код, SQL заявки, HTML и CSS код).
За да откриете кои са ненужните данни в базата данни, проверете таблиците, в които е по-вероятно да се натрупат такива данни.
Стандартните системни таблици, които се създават при нова инсталация на WordPress, са 12, но не във всички се натрупват ненужни данни.
WordPress плъгините и темите записват своя информация в някои от тези системни таблици на WordPress. А някои създават и допълнителни свои таблици в базата данни.
Ето няколко таблици в базата данни на WordPress, които може да проверите за нужна оптимизация.
Таблица wp_options
Какво можете да намерите в таблицата:
- много редове с кеш обекти (transients)
Тази таблица съхранява настройките на WordPress сайта като URL адрес, имейл на администратора, брой статии на страница, категория по подразбиране и други.
Първите редове в таблицата съдържат общите настройки на сайта, а след това са редовете с transients (временни обекти от данни) на инсталираните плъгини.
Всеки един ред в таблицата има опция autoload, която е със стойност „yes“ или „no“. Тя определя дали даденият обект ще бъде автоматично зареден при зареждането на всяка страница от сайта, или не. Колкото повече обекти се зареждат автоматично (autoload=yes), толкова повече време ще е нужно за окончателното зареждане на страницата.
За тази таблица е много важно размерът да не е прекалено голям (мегабайти, например над 50 MB) и размерът на обектите, които имат опция yes за autoload да е минимален.
Можете да проверите общия размер на всички обекти, които се зареждат автоматично със SQL заявката:
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';
wp_options – променете префикса „wp_“ с този на Вашата таблица;
Важно: Преди да стартирате изпълнението на SQL заявки към базата данни, направете нейно резервно копие. Не премахвайте обекти от базата данни, без да сте напълно сигурни, че те са ненужни.
Ако размерът на зареждащите се обекти (autoload_size) е над 10 MB, може да извършите проверка дали не може да се оптимизира. Прегледайте какви обекти се зарежат, на кой плъгин са и дали не може да се деактивират. Таблицата, от друга страна, е добре също да се поддържа в малки размери и да не превишава 50 MB и 3000 реда.
Възможно е в тази таблица да са записани огромен брой обекти от некоректно функциониращ плъгин или неработеща настройка на крон системата, която се използва от плъгините за периодично почистване на записите.
Например плъгинът WooCommerce съхранява обекти с име „wc_session“. Голям брой от тези обекти може да се натрупа, ако например сайтът се посещава от агресивни ботове.
Друга причина за увеличението на редовете в таблицата wp_options може да е от изоставени данни на деинсталирани плъгини.
Почистването на данните, останали от деинсталиран плъгин, може да се извърши, като потърсите с какво име са записите за дадения плъгин и ги премахнете от таблицата.
В WordPress стандартно са добавени всички необходими индекси за базата данни, но при наличие на много записи в тази таблица, може да бъде добавен допълнителен индекс за autoload.
За изтриване на записи от тази таблица може да Ви помогне и плъгинът Advanced Database Cleaner. С този плъгин можете да видите списък с всички редове в тази таблица и дали дадените обекти се зареждат автоматично (autoload:yes), или не. Можете да маркирате и изтриете точно определени редове, за които сте сигурни, че са на плъгин, който вече е деинсталиран от сайта.
Друг плъгин, които ще Ви помогне за изчистване на кеш обектите (transients) в таблицата, е Transients Manager.
Таблица wp_posts
Какво можете да намерите в таблицата:
- спам постове;
- огромен брой ревизии.
Основното съдържание на сайта е съсредоточено в тази таблица. В нея се съхранява съдържанието на статиите, страници и данни за автора, дата, заглавие, статус (публикувана, чернова и т.н.) и друга информация.
В тази таблица може да се провери за спам публикации. Също така, проверете какъв брой версии (revisions) се записват за една статия. Ако са повече от 3, помислете да ги намалите и да изчистите вече записаните в базата данни.
Когато увеличавате броя на статиите, ще се увеличава и броя на запазените ревизии като цяло. Можете да промените броя на ревизиите, които се пазят за всяка статия, с параметъра в wp-config.php: define('WP_POST_REVISIONS', 3);
За да намалите размера на таблицата, ако имате голям брой ревизии на съдържанието, може да проверите и изчистите редовете им. Изтриването на ревизиите обаче ще премахне историята на извършените промени по статиите, страниците. Уверете се, че тя не Ви е нужна.
Изтриване на ревизиите на статиите/страниците чрез SQL заявка:
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( b.term_taxonomy_id = d.term_taxonomy_id)
WHERE a.post_type = 'revision'
AND d.taxonomy != 'link_category';
wp_ – заменете с префикса на Вашите таблици;
Таблица wp_postmeta
Какво можете да намерите в таблицата:
- изостанали данни от деинсталирани плъгини
В тази таблица също се натрупват много редове. Данните на всички допълнителни полета, които се показват в редактора при редактиране на съдържанието на статията, се записват в тази таблица. Например съдържанието на полета Title, Description, Keyword на плъгите All in One SEO Pack и Yoast SEO се съхраняват тази таблица.
Трябва да се има предвид, че много от плъгините оставят информация в тази таблица, дори и след деинсталирането. В случай че размерът на таблицата е твърде голям, може да се прегледа за останала информация, която вече не се ползва от сайта.
Таблица wp_comments
Какво можете да намерите в таблицата:
- спам коментари
В тази таблица се записват коментарите от сайта. Ако сайтът няма защита на формата за коментари, то в базата може да се натрупат спам коментари. Активирайте Akismet плъгина, за да може спам коментарите да се изчистват автоматично.
Таблици на плъгини
Понякога голямата таблица с проблемно голям брой редове, може да не е системна, но на плъгин.
Ако попаднете на проблемна таблица на плъгин, първо потърсете повече информация от разработчиците на плъгина.
Например таблицата icl_string_pages на плъгина WPML се използва само за кеш информация и броят на редовете в нея може да надмине 1 милион. Решението, при прекалено голям размер на тази таблица, може да се намери в сайта на поддръжката: Database table icl_string_pages too big.
Инструменти за оптимизиране на базата данни
Инструментите за оптимизиране на базата данни може да извършват две подобрения – намаляване на размера на базата чрез изчистване на ненужни данни и дефрагментиране на данните.
Плъгини
Препоръчителният начин за почистване и оптимизиране на базата данни на WordPress е чрез плъгин, когато не сте сигурни какво и как да изтриете от базата данни. Примерни плъгини, които извършват почистване и оптимизация на WordPress базата данни: WP-Optimize, Advanced Database Cleaner.
Плъгин WP-Optimize
Плъгинът WP-Optimize предлага много функционалности за оптимизиране на базата данни.
С този плъгин можете да извършвате оптимизация на базата данни и да почиствате таблиците – ревизии, спам коментари, временни данни (transients).
Една много удобна и полезна опция, която предоставя плъгинът, е информация за самите таблици в базата – на кой плъгин са и дали са активни таблици.
Бележка: Преди да изтриете дадена таблица, уверете се, че сте направили бекъп на базата данни. Вижте няколко лесни начина за създаване на резервно копие на базата данни: Как да направя резервно копие на базата данни? | Help
Плъгинът предлага и платена опция за периодично автоматично извършване на оптимизация на базата данни.
phpMyAdmin
През инструмента в cPanel за управление на бази данни phpMyAdmin може да се извършва оптимизация и поправка на таблиците в базата данни.
Опцията за оптимизиране в phpMyAdmin (Optimize table) използва SQL командата OPTIMIZE TABLE. Процесът по оптимизация освобождава заделеното, но неизползваемо място в таблиците и дефрагментира данните в базата.
Дефрагментирането означава оптимално подреждане на данните в системните файлове на базата, така че да не се създава излишно натоварване в процеса на откриването и обработката им. Чрез дефрагментацията се ускорява системния достъп до данните, от което се намалява потреблението на памет и процесорен ресурс.
Вижте повече в статията: Как да оптимизирам или поправя база данни през phpMyAdmin? | Help
Също така през phpMyAdmin може да се използват SQL заявки, чрез които да се изтриват точно определени данни.
Важно: Винаги преди да решите да извършите промяна в базата данни, правете нейно копие или бекъп. Вижте няколко лесни начина за създаване на резервно копие на базата данни: Как да направя резервно копие на базата данни? | Help
Други
Съществуват и други инструменти и начини за оптимизиране на базата данни. Например можете да използвате инструмента за работа с WordPress през SSH wp-cli.
За оптимизиране на базата данни с wp-cli се използва командата „wp db optimize“. Тази команда използва системния инструмент mysqlcheck.
Бележка: Когато искате да извършите оптимизацията в хостинг акаунт при СуперХостинг.БГ, използвайте „wp-cli“ вместо само „wp“, например „wp-cli db optimize“.
Оптимизиране на базата данни е подходящо да се извършва периодично и след изтриване на големи обеми от информация в таблиците.
Оптимизацията на базата данни е част от цялостния процес за оптимизиране и ускоряване на сайта. Когато тя не даде резултат, тогава трябва да се премине към проверка на логиката за обработка на данните – може да е нужно да се оптимизира някоя бавна SQL заявка. Но когато става въпрос за WordPress, промяна в кода на приложението или плъгина ще изисква помощ от специалисти в областта на уеб разработката и поддръжката. Когато оптимизацията обхваща всички аспекти от работата на приложението, тогава резултатите са по-добри и ускоряването е по-значимо.
Много е важно, независимо дали сайтът е нов, или на няколко години, инсталирането и тестването на нови плъгини или теми да се извършва на тестово копие на сайта. По този начин, ако решите, че даденият плъгин не Ви върши работа, няма да е нужно да го инсталирате в реалния сайт. И няма да се притеснявате, че трябва да почиствате базата данни след деинсталацията му.