FANDOM


MySQL è il DBMS libero più diffuso. E' rilasciato con licenza GPL versione 2.

MySQL è relazionale e utilizza SQL. Supporta oltre venti diverse piattaforme. Tra i sistemi supportati troviamo GNU/Linux, BSD, Solaris, HP-UX, AIX, MacOS X e Windows. Quest'ultima versione è quella più scaricata, ma ha diversi limiti e difetti. Tipicamente, MySQL viene utilizzato con PHP, ma esistono API ufficiali anche per Java, C, Perl e altri linguaggi.

StoriaModifica

Dagli anni '80 lo sviluppatore finlandese Michael Widenius (Monty) lavora a una libreria C di basso livello per la gestione dei dati, che si interfacciava con un vecchio DBMS proprietario chiamato mSql. Questo programma si è poi evoluto in un vero e proprio DBMS che fu chiamato MySQL (My era la prima figlia di Monty). Per gestirlo fu fondata la società TCX nel 1996, che in seguito divenne MySQL AB.

La filosofia di questo programma, storicamente, si poteva riassumere in: stabilità, performance, facilità d'uso. La versione 4.1 però inizia a includere funzionalità che sembrano interessare solo una piccola parte degli utenti, quelli più "grossi". La 5.0 è considerata molto instabile.

Nel 2003 MySQL ha acquistato e sviluppato SAP DB, rinominandolo MaxDB, ma dopo breve lo ha rivenduto alla SAP.

Nel 2006 il DBMS InnoDB, da anni integreto in MySQL come storage engine, è stato acquistato dalla Oracle.

Nel gennario del 2008 MySQL è stato acquistato dalla Sun. Nello stesso anno Brian Aker riesce a realizzare il suo progetto di un "MySQL leggero". Nasce così il fork Drizzle, modulare e molto leggero, rilasciato con le licenze GPL versione 2 (perchè ereditata dal vecchio codice di MySQL) e BSD.

Nel 2009, dopo vari attriti con la Sun, Monty si mette in proprio. Nasce così il fork MariaDB (Maria è la seconda figlia di Monty). Le sue critiche riguardano soprattutto la chiusura di MySQL ai contributi esterni e la poca stabilità delle versioni dichiarate stabili. MariaDB continuerà a importare i cambiamenti apportati a MySQL, migliorandone però la stabilità.

Caratteristiche tecnicheModifica

Architettura a pluginModifica

Storage EngineModifica

Nelle vecchie versioni si chiamavano Table Type. MySQL ha diversi SE ufficiali e ogni programmatore può scriverne di nuovi utilizzando le API apposite.

Storage Engine ufficialiModifica
MyISAM

Predefinito. Estremamente rapido. Non supporta le transazioni. Supporta il fulltext e OpenGIS.

InnoDB

Predefinito in Drizzle. Estremamente rapido, forse non quanto MyISAM. Supporta le transazioni. E' basato su un DBMS a sè stante.

Maria

Definito un MyISAM a prova di crash. Opzionalmente può supportare le transazioni. Ancora in sviluppo.

Falcon

Transazionale. Ancora in sviluppo.

MEMORY

Tabelle registrate in memoria RAM.

Mrg_MYISAM

Unione di diverse tabelle MyISAM.

FEDERATED

Usato per connettersi ad altri server MySQL.

CSV

Memorizza i dati in formato CSV. Non supporta il partizionamento.

BLACKHOLE

Usato per disabilitare la lettura e la scrittura dei dati.

Storage Engine di terze partiModifica
Storage Engine obsoletiModifica
ISAM

Vecchio SE ora rimpiazzato da MyISAM.

BerkeleyDB

Deprecato e non più aggiornato per non meglio precisate ragioni tecniche. Era basato su BDB della SleepyCat. Supportava le transazioni e il locking a livello di pagina.

Gemini

Sviluppato anni fa da una società che non rispettava la licenza GPL di MySQL. Il suo sviluppo è cessato.

Parser FULLTEXTModifica

FunzionalitàModifica

VisteModifica

Le viste in MySQL non sono altro che query salvate. Quando si esegue una query su una vista, l'ottimizzatore decide il da farsi in base al parametro algorithm. Se il valore è MERGE le due query vengono unite, se è TEMPTABLE la vista viene eseguita generando una tabella temporanea sulla quale viene poi eseguito il secondo comando SQL, se è UNDEFINED la decisione viene presa dall'ottimizzatore.

Se la query utilizzata per creare la vista lo consente, le viste supportano l'inserimento e la modifica dei dati (o solo una delle due cose). E' supportato il parametro WITH CHECK OPTION.

Storage ProcedureModifica

Sono supportate le stored procedure in linguaggio SQL, con le opportune estensioni che sono simili al PL/SQL di Oracle. Al momento le SP non vengono compilate e non sono supportati altri linguaggi di programmazione. Non esiste un debugger.

TriggerModifica

EventiModifica

UDFModifica

Le UDF possono essere scritte in C o in Lua.

PartizioniModifica

OpenGISModifica

L'ottimizzatoreModifica

Il protocolloModifica

Il protocollo che permette al client di comunicare con il server MySQL supporta la compressione dei dati, la crittografia tramite OpenSSL (disabilitata per default) e i prepared statements (disabilitati per default ma emulati lato client dalla API Java).

LogModifica

Il log delle query può avvenire sia su file di testo, sia in tabelle di sistema.

Interfacce graficheModifica

Vedi ancheModifica

Risorse esterneModifica

Risorse ufficiali
Altre risorse in inglese
In italiano
I contenuti della comunità sono disponibili sotto la licenza CC-BY-SA a meno che non sia diversamente specificato.