23 Novembre 2023

MySQL 5.7 raggiunge la End Of Life, aggiornare a MySQL 8 o rimanere con MySQL 5.7 ? MySQL EOL.

Alcuni pro e contro del passaggio a MySQL 8, come ad esempio la rimozione della Query Cache di MySQL

MySQL-5.7-EOL-Upgrade-a-MySQL-8

Quando si tratta di scegliere un database per far funzionare la propria applicazione, MySQL rimane una delle scelte più popolari. Come database open source più popolare nell’indice DB-Engines per più di un decennio, MySQL fornisce una piattaforma affidabile. Tuttavia, lo scorso 31 ottobre 2023, la versione 5.7 ha raggiunto lo stato di End of Life (EOL).

MySQL 5.7 EOL - End Of Life

L’End of Life (EoL) di un DBMS MySQL si riferisce al termine del supporto ufficiale fornito dal produttore per una specifica versione del database. Questo significa che non verranno più rilasciati aggiornamenti di sicurezza, patch di bug o miglioramenti, rendendo il sistema più vulnerabile a rischi di sicurezza e meno compatibile con le nuove tecnologie. Per le aziende, l’EoL comporta la necessità di aggiornare a versioni più recenti di MySQL per garantire la sicurezza, l’efficienza e la compatibilità del loro database. La mancata migrazione può esporre i dati aziendali a rischi di sicurezza, perdita di dati, e problemi di performance. Inoltre, le nuove funzionalità e ottimizzazioni presenti nelle versioni aggiornate di MySQL possono essere cruciali per migliorare le performance complessive e l’efficienza dei sistemi che utilizzano il database.

Secondo i dati telemetrici dello strumento di gestione di database open source PMM, più della metà degli utenti di MySQL attualmente utilizza la versione 5.7. Questo significa che ci sono molte istanze che dovranno essere aggiornate o rischiare potenziali problemi.

Tuttavia, molti sviluppatori non sono propensi a modificare le loro installazioni di database una volta che funzionano bene. Mentre altri elementi dello stack applicativo ricevono aggiornamenti e modifiche regolari, i database richiedono competenze specifiche e una comprensione approfondita per sfruttarli al meglio in aree come query, indici e performance. Un aggiornamento completo come questo può ispirare sentimenti di trepidazione, ma pianificare i prossimi passi è essenziale prima della data di EOL.

Cosa comporta questo aggiornamento?

Prima di tutto, è importante guardare a cosa offre la migrazione per migliorare l’esecuzione della tua applicazione e aumentare la tua produttività. Per iniziare, MySQL 8.0 supporta una serie di aggiornamenti a SQL (Structured Query Language) che rendono più facile scrivere e supportare query. Le query efficienti sono al centro di come utilizzi i dati nella tua applicazione e nella tua attività, quindi qualsiasi cosa che possa migliorare questo aspetto dovrebbe avere un impatto diretto sul tuo lavoro.

Un buon esempio di ciò sono le subquery. Crearle può essere difficile se non si lavora quotidianamente con SQL, quindi sfruttare opzioni come join derivati laterali e Common Table Expressions (CTE) può aiutare. Le CTE aiutano a comporre e mantenere query complesse suddividendole in unità più piccole che puoi riutilizzare nel tempo. Mantenendo le cose semplici e leggibili, questo aiuta a costruire le query di cui hai bisogno nella tua applicazione. C’è anche una nuova clausola di intersezione per aiutare con i set, aiutandoti a trovare i punti dati comuni in due o più set di dati senza dover scrivere query molto complesse.

MySQL 8.0 include molti nuovi comandi che possono migliorare significativamente la tua produttività. Un esempio è EXPLAIN ANALYZE, che può aiutarti nel tuning delle query. EXPLAIN fornisce una stima di come dovrebbe comportarsi la tua query, basata sull’analisi del server. Tuttavia, si tratta solo di una stima e potrebbe essere errata. Utilizzare ANALYZE insieme a EXPLAIN fa eseguire la query, così puoi ottenere una visione più precisa di come quella query si comporta nella realtà. Questo rende molto più facile trovare miglioramenti potenziali in quella query, piuttosto che indovinare. Inoltre, INDEX INVISIBILE ti aiuta a testare l’efficienza di un indice senza rischiare una ricostruzione che può portare a seri problemi.

Oltre a questi cambiamenti di sintassi e comandi, MySQL 8.0 può ora supportare più caratteri internazionali poiché il set di caratteri predefinito è stato aggiornato a UTF8MB4, che fornisce supporto alla versione 9.0 di Unicode. Questo è particolarmente utile per le aziende con operazioni in tutto il mondo.

Abbandono della Query Cache di MySQL

