Dziś przedstawię Wam prostą receptę na odchudzenie bazy danych Waszego WordPressa.
Może to być zaskakujące dla niektórych, ale najszybciej rosnącą tabelą w większości baz danych jest wp_commentmeta.
Czasem zawiera ona kilka istotnych rekordów, ale generalnie jest tam śmietnik pozostawiony przez wtyczkę Akismet.
Wziąłem pierwszy lepszy „mały blog” i oto co widzę w phpMyAdmin:
- wp_comments 57,9 KB -> tyle zajmuje 107 komentarzy
- wp_commentmeta 6,5 MB -> co stanowi ponad połowę całej bazy!
Większość z rekordów w tabeli wp_commentmeta, które spokojnie możemy usunąć to:
- akismet_result
- akismet_history
- akismet_as_submitted
OK – tyle tytułem wstępu, a teraz zabieramy się za robotę :)
Po pierwsze robimy backup naszej bazy danych – jakby coś się jednak zepsuło…
Następnie usuwamy z tabeli wp_commentmeta wszystkie rekordy, które nie są związane z jakimkolwiek rekordem w tabeli komentarzy (wp_comments)
W tym celu klikamy na zakładkę SQL w phpMyAdmin i wpisujemy:
DELETE FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments )
Oczywiście jeśli macie inny prefiks bazy (a powinniście mieć) to zamieniamy wp_ na waszprefiks_
W przypadku bloga, na którym pracowałem za pomocą powyższej komendy usunąłem 5 242 zbędnych rekordów.
Teraz pozostaje nam jeszcze usunięcie rekordów, które są zbędne, chociaż są związane z naszymi komentarzami. W tym celu wydajemy następujący rozkaz dla bazy danych:
DELETE FROM wp_commentmeta WHERE meta_key LIKE "%akismet%"
W ten sposób usunąłem jeszcze 152 zbędne rekordy.
Na koniec nie zapomnijcie o optymalizacji tabeli! W zasadzie warto zoptymalizować wszystkie tabele, które tego wymagają.
W moim przypadku ten prosty manewr pozwolił na zmniejszenie tabeli wp_commentmeta z 6,5 MB do 9,1 KB, a cała baza odchudziła się niemal o połówę!
A jak to wygląda u Was?
Komentarze
13 odpowiedzi na „Jak znacząco zmniejszyć bazę WordPressa? Wyczyść Comment Meta!”
tabela comments => 144 KB
tabela commentsmeta => tyle samo KB – jeszcze nigdy nie czyściłem ręcznie :)
„Na koniec nie zapomnijcie o optymalizacji tabeli! W zasadzie warto zoptymalizować wszystkie tabele, które tego wymagają.”
Nie korzystam z myisam tylko z innodb, więc tutaj też ok.
Bardzo możliwe – albo nie używasz Akismeta, albo Twoją stronę omijają spamboty :)
CloudFlare blokuje część, pozostały spam blokuje wtyczka stop spammers, wordfence blokuje automaty, w efekcie Akismet raz na jakiś czas coś tam wyłapie jak przejdzie wszystkie przeszkody, ale nie ma za wiele do roboty = mniej do bazy wrzuca.
Tutaj opis wtyczki: http://matiweb.com/wordpress/stop-spammers-swietne-narzedzie-zwalczania-spamu-martwych-rejestracji/
A automatów spamujących codziennie od cholery :-) Także chciałbym ale niestety mnie nie omijają ;)
To wiele wyjaśnia :)
Mój wpis był dla typowych użytkowników Akismeta, których jest chyba przeważająca większość…
W końcu to oficjalna wtyczka do spamu ;)
„Może to być zaskakujące dla niektórych, ale najszybciej rosnącą tabelą w większości baz danych jest wp_commentmeta.”
U mnie na kilku stronach tabela „postmeta”
Oczywiście – postmeta na większości stron też dość szybko rośnie, ale zawartość tej tabeli jest raczej kluczowa… Szczególnie szybko urośnie kiedy używamy wielu załączników, własnych pól etc.
I wtyczek, które niepotrzebnie w tej tabeli ryją. Przykładowo WordPress SEO i z każdym wpisem 8 czy 9 zbędnych pozycji w tabeli postmeta. Plus, że nowa wersja już tak nie robi :) Jak sporo nowych wtyczek.
Jakby nie patrzeć, to sporo userów uzywa też disqusa, wiec też ich problem nie dotyczy ;)
Nie zapominaj, że domyślnie komentarze są synchronizowane – twoja baza baza disqusa. Nie wiem skąd przekonanie, że jak ma się disqus to wszystkie komentarze trafiają tylko do disqusa.
Rozumiem, że jeśli komentowanie jest wyłączone, to baza nie rośnie tak szybko w tradycyjnym WordPressie?
Jaką wtyczkę warto zainstalować, aby komentowanie było inne niż standardowe w WordPressie. Na przykład takie, jak w tym serwisie?
Przecie tutaj masz domyślny system komentarzy :P
Chcesz coś z bajerem to zerknij na inline comments, disqus, jetpack comments, livefire 3