Dopo 10 anni dalla creazione della branch 10.x, è stato rilasciato il database MariaDB 11.0.0, che offre significativi miglioramenti e modifiche che violano la compatibilità. La branch è attualmente in fase alpha e sarà pronta per applicazioni lavorative dopo una fase di stabilizzazione. La formazione della prossima branch significativa MariaDB 12, contenente modifiche che violano la compatibilità, è attesa non prima di 10 anni (nel 2032).
Il progetto MariaDB sviluppa una derivazione di MySQL, mantenendo, per quanto possibile, la compatibilità retroattiva e distinguendosi per l'integrazione di motori di archiviazione aggiuntivi e funzionalità avanzate. Lo sviluppo di MariaDB è supervisionato da un'organizzazione indipendente, la MariaDB Foundation, secondo un processo di sviluppo aperto e trasparente, indipendente dai singoli fornitori. Il database MariaDB viene fornito al posto di MySQL in molte distribuzioni Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) ed è impiegato in grandi progetti come Wikipedia, Google Cloud SQL e Nimbuzz.
Il miglioramento chiave nella branch MariaDB 11 è il passaggio dell'ottimizzatore delle query a un nuovo modello di costo, che garantisce una previsione più precisa dei pesi di ciascun piano di esecuzione della query. Sebbene il nuovo modello permetta di eliminare alcuni colli di bottiglia nelle prestazioni, non si esclude che non sia ottimale in tutti gli scenari e che possa rallentare alcune query, pertanto si consiglia agli utenti di partecipare ai test e di informare gli sviluppatori in caso di problemi.
Il modello precedentemente utilizzato si adattava bene alla ricerca dell'indice ottimale, ma presentava problemi con l'applicabilità delle operazioni di scansione delle tabelle, scansione degli indici o campionamento per intervalli. Il nuovo modello ha eliminato questo difetto grazie alla modifica del peso di base delle operazioni con il motore di archiviazione. Nella valutazione delle prestazioni delle operazioni, che dipendono dalla velocità di accesso al disco, come la scansione sequenziale dei record, ora si presume che i dati siano memorizzati su un'unità SSD che garantisce una velocità di lettura di 400 MB al secondo. Sono stati inoltre ottimizzati altri parametri di peso dell'ottimizzatore, il che ha permesso, ad esempio, di implementare la possibilità di utilizzare indici per le operazioni "ORDER BY/GROUP BY" nelle sottoquery e di velocizzare l'elaborazione di tabelle molto piccole.
Si segnala che il nuovo modello di peso consentirà di scegliere un piano di esecuzione della query più ottimale nelle seguenti situazioni:
- Quando si utilizzano query che coinvolgono più di 2 tabelle.
- Quando ci sono indici che contengono un gran numero di valori uguali.
- Quando si utilizzano intervalli che coprono più del 10% della tabella.
- Quando ci sono query complesse in cui non tutte le colonne utilizzate sono indicizzate.
- Quando si utilizzano query che coinvolgono motori di archiviazione diversi (ad esempio, quando in una query ci sono riferimenti a tabelle nei motori InnoDB e Memory).
- Quando si utilizza FORCE INDEX per migliorare il piano della query.
- Quando il piano della query peggiora a causa dell'uso di "ANALYZE TABLE".
- Quando la query copre un gran numero di tabelle derivate (un gran numero di SELECT annidati).
- Quando si utilizzano espressioni ORDER BY o GROUP BY che rientrano negli indici.
Principali violazioni della compatibilità nella serie MariaDB 11:
- I diritti SUPER non consentono più di eseguire azioni per le quali sono disponibili privilegi separatamente assegnati. Ad esempio, per modificare il formato dei log binari saranno necessari diritti BINLOG ADMIN.
- È stata rimossa l'implementazione del buffer delle modifiche in InnoDB.
- Sono stati dichiarati obsoleti innodb_flush_method e innodb_file_per_table.
- È stata dichiarata obsoleta la supporto per i nomi mysql*.
- È stata dichiarata obsoleta l'impostazione del parametro explicit_defaults_for_timestamp a 0.
- I collegamenti simbolici per la compatibilità con MySQL sono stati spostati in un pacchetto separato.
- Il valore predefinito del parametro innodb_undo_tablespaces è stato modificato a 3.
Fonte: opennet.ru
