Rallentamento del Checkout in Magento 2: Il Killer della Tabella Quote
Il tuo store Magento 2 ha un killer silenzioso delle prestazioni. Vive nel tuo database.
Le tabelle quote e quote_item crescono ogni volta che un cliente aggiunge un prodotto al carrello. Se non acquistano, il record rimane. Nel corso dei mesi, queste tabelle raggiungono milioni di righe.
Una volta ho visto uno store con 15 milioni di righe nella tabella quote. La velocità del checkout è scesa da 1,2 secondi a 8 secondi. Il commerciante non aveva idea del perché. Il frontend era in cache, quindi tutto sembrava funzionare finché il checkout non falliva.
Le tabelle quote di grandi dimensioni causano questi problemi:
- Caricamento lento della pagina del carrello a causa di pesanti join nel database.
- Chiamate AJAX del checkout lente per spedizione e totali.
- Creazione degli ordini nell'admin più lenta.
- Tempi di backup e ripristino del database più lunghi.
- Elevata pressione sulla memoria di PHP-FPM.
Come risolvere:
Misura il danno Controlla il numero di righe e le dimensioni delle tabelle. Cerca il conteggio
stale_inactive. Si tratta di carrelli abbandonati più vecchi di 30 giorni. Non servono a nulla, ma rallentano le tue query.Archivia prima di eliminare Non eliminare milioni di righe tutto in una volta. Questo bloccherà le tabelle e causerà il crash del database. Per prima cosa, crea delle tabelle di archivio e sposta in esse le quote inattive più vecchie di 90 giorni.
Usa eliminazioni a lotti (batched deletes) Elimina le righe in piccoli blocchi da 10.000. Questo evita lunghi blocchi delle tabelle. Elimina sempre prima le tabelle figlie per rispettare le relazioni tra chiavi esterne. L'ordine dovrebbe essere:
- quote_item_option
- quote_address_item
- quote_shipping_rate
- quote_payment
- quote_address
- quote_item
- quote
Ottimizza e indicizza Esegui
OPTIMIZE TABLEper recuperare spazio su disco. Aggiungi indici composti per aiutare il database a trovare le quote attive più velocemente. Ad esempio, aggiungi un indice su(is_active, updated_at).Automatizza la pulizia Usa il comando Magento CLI:
bin/magento sales:cleanQuotes. Configura un cron job per eseguirlo settimanalmente durante i periodi di basso traffico.
Consiglio Pro: I carrelli degli ospiti (guest carts) sono quelli che causano il maggior ingombro. Riduci la durata della quote per gli ospiti a 7 giorni nella tua configurazione. Questo manterrà il database snello senza danneggiare i clienti reali.
Un cliente ha visto il tempo di caricamento del checkout scendere da 6,5s a 1,4s seguendo questi passaggi. Ha inoltre recuperato 9GB di spazio nel database.
Mantieni le tue tabelle quote piccole per mantenere alti i tuoi tassi di conversione.
