W jaki sposób wyczyścić bazę danych z elementów „transient” z tabeli wp_options?
- Poziom trudności:
Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej:
Kilka miesięcy temu zauważyłem, że baza danych strony mojego klienta jest podejrzanie duża. Po dokładnej analizie okazało się, że tabela wp_options jest nienaturalnie duża. W ten właśnie sposób odkryłem, że tabela składa się z tysięcy linijek kodu, które zaśmiecają bazę. Ponieważ nie uśmiechało mi się usuwać każdej linii ręcznie, dlatego skorzystałem z pewnego sposobu pozwalającego usunąć za jednym razem wszystkie śmiecące linie.
Linie dopisane do wp_options wyglądały bardzo podobnie:
_site_transient_browser_572f1534b371634b371663f1a8... _site_transient_timeout_browser_71663f15e544fda7a5... _transient_feed_83dc3f15e7166a7a531asf9a4... _transient_plugin_slugs _transient_timeout_feed_71663f15e544fda7a531asd14...
Przed podjęciem jakichkolwiek działań wyeksportowałem bazę na dysk tak aby w razie potrzeby mieć kopię zapasową.
Skoro już masz kopię to możesz przystąpić do działania. Kliknij na zakładkę SQL w górnym menu i wklej:
DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')
Przy pomocy tego polecenia usuniesz wszystkie kolumny, które zawierają słowo „transient”. Po pewnym czasie mogą po tej operacji pojawić się te kolumny, z których korzystają wtyczki i sam mechanizm WordPressa. Pozostałe nie powinny wrócić i zaśmiecać bazy.
Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej:
Ale to nie są śmieci tylko tymczasowy cache, z którego korzysta i core (sesje, kanały rss, aktualizacje,….) i niektóre wtyczki (np: jetpack do brute force, W3 total cache do chyba cloudflare, Flare do odpytań social media o ilość udostępnień) i niektóre motywy (np: do powiązanych/popularnych wpisów).
Takie masowe usunięcie to jak odśnieżenie chodnika podczas śnieżycy. Jak x wtyczka/motyw nieoptymalnie/źle z tego korzysta albo zadania CRON są ubijane przez niski limit. Nic to nie da.
Zdecydowanie warto przyjrzeć się które wtyczki są nie zoptymalizowane i je poprawić. Jednak kiedy element transient zbiera się miesiącami a baza danych urasta z kilkunastu MB do kilkuset – wtedy to pierwsze, co warto zrobić aby komfortowo diagnozować problem w phpmyadmin.