Ritorno

MariaDB 11.8: cosa cambia realmente

MariaDB 11.8: cosa cambia realmente

MariaDB 11.8 arriva con importanti miglioramenti di prestazioni, ottimizzazione e compatibilità, oltre a nuove funzionalità SQL e cambiamenti interni che è utile conoscere.

La nuova versione incorpora importanti miglioramenti di prestazioni, ottimizzazione, compatibilità e nuove funzionalità SQL. E anche se per la maggior parte dei siti web moderni non rappresenterà alcun problema, ci sono alcuni cambiamenti che è utile rivedere se lavori con sviluppi personalizzati o applicazioni vecchie.

Specialmente se il tuo progetto dipende molto da query SQL avanzate, collations specifiche, procedure memorizzate o logica ereditata.

La buona notizia è che, nella maggior parte dei casi, non dovrai toccare nulla.

La meno buona: se hai codice molto vecchio o molto ottimizzato «a mano», vale la pena fare alcune verifiche.

A chi può influire questo aggiornamento di MariaDB?

Se utilizzi un WordPress aggiornato insieme a plugin e temi abituali, puoi stare abbastanza tranquillo/a.

È normale che tutto continui a funzionare esattamente allo stesso modo dopo l’aggiornamento.

I casi in cui consigliamo di rivedere il comportamento sono:

  • applicazioni vecchie o senza manutenzione
  • sviluppi su misura
  • integrazioni dirette con MariaDB
  • query SQL complesse
  • configurazioni vecchie di charset o collation
  • trigger e procedure memorizzate
  • sistemi con replicazione o integrazioni esterne

In altre parole: quanto più personalizzato è il progetto, tanto più è consigliabile validare alcuni punti.

Il cambiamento più importante: utf8mb4 diventa il charset predefinito ⚠️

Uno dei cambiamenti più rilevanti di MariaDB 11 è che il charset predefinito non sarà più latin1 ma diventerà utf8mb4.

E sì: questo importa più di quanto sembri.

Perché può influire?

Perché molte applicazioni vecchie non hanno mai definito esplicitamente il charset delle loro tabelle o colonne.

Semplicemente, assumevano il valore predefinito del server.

Con MariaDB 11 questo cambia.

Cosa può iniziare a comportarsi diversamente?

Principalmente:

  • confronti di testo
  • ricerche
  • ordinamenti (ORDER BY)
  • raggruppamenti (GROUP BY)
  • uguaglianza tra stringhe
  • trattamento di caratteri speciali o emoji

In alcuni progetti questo non avrà alcun impatto.

In altri, specialmente applicazioni vecchie o multilingua, può provocare differenze visibili.

Allora, cosa conviene rivedere?

Specialmente:

  • tabelle create anni fa
  • colonne senza charset esplicito
  • applicazioni che mescolano diverse collations
  • logica dipendente dall’ordine esatto dei risultati

Se vuoi mantenere un comportamento specifico, è consigliabile definire esplicitamente charset e collation in tabelle e colonne.

Cambia anche la collation Unicode predefinita

MariaDB 11.8 utilizza ora uca1400_ai_ci come collation Unicode predefinita.

Tradotto nel mondo reale: alcuni confronti e ordinamenti di testo possono comportarsi in modo leggermente diverso.

Dove si nota di solito?

Soprattutto in:

  • applicazioni multilingua
  • ricerche interne
  • filtri testuali
  • sistemi con ordinamenti complessi
  • confronti tra caratteri Unicode

Ad esempio, stringhe che prima si consideravano «uguali» potrebbero non esserlo più, o viceversa.

Non è qualcosa di drammatico, ma è consigliabile rivedere se la tua applicazione dipende molto da ricerche o confronti testuali.

Le query possono cambiare comportamento (anche se funzionano meglio)

MariaDB 11 incorpora molti miglioramenti nell’ottimizzatore SQL.

E questo, in generale, è una buona notizia.

Molte query vengono eseguite in modo più efficiente grazie a nuovi criteri di ottimizzazione e indici più intelligenti.

