MySQL è un sistema open source di gestione di database relazionali SQL sviluppato e supportato da Oracle.

Questa è la risposta breve, di una sola frase, alla domanda “cosa è MySQL”, ma scomponiamola in termini un po’ più comprensibili.

Un database è solo una raccolta strutturata di dati, organizzata al fine di un facile utilizzo e recupero dei dati stessi. Per un sito WordPress, quei “dati” sono cose come il testo degli articoli del vostro blog, informazioni per tutti gli utenti registrati sul vostro sito, dati a caricamento automatico, configurazioni di impostazioni importanti, ecc.

MySQL è solo un sistema popolare in grado di archiviare e gestire tali dati per voi ed è una soluzione di database popolare soprattutto per i siti WordPress.

Lettura suggerita: Come Risolvere l’Errore “MySQL Server Has Gone Away” in WordPress e Come Correggere l’Errore MySQL 1064.

Andiamo un po’ più a fondo.

Che Cos’è MySQL? Più in Dettaglio

MySQL è stato rilasciato nel lontano 1995. Da allora, ha subito un paio di cambiamenti nella proprietà/amministrazione, prima di finire alla Oracle Corporation nel 2010. Sebbene sia ora in carica Oracle, MySQL è ancora un software open source, il che significa che potete utilizzarlo e modificarlo liberamente.

Logo MySQL
Logo MySQL (origine immagine: MySQL/Oracle)

Il nome deriva da “My” – il nome della figlia del co-fondatore – con SQL – l’abbreviazione di Structured Query Language, che è un linguaggio di programmazione che consente di accedere e gestire i dati in un database relazionale.

Per capire come funziona MySQL, è importante apprendere due concetti collegati:

Database relazionali

Quando si tratta di archiviare dati in un database, esistono diversi possibili approcci.

MySQL opta per un approccio chiamato database relazionale.

Con un database relazionale, i vostri dati vengono suddivisi in più aree di archiviazione separate, chiamate tabelle, piuttosto che raggruppare tutto in un’unica grande unità di archiviazione.

Ad esempio, supponiamo che vogliate archiviare due tipi di informazioni:

  • Clienti – nome, indirizzo, dettagli, ecc.
  • Ordini – ad esempio quali prodotti sono stati acquistati, il prezzo, chi ha effettuato l’ordine, ecc.

Se cercaste di raggruppare tutti questi dati in un unico grande recipiente, avreste vari problemi, come:

  • Dati diversi – i dati che è necessario raccogliere per un ordine sono diversi da quelli per un cliente.
  • Dati duplicati – ogni cliente ha un nome e ogni ordine ha anche il nome di un cliente. Gestire i dati duplicati genera disordine.
  • Nessuna organizzazione – come si collegano in modo affidabile le informazioni sugli ordini alle informazioni sui clienti?

Per risolvere questi problemi, un database relazionale utilizzerebbe una tabella per i clienti e un’altra tabella per gli ordini.

Tuttavia, probabilmente vorresti anche poter dire “mostrami tutti gli ordini per John Doe”. È qui che entra in gioco la parte relazionale.

Utilizzando una cosa chiamata “chiave”, siete in grado di collegare i dati di queste due tabelle in modo da manipolare e combinare i dati in diverse tabelle in base alle necessità. È importante notare che una chiave non è il nome del cliente. È, invece, qualcosa di unico al 100%, come un ID numerico.

Se avete mai dato un’occhiata al database del vostro sito WordPress, avrete visto che utilizza questo modello relazionale, e tutti i vostri dati sono divisi in tabelle separate.

Di default, WordPress utilizza 12 tabelle separate, ma molti plugin di WordPress aggiungeranno anche proprie tabelle. Ad esempio, il database del sito WordPress mostrato di seguito ha 44 diverse tabelle!

Un esempio di tabelle in MySQL
Un esempio di tabelle in MySQL

Per concludere con il concetto di relazionale, parliamone specificamente per WordPress…

WordPress memorizza gli articoli del blog nella tabella wp_posts e gli utenti nella tabella wp_users. Tuttavia, dato che queste due tabelle sono collegate da una chiave, è possibile collegare ciascun account utente a tutti i post del blog scritti da ognuno.

Ecco come appare nel database.

