Czyszczenie bazy danych PrestaShop: jak utrzymać szybkość sklepu
Twoja baza danych PrestaShop rośnie każdego dnia, nawet gdy nic nie sprzedajesz. Sprawdź, które tabele rosną najszybciej, co możesz bezpiecznie usunąć i jak zrobić to bez ryzyka.
Sklep PrestaShop po cichu gromadzi mnóstwo danych. Każda wizyta, każde wyszukiwanie i każda nieistniejąca strona jest gdzieś zapisywana. Po kilku latach baza danych może zajmować kilka gigabajtów, choć produkty i zamówienia to tylko jej niewielka część.
To nie tylko zmarnowane miejsce. Duże tabele spowalniają kopie zapasowe, sprawiają, że aktualizacje są bardziej stresujące, a niektóre strony panelu administracyjnego działają zauważalnie wolniej.
Które tabele rosną najszybciej?
W większości sklepów główni winowajcy siedzą w tym samym miejscu:
- ps_connections, razem z ps_connections_page i ps_connections_source: jeden wiersz na każdą wizytę, także botów.
- ps_guest: anonimowi odwiedzający, którzy nigdy nie założyli konta.
- ps_statssearch: wszystkie frazy, jakie kiedykolwiek wpisali odwiedzający.
- ps_pagenotfound: dziennik każdej strony 404.
- ps_mail: rejestr każdego e-maila wysłanego przez Twój sklep.
Po kilku miesiącach żadne z tych danych nie są Ci już potrzebne do prowadzenia sklepu. Zamówienia, klienci i produkty znajdują się w zupełnie innych tabelach.
Co możesz bezpiecznie usunąć?
Dobra zasada: przechowuj statystyki i logi tak długo, jak naprawdę z nich korzystasz, na przykład 90 dni, a resztę usuń. Zwróć uwagę na dwie rzeczy:
- Usuwaj tylko anonimowych gości, nigdy gości powiązanych z kontem klienta.
- Zachowaj gości z niedawnym koszykiem, inaczej odwiedzający, który właśnie coś do niego dodał, straci jego zawartość.
Możesz też usunąć wygasłe reguły cenowe i pamięć podręczną wyszukiwania fasetowego. PrestaShop odbuduje ją automatycznie.
Jak zrobić to bezpiecznie
1. Najpierw zrób kopię zapasową
Nigdy nie sprzątaj bez kopii zapasowej. Jeśli coś pójdzie nie tak, po prostu przywrócisz tabele.
2. Sprawdź, co zostanie usunięte
Zobacz, ile wierszy zniknie z każdej tabeli. Jeśli nagle widzisz nieoczekiwanie dużą liczbę, najpierw sprawdź ustawienia.
3. Usuwaj małymi porcjami
Jedno polecenie DELETE na milionach wierszy może zablokować sklep na kilka minut. Lepiej usuwać porcjami po kilka tysięcy wierszy.
4. Odbuduj indeks wyszukiwania
Świeży indeks sprawia, że wyszukiwarka w sklepie znów odpowiada aktualnemu katalogowi.
5. Odzyskaj miejsce na dysku
MySQL i MariaDB same nie oddają miejsca po usuniętych wierszach. Jeśli chcesz, aby pliki bazy danych naprawdę się zmniejszyły, uruchom potem OPTIMIZE TABLE na największych tabelach, na przykład w phpMyAdmin.
Ręcznie czy za pomocą modułu?
Wszystko to da się zrobić zapytaniami SQL w phpMyAdmin, ale wystarczy jeden błędny warunek WHERE i dane przepadają. Do tego trzeba to powtarzać co kilka miesięcy.
Dlatego stworzyliśmy Cloverfield Database Clean-up. Moduł jednym kliknięciem tworzy kopię zapasową, z góry pokazuje, ile wierszy zniknie z każdej tabeli, sprząta porcjami po 2000 wierszy i odbudowuje indeks wyszukiwania. Kopie przywracasz z poziomu tego samego modułu, a do tego obsługiwany jest multistore.
W skrócie
- Logi i statystyki sprawiają, że baza danych rośnie niezauważenie.
- Przechowuj tylko to, z czego naprawdę korzystasz, na przykład ostatnie 90 dni.
- Zawsze najpierw kopia zapasowa, potem sprzątanie małymi porcjami.
- Powtarzaj to kilka razy w roku, a Twój sklep pozostanie szybki.