Migliorare le Prestazioni del Database su VPS

Pubblicato: di Josh Helmuth
Migliorare le Prestazioni del Database su VPS thumbnail

Cerca “migliora le prestazioni del database VPS” e troverai aziende di hosting che promuovono aggiornamenti VPS attraverso post sui blog. Potremmo farlo anche noi — disponiamo di un prodotto VPS altamente scalabile.

Ma gli aggiornamenti da soli non risolveranno il tuo problema.

Avresti solo un database lento su un server più costoso. In realtà, la maggior parte dei siti web non necessita di aggiornamenti, specialmente non come primo passo per migliorare le prestazioni.

Vuoi ottimizzare il sito web e il database prima di considerare un aggiornamento.

Questo è il nostro obiettivo con questa guida — aiutarti a ottimizzare le prestazioni del database sul tuo VPS esistente.

Cosa Intendiamo Con “Ottimizzazione Delle Prestazioni Del Database”?

Ottimizzare le prestazioni del database significa migliorare sistematicamente la rapidità e l’efficienza con cui un database elabora le query, gestisce gli utenti contemporanei e gestisce le risorse. Questo comporta tecniche come l’indicizzazione, l’ottimizzazione delle query e la taratura dell’hardware per ridurre i tempi di risposta, aumentare il throughput e ridurre i costi operativi mantenendo l’accuratezza dei dati e l’affidabilità del sistema.

Ecco come si svolge:

Concetto di ottimizzazione del database che mostra come la pulizia dei dati non necessari può evitare costosi aggiornamenti VPS trasformando la memorizzazione del database disordinata in una struttura di database organizzata ed efficiente.

Pensa al tuo database come a un magazzino. Col passare del tempo, le cose si accumulano fino a quando non c’è più spazio per muoversi e trovare ciò di cui hai bisogno richiede un’eternità.

Per aiutarti, potresti:

  • Acquista più spazio di archiviazione.
  • Rimuovi gli oggetti non necessari.

L’opzione migliore: rimuovi prima gli oggetti non necessari. Spostare il disordine in uno spazio più grande non risolve il problema di fondo. Potresti ritrovarti con lo stesso problema dopo qualche mese, ora con il tuo spazio di archiviazione più grande.

Il tuo database funziona allo stesso modo. Raccoglie dati (anche accumulando cose di cui non hai più bisogno) quindi, hai bisogno di pulizie regolari.

Il Tuo Database O Il Codice Del Tuo Sito Web È Davvero Gonfio?

Devi controllare cosa sta effettivamente rallentando il tuo sito.

Quando il database è il collo di bottiglia:

  • Le pagine con contenuti dinamici (come elenchi di prodotti o archivi di blog) si caricano lentamente.
  • L’area di amministrazione del tuo sito risulta lenta nella gestione di post o prodotti.
  • Le query al database impiegano più di 1-2 secondi per completarsi.
  • I picchi di traffico causano rallentamenti significativi.

Quando il codice del sito web è il problema:

  • Il tuo sito impiega un’eternità a caricarsi anche se l’attività del database è minima. (Anche le pagine statiche si caricano lentamente!)
  • File di immagini grandi o media non ottimizzati rallentano i tempi di caricamento (controlla prima GTmetrix).
  • Troppi Plugins/plugin o temi pesanti causano ritardi.

Strumenti diagnostici rapidi:

  • Utilizza strumenti come Query Monitor (per WordPress) per vedere quali query del database impiegano più tempo.
  • Controlla l’uso di CPU e memoria del tuo server durante i periodi di maggiore affluenza.
  • Esegui un test PageSpeed sia sulle pagine pesanti di database che su quelle statiche per confrontare i tempi di caricamento.

Se le query del database superano costantemente alcuni secondi, o le pagine ricche di database si caricano significativamente più lentamente di quelle statiche, hai un problema di prestazioni del database che vale la pena affrontare.