Ad ogni post viene assegnato un post_author, che è un numero identificativo univoco (questa è la chiave):

Un esempio di tabelle in MySQL
Un esempio di tabelle in MySQL

Quindi, se volete vedere quale account utente corrisponde a quel numero, potete cercare l’ID nella tabella wp_users:

La tabella wp_users
La tabella wp_users

La chiave – il numero ID – è ciò che collega tutto. Ed è così che sono “correlati” tra loro, nonostante l’archiviazione dei dati avvenga in tabelle separate.

Modello Client-Server

Oltre ad essere un sistema di database relazionale, MySQL utilizza anche una cosa chiamata modello client-server.

Il server è il posto dove risiedono effettivamente i vostri dati. Per accedere a questi dati, tuttavia, è necessario richiederli. Ecco dove entra in gioco client.

Utilizzando SQL – il linguaggio di programmazione che abbiamo menzionato in precedenza – il client invia una richiesta al server del database per ricevere i dati di cui ha bisogno.

Ad esempio, se qualcuno visita un articolo del blog sul vostro sito, il sito WordPress invierà più richieste SQL al server del database per ottenere tutte le informazioni necessarie per consegnare l’articolo al browser di quel visitatore. Sarebbe:

  • Interroga la tabella wp_posts per avere il contenuto dell’articolo
  • Interroga la tabella wp_users avere informazioni per il box autore (utilizzando la chiave che vi abbiamo mostrato prima)
  • Ecc.

Se volete vedere esattamente quali tipi di richieste al database vengono fatte dal vostro sito WordPress, potete utilizzare un meraviglioso plugin gratuito chiamato Query Monitor, che mostra l’interazione esatta tra il vostro sito WordPress (il client) e il server del database:

Il plugin Query Monitor mostra le singole query SQL trasmesse al server MySQL
Il plugin Query Monitor mostra le singole query SQL trasmesse al server MySQL

Un’altra soluzione premium che potete usare è New Relic (licenza richiesta). Se il vostro sito WordPress non può accedere al server del database, si attiva il comune messaggio che indica un errore nello stabilire una connessione al database. In Kinsta, usiamo lo strumento integrato Kinsta APM per monitorare i vostri siti.

Kinsta Utilizza MariaDB, Non MySQL: Qual è la Differenza?

Qui da Kinsta, utilizziamo un database system chiamato MariaDB, non MySQL. Tuttavia, le stesse caratteristiche di MySQL si applicano anche a MariaDB.

In realtà, MariaDB è un fork di MySQL e lo sviluppatore principale di MariaDB è uno dei fondatori originali di MySQL. Un “fork” significa solo che gli sviluppatori di MariaDB hanno preso il codice MySQL originale open source come base e quindi si sono basati su quel codice per creare MariaDB.

Quindi, sebbene abbia un nome diverso, MariaDB è strettamente collegato a MySQL e offre la completa capacità di sostituzione “drop-in” (ovvero, è possibile passare senza problemi da MySQL a MariaDB senza dover prendere particolari precauzioni).

Tuttavia, anche se MariaDB offre piena interoperabilità con MySQL, offre anche prestazioni migliorate in alcune aree, che sono in linea con la nostra filosofia di utilizzare l’architettura più performante per dare potenza ai vostri siti WordPress.

Riepilogo: Cosa è MySQL?

MySQL è un sistema open source di gestione di database relazionali. Per i siti WordPress, ciò significa che vi aiuta a memorizzare tutti gli articoli del vostro blog, gli utenti, le informazioni sui plugin, ecc.

Dunque archivia tali informazioni in “tabelle” separate e le collega con “chiavi”, da cui l’aggettivo relazionale.

Quando il vostro sito WordPress deve accedere a tali informazioni, invia una richiesta al server del database MySQL utilizzando SQL (questo è il modello client-server).

Kinsta usa MariaDB, non MySQL. Tuttavia, MariaDB è un fork di MySQL di uno dei co-fondatori di MySQL e offre l’interoperabilità di sostituzione drop-in, nonché alcuni miglioramenti delle prestazioni. Pertanto, tutti i concetti chiave di questo articolo si applicano anche a MariaDB.

Se siete ospitati su Kinsta, offriamo sia accesso diretto al database, sia la possibilità di utilizzare strumenti di gestione del database come phpMyAdmin.