La Query Cache di MySQL è stata un tempo un elemento chiave per massimizzare le prestazioni dei database. Progettata in un’epoca in cui i sistemi informatici si basavano su architetture a singolo core e singolo server, questa funzionalità era ottimizzata per tali ambienti, dove era in grado di fornire risultati rapidi e efficienti. La Query Cache operava memorizzando i risultati di query frequenti, permettendo al database di recuperare questi dati velocemente, senza la necessità di ricalcolare ogni volta la stessa query.

mysql-query-cache-high-level

Tuttavia, l’evoluzione tecnologica ha portato cambiamenti significativi nell’architettura dei sistemi informatici. Con l’emergere e la popolarità di processori multicore e architetture multithread, il panorama tecnologico ha subito una trasformazione radicale. Questi cambiamenti hanno introdotto nuove sfide nella gestione della Query Cache di MySQL. La necessità di sincronizzare la cache su più core e di gestire l’accesso concorrente da diversi thread ha complicato notevolmente la sua implementazione. Questa crescente complessità ha portato a un incremento di problemi di sincronizzazione e gestione della cache, con il risultato di rallentare le operazioni del database piuttosto che velocizzarle.

Di fronte a questi ostacoli, gli sviluppatori di MySQL hanno preso la decisione di deprecare la Query Cache nella versione 5.7 e, successivamente, di eliminarla completamente nella versione 8. Questa scelta è stata influenzata anche dal raggiungimento della End Of Life di MySQL 5.7 nell’ottobre del 2023, il che significava che le versioni successive di MySQL non avrebbero più incluso questa caratteristica. Sebbene la Query Cache sia stata rimossa, il suo concetto rimane prezioso, soprattutto in scenari dove le richieste di lettura dominano sulle operazioni di scrittura. In tali contesti, la capacità di memorizzare e recuperare rapidamente i risultati delle query può ancora offrire significativi vantaggi in termini di efficienza e prestazioni.

L’eliminazione della Query Cache in MySQL 8 rappresenta un cambiamento sostanziale, con potenziali implicazioni critiche, specialmente per siti web con un alto volume di letture, come i blog WordPress o piattaforme simili. Questi siti spesso si affidano alla rapidità delle operazioni di lettura per fornire un’esperienza utente fluida e reattiva. La Query Cache, in questi contesti, svolgeva un ruolo vitale nel ridurre i tempi di risposta del database, memorizzando i risultati delle query più frequenti e riducendo così il carico sul database stesso.

La rimozione di questa funzionalità in MySQL 8 può quindi portare a significativi problemi di performance per tali siti. Senza la Query Cache, ogni richiesta richiederà il processamento completo della query sul database, potenzialmente aumentando i tempi di risposta e il carico sul server. Questo scenario pone una sfida importante per gli amministratori di sistemi e gli sviluppatori di siti web, che devono valutare attentamente i benefici e i rischi associati all’aggiornamento a MySQL 8.

In alcuni casi, potrebbe essere consigliabile rimanere con MySQL 5.7 per mantenere i vantaggi della Query Cache, nonostante il raggiungimento della End Of Life di questa versione. Tuttavia, questa scelta può comportare rischi di sicurezza e mancanza di supporto, rendendola una soluzione temporanea e non ideale a lungo termine.

query-cache-social

Un’alternativa interessante è rappresentata dalla migrazione verso MariaDB. A differenza di MySQL e Percona Server, MariaDB ha scelto di mantenere la Query Cache, preservando quindi i suoi vantaggi (e i suoi svantaggi) nei contesti in cui questa funzionalità è particolarmente utile. Questa scelta fa di MariaDB un’opzione attraente per quei siti che dipendono fortemente dalle operazioni di lettura e che desiderano preservare le performance offerte dalla Query Cache.

Tuttavia, scegliere MariaDB per preservare i vantaggi della Query Cache comporta anche l’accettazione di un compromesso in termini di performance complessive del database management system (DBMS). È importante sottolineare che, stando alle valutazioni correnti, MySQL 8 presenta performance significativamente superiori rispetto a MariaDB, una differenza che non può essere trascurata nella scelta del DBMS.

Le stime indicano che le performance di MySQL 8 possono essere approssimativamente il doppio rispetto a quelle di MariaDB. Questa differenza è attribuibile a vari fattori, tra cui ottimizzazioni più avanzate in MySQL 8, miglioramenti nell’uso dell’hardware moderno, come i processori multicore, e l’implementazione di nuove funzionalità che aumentano l’efficienza generale del sistema.

Ad esempio, MySQL 8 ha introdotto miglioramenti nell’ottimizzazione delle query, nella gestione della memoria e nelle operazioni I/O, contribuendo così a un netto aumento delle prestazioni. Inoltre, MySQL 8 supporta funzionalità avanzate come l’atomic DDL (Data Definition Language), che migliora la gestione e la sicurezza delle operazioni di definizione dei dati.

Pianificare l’aggiornamento

