MySQL o PostgreSQL - Quale scegliere nel 2026?

Confronto tecnico fra i due principali database a codice aperto: MySQL e PostgreSQL. Prestazioni, ecosistema, tipi di dati, casi d'uso e tabella riassuntiva.

Presentazione

MySQL e PostgreSQL dominano da vent'anni il mercato dei database relazionali a codice aperto. Insieme rappresentano oltre il 70 % delle basi installate nel mondo web e SaaS nel 2026. Sono così diffusi che molti sviluppatori scelgono per abitudine: spesso MySQL, perché WordPress e Laravel lo usano di serie, oppure PostgreSQL, perché Django e Rails spingono da quella parte. Questa scelta automatica non è sempre la migliore per il progetto.

La questione fra MySQL e PostgreSQL non è « quale sia meglio in assoluto »: entrambi sono maturi, veloci, affidabili e sviluppati attivamente. Le differenze vere stanno altrove: nella ricchezza dei tipi di dati (qui PostgreSQL vince nettamente), nella semplicità di gestione quotidiana (qui vince spesso MySQL), nelle prestazioni in lettura e scrittura (dipende dal carico), nell'ecosistema (strumenti, ORM, hosting) e nella cultura della squadra. Questa guida ti dà gli elementi oggettivi per decidere nel tuo caso.

MySQL: funzionamento ed ecosistema

MySQL nasce nel 1995 da MySQL AB, passa a Sun nel 2008 e a Oracle nel 2010. Oggi è il database a codice aperto più installato al mondo, in gran parte grazie alla combinazione LAMP (Linux, Apache, MySQL, PHP) che ha alimentato l'esplosione del web. WordPress, Drupal, Joomla, Magento e Laravel lo usano di serie. La versione 8.0 (e la 8.4 LTS uscita nel 2024) porta migliorie importanti: funzioni finestra, JSON_TABLE, CTE ricorsive e un motore InnoDB rifatto.

  • Motore di archiviazione: InnoDB di serie (transazionale ACID, blocco per riga). MyISAM esiste ancora per usi molto particolari, ma non regge le transazioni.
  • Punti di forza: amministrazione estremamente semplice, ecosistema sterminato (phpMyAdmin, MySQL Workbench), replica primaria-secondaria molto matura, prestazioni pure in lettura eccellenti.
  • Punti deboli: meno ricco di PostgreSQL sul fronte dei tipi di dati (niente array nativi, niente tipi geometrici di base), motore di ottimizzazione un po' meno raffinato, gestione delle transazioni più permissiva.
  • Disponibilità: presente di serie sul 100 % delle offerte condivise e dei VPS sul mercato.

PostgreSQL: punti di forza e tratti distintivi

PostgreSQL (spesso abbreviato in « Postgres ») esiste dal 1986, quando era il progetto accademico POSTGRES a Berkeley, ed è diventato a codice aperto con licenza permissiva nel 1996. Lo sviluppo è guidato da una comunità decentrata: nessuna azienda lo controlla. Nel 2026 PostgreSQL è diventato il database « predefinito » delle nuove applicazioni SaaS, dei progetti Django, Rails e Node.js e dei prodotti a forte contenuto di dati (analitica, apprendimento automatico, geospaziale).

  • Tipi di dati ricchi: JSON e JSONB nativi con indicizzazione GIN, array, intervalli, UUID, tipi geometrici (PostGIS), tipi personalizzati.
  • Punti di forza: estremamente rigoroso su ACID e sull'integrità referenziale, ottimizzatore delle interrogazioni molto raffinato, funzioni avanzate (CTE ricorsive, funzioni finestra, ricerca a testo pieno nativa, indici parziali), grande estensibilità (PostGIS, pg_trgm, TimescaleDB, pgvector per l'intelligenza artificiale).
  • Punti deboli: curva di apprendimento un po' più ripida, configurazione più densa (postgresql.conf conta circa 300 parametri), replica storicamente più complicata (ma con grandi progressi di recente).
  • Disponibilità: presente su tutti i VPS moderni. Sull'hosting condiviso è meno scontato di MySQL: verifica prima.

Tabella di confronto delle funzioni

Confronto diretto sui criteri che contano nel 2026:

Quando scegliere MySQL?

  • WordPress, WooCommerce, Drupal, Magento: MySQL è la scelta di serie, con un ecosistema ottimizzato.
  • Laravel con Eloquent: Laravel funziona benissimo anche con PostgreSQL, ma la comunità Laravel resta in maggioranza su MySQL.
  • Carichi semplici e a forte lettura: enormi quantità di ricerche per chiave primaria (cache, sessioni).
  • Squadra poco esperta di database: MySQL perdona di più e si amministra più facilmente.
  • Hosting condiviso: MySQL c'è dappertutto, PostgreSQL a volte manca.

