Pulire il database di PrestaShop: come mantenere veloce il tuo negozio
Il database di PrestaShop cresce ogni giorno, anche quando non vendi nulla. Scopri quali tabelle crescono di più, cosa puoi eliminare in sicurezza e come farlo senza rischi.
Un negozio PrestaShop raccoglie silenziosamente moltissimi dati. Ogni visita, ogni ricerca e ogni pagina inesistente viene salvata da qualche parte. Dopo qualche anno il database può arrivare a diversi gigabyte, mentre prodotti e ordini ne occupano solo una piccola parte.
Non è solo spazio sprecato. Le tabelle grandi rallentano i backup, rendono gli aggiornamenti più delicati e alcune pagine del back office sensibilmente più lente.
Quali tabelle crescono più in fretta?
Nella maggior parte dei negozi i principali colpevoli sono sempre gli stessi:
- ps_connections, con ps_connections_page e ps_connections_source: una riga per ogni visita, bot compresi.
- ps_guest: visitatori anonimi che non hanno mai creato un account.
- ps_statssearch: tutti i termini di ricerca digitati dai visitatori.
- ps_pagenotfound: un registro di ogni pagina 404.
- ps_mail: un elenco di tutte le email inviate dal tuo negozio.
Dopo qualche mese nessuno di questi dati ti serve più per far funzionare il negozio. Ordini, clienti e prodotti si trovano in tabelle completamente diverse.
Cosa puoi eliminare in sicurezza?
Una buona regola: conserva statistiche e log finché li usi davvero, per esempio 90 giorni, ed elimina il resto. Fai attenzione a due cose:
- Elimina solo gli ospiti anonimi, mai quelli collegati a un account cliente.
- Conserva gli ospiti con un carrello recente, altrimenti un visitatore che ha appena aggiunto qualcosa al carrello lo perderà.
Puoi eliminare anche le regole di prezzo scadute e la cache della ricerca a faccette. PrestaShop ricostruisce quella cache automaticamente.
Come procedere in sicurezza
1. Fai prima un backup
Non pulire mai senza backup. Se qualcosa va storto, ti basta ripristinare le tabelle.
2. Controlla prima cosa verrà eliminato
Verifica quante righe verranno rimosse per ogni tabella. Se vedi all'improvviso un numero inaspettatamente alto, controlla prima le impostazioni.
3. Elimina a piccoli blocchi
Un unico DELETE su milioni di righe può bloccare il negozio per minuti. Meglio eliminare a blocchi di qualche migliaio di righe.
4. Ricostruisci l'indice di ricerca
Un indice di ricerca aggiornato fa sì che la ricerca del negozio corrisponda di nuovo al catalogo attuale.
5. Restituisci lo spazio al disco
MySQL e MariaDB non restituiscono da soli lo spazio delle righe eliminate. Se vuoi che i file del database diventino davvero più piccoli, esegui poi OPTIMIZE TABLE sulle tabelle più grandi, per esempio da phpMyAdmin.
A mano o con un modulo?
Puoi fare tutto con query SQL in phpMyAdmin, ma basta un WHERE sbagliato e perdi i dati. E devi ripetere l'operazione ogni pochi mesi.
Per questo abbiamo creato Cloverfield Database Clean-up. Il modulo crea un backup con un clic, mostra in anticipo quante righe perderà ogni tabella, pulisce a blocchi di 2000 righe e ricostruisce l'indice di ricerca. I backup si ripristinano dallo stesso modulo, ed è supportato anche il multinegozio.
In breve
- Log e statistiche fanno crescere il database senza che te ne accorga.
- Conserva solo ciò che usi davvero, per esempio gli ultimi 90 giorni.
- Sempre prima un backup, poi pulizia a piccoli blocchi.
- Ripeti qualche volta all'anno e il tuo negozio resterà veloce.