Migrare da MySQL 5.7 a 8.0 è una mossa diretta, ma ci sono alcuni cambiamenti specifici e significativi che possono influenzare le tue applicazioni. Controllare la tua applicazione e il tuo database in anticipo segnalerà se questo processo sarà semplice o se dovrai effettuare alcune modifiche più complesse come parte del processo di migrazione.

L’utilità util.checkForServerUpgrade() di MySQL Shell può aiutare in questo. Esegue 21 diversi test per controllare potenziali problemi che potrebbero influenzare la tua migrazione. I controlli includono la ricerca di tabelle con nomi che entrano in conflitto con nuove parole chiave riservate e per qualsiasi variabile di sistema che sia stata rimossa o cambiata in nuovi valori predefiniti in MySQL 8.0. La lista completa delle variabili aggiunte, deprecate e rimosse è disponibile qui. Oltre a questi potenziali problemi, questa utilità cerca altri problemi come tabelle partizionate che utilizzano motori con partizionamento non nativo, riferimenti circolari nei percorsi dei file di dati dello spazio tabellare e qualsiasi utilizzo di funzioni che sono state rimosse in MySQL 8.0.

util.checkForServerUpgrade()

Una volta eseguita questa utilità e scoperto quanto lavoro è coinvolto nel passaggio, ora hai una scelta. Dovresti effettuare quella migrazione diretta dal 5.7 all’8.0, o dovresti esplorare altre opzioni? Se devi mettere un lavoro significativo per preparare la tua applicazione e il tuo database per l’aggiornamento, allora dovresti mettere quello sforzo nell’emigrare verso un’altra piattaforma o un database diverso invece? Allo stesso modo, potresti decidere di esaminare un diverso modo di gestire la tua infrastruttura in futuro – per esempio, potresti attualmente avere la tua applicazione ospitata on-premise, ma potresti spostare quei server nel cloud o in un servizio ospitato invece in modo da non doverti preoccupare di gestire l’infrastruttura in futuro?

Ognuna di queste opzioni avrà vantaggi e potenziali svantaggi, quindi è importante valutarle nel contesto. Ad esempio, i servizi basati su cloud possono rendere molto più facile far funzionare le cose, ma devi anche spendere di più per i costi di gestione di quei servizi. Inoltre, dovresti controllare il processo di inserimento e estrazione dei dati da qualsiasi servizio cloud che potresti utilizzare. Questo aiuta ad evitare grossi costi di uscita dei dati se mai dovessi cambiare il tuo approccio. Infine, dovresti anche esaminare se il servizio che potresti utilizzare è open source o meno. Mentre molti fornitori affermano di essere “compatibili” con opzioni di database open source come MySQL, potrebbero offrire add-on specifici per il loro servizio o versione.

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

Managed Server S.r.l. è un player italiano di riferimento nel fornire soluzioni avanzate di sistemistica GNU/Linux orientate all’alta performance. Con un modello di sottoscrizione dai costi contenuti e prevedibili, ci assicuriamo che i nostri clienti abbiano accesso a tecnologie avanzate nel campo dell’hosting, server dedicati e servizi cloud. Oltre a questo, offriamo consulenza sistemistica su sistemi Linux e manutenzione specializzata in DBMS, IT Security, Cloud e molto altro. Ci distinguiamo per l’expertise in hosting di primari CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart e Magento, affiancato da un servizio di supporto e consulenza di alto livello adatto per la Pubblica Amministrazione, PMI, ed aziende di qualsiasi dimensione.

Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt. Oracle Corporation detiene i diritti su Oracle®, MySQL®, e MyRocks®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; REDIS® è un marchio registrato di Redis Labs Ltd. F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB. Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; OpenCart® è un marchio registrato di OpenCart Limited. Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®. Amazon Web Services, Inc. detiene i diritti su AWS®; Google LLC detiene i diritti su Google Cloud™ e Chrome™; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®. Apache® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group. CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V. Hetzner Online GmbH detiene i diritti su Hetzner®; OVHcloud è un marchio registrato di OVH Groupe SAS; cPanel®, L.L.C. detiene i diritti su cPanel®; Plesk® è un marchio registrato di Plesk International GmbH; Facebook, Inc. detiene i diritti su Facebook®. Questo sito non è affiliato, sponsorizzato o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello europeo da MANAGED SERVER SRL, Via Enzo Ferrari, 9, 62012 Civitanova Marche (MC), Italia.

SOLO UN ATTIMO !

Vorresti vedere come gira il tuo WooCommerce sui nostri sistemi senza dover migrare nulla ? 

Inserisci l'indirizzo del tuo sito WooCommerce e otterrai una dimostrazione navigabile, senza dover fare assolutamente nulla e completamente gratis.

No grazie, i miei clienti preferiscono il sito lento.
Torna in alto