MySQL
Eine MySQL Datenbank wird hier über die serverseitige Scriptsprache PHP angesprochen. Eine MySQL Datenbank wird hier über die serverseitige Scriptsprache PHP angesprochen.
MySQL ist ein freies Datenbanksystem auf SQL (Structured Query Language) Basis, lizenziert durch die GPL, auch eine kommerzielle Lizenzierung ist möglich (Duales Lizenzsystem). 1994 entwickelt durch Michael (Monty) Widenius, David Axmark  und Alan Larsson als Weiterentwicklung einer selbstentwickelten ISAM-Engine wird MySQL heute von der schwedischen Firma MySQL AB, die von den Entwicklern gegründet wurde, weiterentwickelt. MySQL ist das populärste Open Source Datenbanksystem und  arbeitet gut mit der Scriptsprache PHP zusammen. Unterstützt werden die Betriebssysteme Unix, Linux, Windows, Mac OS X, Open VMS und i5/OS. Es werden auch i.V.m. mit dem Apache Server ganze Installationspakete angeboten (XAMPP (WAMPP, LAMPP, MAMPP)  je nach OS. 2003 wurde MySQL in SAP integriert (MaxDB). In PHP ist auch das MySQL Administrationsprogramm phpMyAdmin geschrieben.

Storage-Engines
MySQL unterstützt mehrere Storage-Engines: MyISAM, Berkeley DB, InnoDB, MEMORY, DB2 unter i5/OS,  MERGE, BLACKHOLE, FEDERATED, ARCHIVE, NDB (Network Data Base) und Falcon. MyISAM ist eine Weiterentwicklung von ISAM und verfügt über schnelle Zugriffe auf Tabellen und Indizes sowie über Volltextsuche. Die Transaktionssicherung wurde weggelassen;  MyISAM unterstützt keine referentielle Integrität und keinen Rollback. Referentielle Integrität und Rollbacks werden hingegen von InnoDB unterstützt. InnoDB (Innobase Oy) genügt weitesgehend den ACID Kriterien und ist in der  Lage, Fremdschlüssel-Beziehungen zu überprüfen. ORACLE hat Innobase Oy 2005 übernommen. Die NDB-Implementierung ist eine kommerzielle Implementierung der MySQL-Cluster Technologie (NDB-Cluster). Mit ARCHIVE sollen  grosse Tabellen und Datenmengen unterstützt werden. Indizes werden nicht unterstützt um Speicherplatz zu sparen, ebenso werden nur SELECT und INSERT Abfragen unterstützt. Einzufügende Daten werden zunächst in einem Kompressionspuffer  zwischengespeichert und vor der INSERT Operation mit dem ermittelten optimalen Kompressionsalgorithmus komprimiert. Die FEDERATED Variante ermöglicht die transaktionssichere Speicherung von Daten auf einem anderen Server.  Das Prinzip Föderativer Informationssystem kommt zur Anwendung: der Server, von dem die Operationen abgeschickt werden, fungiert als Client und hat über die FEDERATED-Engine Zugriff auf den (Remote) Server,  auf dem auf FEDERATED-Tabellen ebenfalls zugegriffen werden kann. Die Berkeley DB (BDB) wurde von Sleepycat Software entwickelt (Sleepycat wurde 2006 ebenfalls von ORACLE aufgekauft) und bietet DB-APIs zu C, C++, Java, Python, Perl sowie der  Tool Command Language (TCL), einer Open Source Scriptsprache und weiteren Programmiersprachen. Die BDB ist eine eingebettete (embedded) DB-API-Sammlung und bietet Transaktionssicherheit sowie die Möglichkeit sehr grosse  Datensätze (bis zu 4 GByte) und Tabellen (bis zu 256 Terabyte) zu erstellen, da die Datenzugriffe ähnlich wie bei einem Dateisystem funktionieren und somit keinerlei Beschränkung bezüglich der Speicherungsart unterliegen.  BDB bietet weiterhin Möglichkeiten des Daten-Recovery (Hot-Backups (Backups zur Laufzeit), Replikation (Datenspeicherung auf verschiedenen Servern zur gleichen Zeit)) sowie Locking-Mechanismen. Durch das  Berkeley XML Interface können XML Dokumente geparst werden: damit sind die XML Abfragesprachen XQuery und XPath für Datenbankabfragen einsetzbar. Die BLACKHOLE-Engine dient zur Überprüfung der SQL-Syntax und zum Schreiben eines Binär-Logs.  Da die Daten nicht gespeichert werden, können Syntaxprüfungen ohne Belegung von zusätzlichem Speicherplatz durchgeführt werden. BLACKHOLE wird daher eingesetzt zur Syntaxprüfung von  MySQL-Dumps, zum Vergleich von Binärlogs auf den Master- und Slave Servern bei einer Datenreplikation und zur Zeitmessungen für das Schreiben eines Binär-Logs. Mit der MERGE-Engine kann man mehrere MyISAM Tabellen mit derselben Stuktur  zusammenfassen und Transaktionen darauf ausführen. Bei DB/2 unter dem IBM System i5 fungiert DB/2 als Datenbank-Engine für MySQL.

Falcon-Storage-Engine
Ab MySQL 6.0 wird mit Falcon eine neue MySQL-Storage-Engine erscheinen, die u.a.  Transaktionssicherheit verspricht. Falcon wird entwickelt von Jim Starkey (InterBase) und seiner Firma Netfastructure, die zu diesem Zweck von MySQL AB aufgekauft wurde. Dabei wird besonders an Web 2.0 Anwendungen gedacht.

MVCC
Falcon unterstützt  MultiVersion Concurrency Control (MVCC), was es erlaubt, Datensätze ohne Row-Level-Locking zu aktualisieren. Falcon ist geeignet für transaktionsbasierte Anwendungen mit hohem Datenverkehr. MVCC ist eine effiziente Methode, um bei einer  relationalen Datenbank viele gleichzeitige Zugriffe zu ermöglichen, ohne die Datenkonsistenz zu gefährden oder in eine Deadlock-Situation zu geraten. Um das zu realisieren verwendet MVCC Zeitstempel und sich automatisch erhöhende Transaktions-IDs:  dadurch werden Transaktionen serialisiert und keine Transaktion muss auf die andere warten. Die verschiedenen Objektversionen von einer Transaktion mit dem entsprechendem Zeitstempel werden von der DB-Engine nach einem ausgeklügeltem System verwaltet.  Beim Row Level Locking wird nur ein Teil einer Datenbank während einer Transaktion gesperrt. Dadurch können sich mehrere Benutzer einen Teil der Datenbank teilen. Dies hat Vorteile bei hohen Benutzerzahlen. Row-Level Locking benötigt ein gutes  Transaktionssystem, da es sonst zu viele Row-Level Locks (respektive Column Level Locks) gibt, welche die Performance der DB herabsetzen. Das Transaktionsmanagement hat die Aufgabe, die Schreibzugriffe zu verzögern und zu sammeln, um sie dann  "in einem Rutsch" in die DB zu schreiben. Falcon benötigt dann dank MVCC kein Locking während einer Update- oder Insert-Operation. Weiterhin verwendet Falcon erweiterte B-Baum-Indizes sowie Kompressionsalgorithmen zur Speicherung.  Die Kompression und Dekompression zur Speicherung der Daten auf der Festplatte erfolgt im Speichervorgang selber ("On-the-Fly"). Durch Verwendung eines Caches für Daten und Indizes besteht keine Notwendigkeit,  Index-Daten von der Festplatte zu laden. Falcon ist speziell für 64-Bit Prozessoren ausgelegt, die mit vielen Threads, CPU-Kernen oder Arbeitsspeicher umgehen können.

B-Baum-Indize
Ein B-Baum-Indize ist eine Daten- und Indexstruktur die oft in  Datenbanken und Dateisystemen verwendet wird. Es handelt sich um einen immer vollständig balancierten Baum, der Daten sortiert nach Schlüsseln speichert. MySQL Tabellen können mit unterschiedlichen Verfahren partitioniert werden:  Range-, List-, Key- und Hash-Partitionierung sowie die Bildung von Unterpartitionen (Subpartitions).

MySQL und Google, Übernahme durch Sun
Google will ab Ende 2008 MySQL-Eigenentwicklungen in das MySQL-Projekt zurückfliessen lassen: Google  setzt MySQL auf tausenden seiner Server ein und hat vor allem Funktionen zur Replikation optimiert und Tools entwickelt, die eine grosse Anzahl von Instanzen überwachen. MySQL wurde 2008 von Sun für 1 Mrd. $ übernommen, bleibt jedoch Open Source.
Siehe auch:    Falcon-Storage-Engine   My-SQL-6   MySQL-Cluster   Open-Source   InnoDB   MyISAM   Multiversion-Concurrency-Control   Referentielle-Integrität   PHP   NoSQL