Nota per Nerd: Dobbiamo essere chiari – Queste raccomandazioni non sono specifiche per DreamHost. Lo menzioniamo perché quando hai uno degli ambienti di hosting gestiti di DreamHost, il team di DreamHost si occuperà della manutenzione a livello di server per te.

Ricevi contenuti direttamente nella tua casella di posta

Iscriviti ora per ricevere tutti gli ultimi aggiornamenti direttamente nella tua casella di posta.

Come Puoi Ottimizzare Le Prestazioni Del Database Su Un VPS?

Ecco la tua guida passo passo per far funzionare il tuo database come se fosse potenziato da integratori di performance:

1. Aggiorna Il Tuo Software VPS

Sembra semplice, ma molti proprietari di siti web non aggiornano mai il sistema operativo del loro VPS o il software del server dopo che il sito è attivo.

Perché è importante: Un software di database obsoleto è il modo più semplice per perdere miglioramenti delle prestazioni e aggiornamenti di sicurezza che gli sviluppatori hanno pubblicato.

Ad esempio, un test di prestazione del database ha mostrato che le versioni più recenti di MariaDB sono dal 13% al 36% più veloci rispetto alle versioni di MySQL dello stesso periodo. Quindi, se stai ancora utilizzando una versione più vecchia del database, aggiornare all’ultima versione dovrebbe risultare in un notevole aumento delle prestazioni.

Cosa aggiornare specificamente:

  • Software di database: MySQL o MariaDB
  • Versione PHP: PHP 8.4 (ultima versione stabile rilasciata nel novembre 2024) o PHP 8.3 per la massima compatibilità
  • Sistema operativo: Mantieni aggiornata la tua distribuzione Linux con le ultime patch di sicurezza
  • Server web: Apache o NGINX

Nota per gli esperti: Ricorda di testare gli aggiornamenti in un ambiente di staging prima! Non vorresti che il tuo sito live si interrompa a causa di un problema di compatibilità.

2. Pulisci Il Gonfiore Del Database

Ricordi quella metafora della stanza di stoccaggio? È ora di applicare il metodo Marie Kondo al tuo database.

Ecco un po’ di disordine comune nel database che dovrai pulire regolarmente:

  • Vecchie revisioni dei post (WordPress può salvare più di 50 revisioni per post)
  • Commenti Spam e meta dei commenti inutilizzati
  • Transienti scaduti e dati della cache
  • Tabelle residue di plugin inutilizzati
  • File di log che non sono stati cancellati per mesi

Per gli utenti WordPress:

  • Usa plugin, come WP-Optimize o Advanced Database Cleaner.
  • Limita le revisioni dei post aggiungendo define (‘WP_POST_REVISIONS’, 3); al tuo wp-config.php.
  • Elimina regolarmente i commenti Spam.
  • Aggiorna la tua versione di PHP a PHP 8.4, che include miglioramenti delle prestazioni, inclusi operazioni SHA-256 da 2x-5x più veloci e funzioni sprint ottimizzate.

Per altre piattaforme:

  • Esegui comandi OPTIMIZE TABLE su tabelle frequentemente aggiornate.
  • Elimina le voci di log non necessarie più vecchie di 30 giorni.
  • Rimuovi i dati di prova o fittizi che hai creato durante lo sviluppo.

3. Indicizzazione del Database

Concetto di indice del database illustrato come schedario con cassetti organizzati in ordine alfabetico (A-C, D-F, G-I, J-L, M-O, P-R) che mostra come gli indici aiutino a localizzare rapidamente i dati.

Pensa agli indici del database come a un indice di un libro.

Senza di essi, il tuo database deve scandagliare ogni singola riga per trovare ciò di cui ha bisogno. Con gli indici, il database può trovare una scorciatoia per arrivare dove si trovano i dati che hai richiesto. Un’indicizzazione appropriata può ridurre i tempi di interrogazione da secondi a millisecondi e aiutare a migliorare notevolmente le prestazioni del tuo database, soprattutto con database più grandi.

