Bene, in questi giorni è stata annunciata la RC di MySQL 5.7.

 

Cos’è una RC ?

Il termine RC è l’acronimo delle parole Release Candidate, ovvero una versione del programma che è quasi pronto per essere rilasciato per lavorare nell’ambiente di produzione a cui normalmente si correggono i bachi ma non si implementano nuove funzionalità. La prima versione disponibile agli sviluppatori di MySQL 5.7 Beta è la 5.7.1 datata 23-04-2013, quindi sono almeno 2 anni che gli ingegneri Oracle ci stanno lavorando e visti i numerosi articoli che ho letto , il lavoro c’è stato e anche i risultati!

 

C’è stato un momento, tra la versione 5.5 e 5.6 nel quale, a parere personale, la parte tecnica non mi sembrava così attiva. Inoltre anche la release che ne è uscita non mi era sembrata cosi piena di novità.

 

Vediamo, invece, insieme la versione 5.7 e i punti che, per me, sono tra i più importanti e “golosi”:

  1. Molte operazioni DDL (cambio di struttura delle tabelle e definizione dei dati) sono INPLACE, ovvero mentre prima queste operazioni bloccavano parte del database e costringevano l’engine alla copia dei dati per modificarli, ora la modifica viene fatta direttamente sulla tabella coinvolta.
  2. Creazione degli indici alle tabelle in modalità FAST ovvero con velocità diminuita anche di 10 volte. Questi sono enormi benifici per chi deve fare manutenzione ad un database che non può essere messo offline.
  3. Fulltext search e Spatial data types sono stati portati anche su InnoDB, questo era una delle poche cose che non permetteva di pensare di non usare MyIsam per alcune funzionalità.
    Tra l’altro per la parte Fulltext search è stato implementato anche un sistema di vocabolario per le lingue orientali, ma utilizzabile anche per altre, che non erano ben supportate prima, dando dei risultati non ottimali. Unico neo, a mio modo di vedere, di questa implementazione, è che i 2 sistemi di Fulltext search uno su MyIsam e l’altro su InnoDB danno risultati diversi sulla stesso set di dati in ricerca.
  4. Diverse ottimizzazioni per cercare di non usare LOCK globali per singole operazioni e quindi maggiore velocità e scalabilità su grosse quantità di operazioni. Un LOCK è un blocco di codice che viene eseguito nel programma solamente da un processo alla volta, per non rovinare dati e strutture. Quindi non usandoli o creandone di specifici, e non globali, si parallelizzano le operazioni aumentando la velocità di esecuzione.
  5. Ottimizzatore SQL ancora più intelligente e con report disponibile in formato Json
  6. Scalabilità con sistemi multicore più spinta: ho letto degli articoli in cui il team documenta di aver superato i 1 Milione di query al secondo (link per i più tecnici)
  7. Possibile indicizzazione di contenuti XML , finalmente senza trucchi e vincoli particolari
  8. Molte delle impostazioni che prima erano “statiche”, vengono chiamati così i parametri MySQL di configurazione letti all’avvio di MySQL e non modificabili se non riavviando il programma, adesso sono “dinamiche” quindi si possono cambiare mentre il programma gira. Tra questi uno per me tra i più importanti, ovvero il cambiamento dei parametri per la replicazione master – slave e innodb-buffer-pool-size per la memoria data a InnoDB
  9. Veramente tante altre cose ;-) http://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html

Da notare che molte delle nuove caratteristiche sono applicabili solo agli ENGINE che lo supportano, InnoDB per esempio supporta tutte le nuove ottimizzazioni e riconferma, semmai ci fosse da ridirlo, la strada di Oracle a spostare il focus su questo formato transazionale, a scapito di MyIsam, anche nei database interni di sistema (vedi database mysql) per assicurare maggiore stabilità e sicurezza a tutto il sistema. Su questa linea di pensiero l’opzione di disabilitare Innodb è deprecata e rimanda un warning non eseguendo la direttiva.

 

Bene aspetto la versione finale per poterla metterla “sotto torchio” e di provare sul campo questa nuova versione.
Autore


Corso Svizzera 185 - 10149 - Torino
800 943 944
[email protected]