Quando scegliere PostgreSQL?

  • Applicazione SaaS moderna: Django, Rails, Next.js con Prisma, FastAPI — l'ecosistema spinge verso Postgres.
  • Dati semistrutturati (JSON): PostgreSQL con JSONB e indicizzazione GIN batte MySQL sulle interrogazioni JSON complesse.
  • Dati geografici: PostGIS è il riferimento mondiale, senza equivalenti dal lato MySQL.
  • Analisi leggera e rendicontazione: ottimizzatore e funzioni finestra più maturi.
  • Integrità dei dati non negoziabile: finanza, sanità, revisione contabile — Postgres è rigoroso su ACID.
  • Ricerca vettoriale e intelligenza artificiale: l'estensione pgvector conserva le rappresentazioni numeriche e permette ricerche semantiche.

E MariaDB, in tutto questo?

MariaDB è una derivazione di MySQL creata nel 2009 dagli sviluppatori originari di MySQL, dopo l'acquisto da parte di Oracle. MariaDB e MySQL restano largamente compatibili (stessi driver, sintassi SQL quasi identica), ma su alcuni punti hanno preso strade diverse: MariaDB aggiunge motori specializzati (ColumnStore per l'analitica, Spider per la frammentazione), funzioni JSON differenti e un comportamento di serie un po' più rigoroso. Sugli hosting condivisi francesi (OVH, o2switch, Infomaniak) al posto di MySQL è spesso installato MariaDB, e nel 95 % dei casi questo non cambia nulla nel codice della tua applicazione.

MySQL o PostgreSQL - Confronto delle funzioni

MySQL o PostgreSQL - Confronto delle funzioni
Criterio MySQL PostgreSQL
Licenza GPL (Oracle) PostgreSQL License (permissiva, tipo BSD)
ACID Sì (InnoDB) Sì, rigoroso di serie
JSON / JSONB JSON nativo, indicizzabile JSONB con GIN, il riferimento del settore
Ricerca a testo pieno FULLTEXT su InnoDB (discreta) Tsvector con indicizzazione GIN (molto completa)
Replica Primaria-secondaria molto matura, semplice Streaming e replica logica (potente)
Prestazioni in lettura Eccellenti, soprattutto sulle ricerche semplici Eccellenti, con un ottimizzatore più raffinato
Prestazioni in scrittura Molto buone (InnoDB blocca per riga) Molto buone, con un MVCC efficiente
Estensibilità Limitata (moduli del motore) Estensioni (PostGIS, pgvector, TimescaleDB)
Caso d'uso tipico WordPress, Magento, Laravel, sessioni SaaS, Django/Rails, dati geografici, analitica, IA
Comunità Enorme, sostenuta da Oracle Enorme, comunitaria e indipendente

Domande frequenti

Dipende dal carico. Su enormi quantità di ricerche semplici (sessioni, cache) MySQL con InnoDB è molto efficace. Su interrogazioni complesse (molte giunzioni, aggregazioni, funzioni finestra) PostgreSQL spesso batte MySQL, grazie all'ottimizzatore più raffinato. Sotto qualche milione di righe la differenza è raramente drammatica.

Ufficialmente no. WordPress supporta di suo soltanto MySQL e MariaDB. Esistono progetti non ufficiali (HyperDB, estensioni di adattamento), ma sono poco curati. Per WordPress resta su MySQL o MariaDB.

Per un SaaS moderno costruito su Django, Rails, Next.js o FastAPI, la comunità consiglia in larghissima maggioranza PostgreSQL: ricchezza dei tipi, JSONB per le strutture semistrutturate, ottima offerta gestita (Neon, Supabase, RDS, VPS By-Hoster).

Sì, per la maggior parte dei progetti. MariaDB è compatibile al 100 % con MySQL per il codice standard di WordPress, Laravel o Symfony. In più porta qualche funzione aggiuntiva (motori specializzati, JSON, sicurezza). Molti hoster hanno sostituito MySQL con MariaDB senza che i clienti se ne accorgessero.

In tre passaggi: 1) esportare la struttura con mysqldump --no-data e adattare i tipi (TINYINT, ENUM e simili); 2) spostare i dati con pgloader, che automatizza gran parte del lavoro; 3) adattare il codice dell'applicazione: sintassi SQL specifica (LIMIT contro LIMIT/OFFSET, AUTOINCREMENT contro SERIAL, funzioni sulle date). Metti in conto da 1 a 5 giorni, a seconda della mole.

Un po' di più, sì. PostgreSQL usa un processo per ogni connessione (più costoso dei thread di MySQL), il che spinge a usare un gestore di connessioni riutilizzabili come PgBouncer. Nella pratica, su un VPS da 2 GB girano bene entrambi, con qualche ritocco a shared_buffers (Postgres) o a innodb_buffer_pool_size (MySQL).