Per WordPress, utilizza un plugin come Index WP MySQL For Speed, segui i passaggi nel plugin, e il gioco è fatto.

Tuttavia, devi assolutamente creare un backup del sito web prima di indicizzare il database.

Quando aggiungere indici:

  • Hai tabelle grandi con migliaia di righe per prodotti, post del blog, utenti, ecc.
  • Colonne che cerchi o filtri frequentemente
  • Colonne chiave esterne
  • Molte colonne utilizzate nelle operazioni di “JOIN” o nelle clausole “WHERE”

Quando NON aggiungere indici:

  • Tabelle piccole (solitamente sotto le 1.000 righe non si notano miglioramenti di performance)
  • Colonne che cambiano frequentemente (gli indici rallentano le operazioni di “INSERT/UPDATE”)
  • Sei a corto di spazio e vuoi essere parsimonioso (gli indici occupano spazio)

4. Configura La Cache Delle Query

Il tuo database è come un bibliotecario utile che viene spesso chiesto per lo stesso insieme di libri (popolari). Invece di andare nella stanza sul retro, cercando di trovare i libri più e più volte, un bibliotecario intelligente si ricorda dove sono i libri, magari tenendoli nei suoi cassetti della scrivania.

La cache delle query funziona in modo simile. Quando il tuo database esegue una query, memorizza il risultato nella memoria. La volta successiva che qualcuno richiede gli stessi dati, invece di eseguire nuovamente la query complessa, il tuo database fornisce il risultato memorizzato nella cache quasi istantaneamente.

Se i dati vengono aggiornati, anche il risultato memorizzato nella cache viene aggiornato e i nuovi utenti ricevono automaticamente i risultati più recenti.

Confronto della cache delle query del database che mostra un notevole miglioramento delle prestazioni: senza cache impiega 2,3 secondi al 40% della velocità rispetto alla cache a 0,1 secondi e velocità di caricamento del 100% per le query dei prodotti popolari.

Ecco come puoi implementare la cache delle query per gli utenti di MySQL 8.0 (più comune):

  • ProxySQL: La sostituzione raccomandata per la cache delle query di MySQL. Si posiziona tra la tua applicazione e il database, memorizzando i risultati con TTL configurabile
  • Caching a livello di applicazione: Gli utenti di WordPress dovrebbero utilizzare Plugins/plugin di caching come W3 Total Cache o simili invece del caching a livello di database per una implementazione più rapida.
  • Redis o Memcached: Sistemi di caching esterni che richiedono modifiche al codice ma offrono più controllo e migliore scalabilità. Alcuni prodotti di hosting offrono caching di oggetti integrato con Redis per siti e-commerce, siti di membri e siti di notizie o blog.

Per la maggior parte dei piccoli siti web, puoi tranquillamente saltare la cache delle query a livello di database. Utilizza prima le funzionalità di cache integrate nel tuo CMS o nell’applicazione. Se hai bisogno di maggiori prestazioni, contatta uno sviluppatore per implementare un’istanza Redis per la cache degli oggetti.

Aggiornamento importante: La cache di query integrata di MySQL è stata deprecata in MySQL 5.7.20 e completamente rimossa in MySQL 8.0. Sebbene MariaDB supporti ancora la cache di query, è disabilitata per impostazione predefinita a causa di problemi di scalabilità su macchine multi-core.

5. Configura Il Tuo Database

Il tuo database viene fornito con impostazioni predefinite progettate per funzionare su qualsiasi server, da un piccolo hosting condiviso a hardware aziendale. Ma proprio come una maglietta taglia unica, queste impostazioni non sono ottimizzate per le tue esigenze. Si limitano a fare il lavoro.

Gli ambienti VPS ti danno il potere di personalizzare queste impostazioni per la tua configurazione specifica.

