Lut
19
2014

Jak znacząco zmniejszyć bazę WordPressa? Wyczyść Comment Meta!

wordpress-databaseDziś 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?

Powiązane wpisy

O autorze: Jakub Milczarek

Miłośnik wszystkiego co związane ze sprawami użyteczności, a także specjalista z dziedziny fizykochemii kryminalistycznej. Stronami internetowymi zajmuje się od 1997 roku, a z samym WordPressem zaprzyjaźnił się już w 2007 roku. Miał zaszczyt być szefem organizacji pierwszego polskiego WordCampu w 2010 roku, a w latach 2010-2012 prowadził z sukcesami firmę WP-Expert. Obecnie pracuje jako UX Specialist w OnTheGoSystems. W wolnych chwilach zdobywa Koronę Europy, poszukuje skrzynek OpenCaching i bloguje jako Lodzermensch.

13 komentarzy + Dodaj komentarz

  • 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

Uwaga, leci reklama:



Gdzie nas czytać?

Autorzy »
Komentujący »
#wpzlecenia »