Il problema è che, in alcuni casi, il piano di esecuzione può cambiare rispetto alle versioni precedenti.

Che tipo di query conviene rivedere?

Specialmente:

  • UPDATE e DELETE con subquery
  • query con:
    • DATE()
    • YEAR()
    • SUBSTR()
    • UCASE()
  • tabelle partizionate
  • colonne virtuali
  • query molto ottimizzate manualmente

MariaDB ora può utilizzare indici in situazioni in cui prima non poteva.

Normalmente questo migliora le prestazioni.

Ma se la tua applicazione dipendeva da un comportamento molto specifico dell’ottimizzatore, conviene validarlo.

La raccomandazione più sensata

Rivedere query critiche utilizzando:

EXPLAIN

soprattutto se il progetto ha molta carica o logica SQL avanzata.

I trigger e le procedure memorizzate ora sono più rigidi

Un altro punto importante: MariaDB 11 inasprisce alcune validazioni interne relative a routine, trigger e funzioni memorizzate.

Cosa significa questo?

Che certe procedure vecchie, SQL dinamico o sintassi poco standard potrebbero iniziare a dare problemi al ricrearsi o validarsi.

Inoltre, i trigger UPDATE ora possono eseguirsi solo quando cambiano determinate colonne.

Questo apre nuove possibilità, ma può anche cambiare comportamenti in alcuni sistemi ereditati.

Dovresti preoccuparti?

Solo se utilizzi:

  • procedure memorizzate complesse
  • trigger personalizzati
  • SQL dinamico
  • logica vecchia mantenuta da anni

In applicazioni moderne o CMS abituali, questo raramente rappresenta un problema.

Alcune variabili vecchie scompaiono o diventano deprecate

Come accade in quasi ogni salto importante di versione, MariaDB 11 elimina parte della compatibilità ereditata.

Alcune variabili già eliminate

  • old_alter_table
  • wsrep_load_data_splitting
  • variabili vecchie di OQGraph

Variabili deprecate

  • tx_isolation
  • spider_casual_read

Cosa dovresti rivedere

Soprattutto:

  • script di automazione
  • configurazioni personalizzate
  • strumenti interni
  • deploy vecchi

Molte volte il problema non è nell’applicazione web, ma in script dimenticati che continuano a utilizzare sintassi vecchia.

MariaDB 11 porta anche miglioramenti interessanti

Non tutto riguarda compatibilità e revisioni 😄

La nuova versione aggiunge anche funzionalità piuttosto potenti.

Nuove funzioni UUID

Ora puoi usare:

UUID_v4()
UUID_v7()

direttamente da MariaDB.

Miglioramenti in JSON

MariaDB continua a migliorare notevolmente il supporto JSON con funzioni come:

  • JSON_SCHEMA_VALID()
  • JSON_ARRAY_INTERSECT()
  • JSON_OBJECT_FILTER_KEYS()

molto utili in applicazioni moderne e API.

Funzioni vettoriali e ricerca semantica

Sì: MariaDB inizia anche a entrare nel mondo IA.

La nuova versione incorpora:

  • tipi vettoriali
  • indici vettoriali
  • funzioni di similarità

orientate a ricerche semantiche e applicazioni moderne legate a embeddings o IA.

Allora… dovresti fare qualcosa?

Per la maggior parte dei progetti: probabilmente no.

Se utilizzi applicazioni moderne, CMS abituali o software aggiornato, è normale che la migrazione sia completamente trasparente.

Dove sì consigliamo di rivedere è in progetti:

  • vecchi
  • molto personalizzati
  • con SQL avanzato
  • con logica ereditata
  • con integrazioni dirette contro MariaDB

In questi casi, vale la pena validare:

  • collations
  • query critiche
  • trigger
  • procedure memorizzate
  • configurazioni vecchie

Se vuoi andare sul sicuro, una buona pratica è testare preventivamente l’applicazione in ambienti di staging prima dell’aggiornamento definitivo, specialmente in progetti critici o con molto sviluppo su misura.

Abbiamo soluzioni per tutti