Ecco le modifiche più impattanti per i database MySQL e MariaDB:

  • innodb_buffer_pool_size: Imposta al 70-80% della tua RAM disponibile. Per un VPS da 4GB, usa circa 3GB.
  • innodb_redo_log_capacity: Per MySQL 8.0.30+, inizia con 1-2GB (sostituisce la vecchia impostazione innodb_log_file_size).
  • max_connections: Imposta a 4x i tuoi core del CPU, minimo 100. La maggior parte dei piccoli siti necessita solo di 20-50.
  • query_cache_size: 128M-256M per MySQL 5.7/MariaDB (MySQL 8.0 ha rimosso completamente la cache delle query).

Usa MySQL Tuner o PGTune per ottenere raccomandazioni personalizzate basate sui tuoi effettivi modelli di utilizzo. Questi strumenti analizzano la tua configurazione attuale e suggeriscono valori ottimali.

Consiglio pro: MySQL 8.0.30+ ti permette di ridimensionare i redo logs senza riavviare:

SET GLOBAL innodb_redo_log_capacity = 2147483648

Fai sempre il backup del tuo database prima di apportare modifiche alla configurazione! Testa in un ambiente di staging e poi durante i periodi di basso traffico.

6. Scegli il Motore di Archiviazione Giusto

Pensa ai motori di archiviazione come a diversi sistemi di archiviazione per i tuoi dati. Devi organizzare i dati diversamente per lavorare con il motore di archiviazione che utilizzi.

La maggior parte delle applicazioni moderne utilizza InnoDB (il predefinito di MySQL), ma ci sono casi specifici in cui altri motori sono più adatti su un VPS.

  • InnoDB (consigliato per la maggior parte dei siti): Perfetto per siti di e-commerce, blog e applicazioni con aggiornamenti frequenti. Supporta transazioni, chiavi esterne e recupero da crash. La controindicazione è un utilizzo leggermente maggiore della memoria, ma su un VPS con risorse dedicate, questo generalmente non rappresenta un problema.
  • MyISAM (da usare con parsimonia): Più veloce per operazioni pesanti di lettura e usa meno memoria, ma manca di supporto per il recupero da crash e transazioni. Consideralo solo per tabelle che cambiano raramente, come tabelle di ricerca o archivi.
  • Memory (solo casi speciali): Memorizza i dati in RAM per un accesso fulmineo ma perde tutto quando il server si riavvia. È perfetto per dati temporanei o memorizzazione di sessioni su un VPS dove controlli l’ambiente.

Per controllare quali motori di archiviazione stanno utilizzando le tue tabelle, esegui:

SHOW TABLE STATUS;

Nella tua console MySQL, puoi convertire le tabelle con:

ALTER TABLE your_table ENGINE = InnoDB;

Il vantaggio VPS: A differenza dell’hosting condiviso, hai il pieno controllo sulle opzioni del motore di archiviazione e puoi anche scegliere di eseguire più motori contemporaneamente senza restrizioni. Ovviamente, ciò significa che devi fare attenzione a ciò che scegli fin dall’inizio per evitare migrazioni successive.

7. Monitora e Testa Continuamente

L’ottimizzazione del database non è un’attività del tipo “imposta e dimentica”. Il tuo sito cresce, i modelli di traffico cambiano e ciò che funzionava il mese scorso potrebbe non essere ottimale oggi.

La buona notizia è che gli ambienti VPS rendono il monitoraggio diretto poiché hai pieno accesso alle risorse di sistema e ai log dei database.

Ecco alcuni strumenti di monitoraggio essenziali:

  • htop o top: Monitora l’uso di CPU e memoria in tempo reale.
  • Comando iostat: Verifica le prestazioni di I/O del disco (installa con: apt-get install sysstat).
  • Lista dei Processi MySQL: Esegui SHOW PROCESSLIST; per vedere le query attive.
  • Registro delle Query Lente: Attiva questa opzione per rilevare le query che impiegano più di 2 secondi.

Configuri un controllo settimanale utilizzando strumenti come GTmetrix o Google PageSpeed Insights, concentrando l’attenzione in particolare sulle pagine che gravano pesantemente sul tuo database — pagine di prodotti, risultati di ricerca o archivi del blog.

Valutazione dei Core Web Vitals di Google PageSpeed Insights che mostra uno stato di fallimento con metriche che includono LCP a 4.5s, INP a 360ms, CLS a 0, FCP a 4.4s e TTFB a 0.7s.

Concentrati particolarmente sul tuo Time to First Byte (TTFB), poiché spesso è qui che si possono individuare problemi di prestazione del database. Nello screenshot sopra, puoi vedere che il TTFB è di 0,7 secondi.

TTFB

TTFB è l’abbreviazione di Time To First Byte. Questa misura indica il tempo di attesa di un browser prima di ricevere il primo byte di dati da un server.

Leggi di più

Migliorare il TTFB migliora anche il tuo punteggio di Core Web Vitals, che è uno dei segnali di classificazione di Google.

Segnali d’allarme da osservare:

  • TTFB costantemente superiore a 1 secondo
  • Uso della memoria sopra l’80% durante il traffico normale
  • Log delle query lente che mostrano le stesse query ripetutamente
  • Connessioni al database al massimo durante i picchi di traffico

Quando noti dei problemi, non allarmarti e non presupporre subito di aver bisogno di un upgrade VPS. Solitamente, una delle ottimizzazioni che abbiamo trattato ha solo bisogno di qualche aggiustamento.

Quando Dovresti Effettivamente Aggiornare Il Tuo VPS?

Nella nostra analogia della stanza di deposito, ricorderai che abbiamo ottimizzato (eliminato i rifiuti) per adattarci alla stessa stanza.

Ma, se manchi di spazio anche dopo l’ottimizzazione, hai superato la capacità della stanza ed è ora di acquistarne una più grande.

Questo vale anche per un upgrade di VPS. Se hai effettuato tutte le ottimizzazioni e non noti ancora molta differenza nelle prestazioni, potresti aver bisogno di un VPS più grande.

Ecco alcuni segnali chiari che ti diranno se l’Hosting VPS è il collo di bottiglia:

  • Utilizzo della CPU costantemente sopra l’80% durante il traffico normale.
  • Utilizzo della RAM supera regolarmente l’85%.
  • Le query del database sono ottimizzate ma ancora lente a causa dei limiti hardware.
  • I tempi di caricamento del sito superano ancora i 3 secondi dopo l’ottimizzazione.

Cosa aggiornare per primo:

  1. RAM: Solitamente il maggiore incremento di prestazioni per siti che utilizzano intensamente il database.
  2. CPU: Se stai effettuando molti calcoli complessi o elaborazioni.
  3. Archiviazione: Passa a SSD NVMe se stai ancora utilizzando HDD tradizionali.

Ricorda, il tempo di caricamento della pagina consigliato per tutti i siti web è inferiore a 3 secondi. Cerca di ridurlo il più possibile e sei a posto!

Il Tuo Percorso Di Performance Del Database

Ora, ho una buona notizia e una non così buona.

La buona notizia è che hai un database completamente ottimizzato che funziona efficientemente sul tuo VPS e serve il tuo sito web a velocità fulminee.

La notizia non proprio buona è che non è finita. Proprio come qualsiasi altro compito di manutenzione, i database necessitano di ottimizzazione regolare.

Ma non stai più navigando alla cieca. Sai cosa cercare e come risolverlo.

Esistono molti strumenti (come WP Optimize e ottimizzazione del database di LiteSpeed Cache) che ti aiutano a gestire la maggior parte delle attività di manutenzione del database con pochi clic se stai utilizzando WordPress.

Se l’aggiornamento è l’unica opzione rimasta, prova i piani VPS di DreamHost e sperimenta l’aumento di velocità quasi istantaneo che il tuo sito otterrà con la nostra hardware di altissima qualità.

VPS Hosting
Hosting VPS

Quando Ti Aspetti Prestazioni, Scegli DreamHost VPS

Grande o piccolo, sito web o applicazione – abbiamo una configurazione VPS per te.

Vedi Altro