- MySQL
-
MySQL Entwickler Oracle Corporation (bis Februar 2008: MySQL AB, bis Januar 2010: Sun Microsystems) Aktuelle Version 5.5.18
(16. November 2011)Betriebssystem Unix, Linux, Windows, Mac OS X, i5/OS, OpenVMS Programmiersprache C, C++ Kategorie Datenbankmanagementsystem Lizenz Duales Lizenzsystem (Proprietär und GPL) Deutschsprachig ja (partiell, z. B. Fehlermeldungen und grafische Tools) www.mysql.com MySQL [ˌmaɪɛskjuːˈɛl] ist ein relationales Datenbankverwaltungssystem. Es ist als Open-Source-Software sowie als kommerzielle Enterpriseversion für verschiedene Betriebssysteme verfügbar und bildet die Grundlage für viele dynamische Webauftritte.
Ursprünglich wurde MySQL vom schwedischen Unternehmen MySQL AB entwickelt. Im Februar 2008 wurde MySQL AB von Sun Microsystems übernommen. Im Januar 2010 wurde Sun Microsystems von Oracle gekauft.
Inhaltsverzeichnis
Beschreibung
Für den Vertrieb von MySQL Server verwendet Oracle ein duales Lizenzsystem: Einerseits ist das Programm eine freie Software, die unter der General Public License (GPL) steht, andererseits wird es auch unter einer kommerziellen Lizenz angeboten.
Der Name MySQL setzt sich zusammen aus dem Vornamen My, den die Tochter des Mitbegründers Michael Widenius trägt, und SQL, dem Kürzel für Structured Query Language (Strukturierte Abfragesprache).[1]
MySQL ist auf vielen Unix-Varianten, Mac OS X und Linux, aber auch auf Windows, OS/2 und i5/OS (ehemals OS/400) lauffähig. Seit Anfang 2008 gibt es auch eine Symbian-Variante. Für Windows werden allerdings einige Einschränkungen[2] genannt.
MySQL ist so aufgebaut, dass einer Datenbankmanagementsystem-Engine mehrere Datenbanken zugeordnet werden können. In einer Datenbank können mehrere Tabellen angelegt werden. Die Tabellen können von unterschiedlichem Typ sein. Die maximale Größe der Tabellen wird im Prinzip nur durch das Betriebssystem limitiert.
Während frühere MySQL-Versionen nur Teile des SQL3-Sprachumfangs unterstützten (z. B. waren keine View-Definitionen möglich), bietet die Version 5.0 einen wesentlich erweiterten Sprachumfang an, der weitgehend dem SQL3-Standard entspricht.
Seit der Version 3.23.xx steht ein Replikationssystem zur Verfügung. Es ist für den Einsatz in einem Computercluster ausgelegt. Dabei sind dem Datenbankmanagementsystem (DBMS) mehrere Datenbanken auf unterschiedlichen Rechner-Knoten zugeordnet. Eine der Datenbanken fungiert als Master; hier werden die Datenbankinhalte verändert. Das Replikationssystem verteilt anschließend die datenverändernden SQL-Kommandos auf die anderen Datenbanken, die diese Änderungen lokal auf ihren Tabellen nachvollziehen. Es handelt sich hierbei also um eine asynchrone Replikation der SQL-Kommandos.
Ein bevorzugtes Einsatzgebiet von MySQL ist die Datenspeicherung für Webservices. MySQL wird dabei häufig in Verbindung mit dem Webserver Apache und der Skriptsprache PHP eingesetzt. Viele Webdienste bedienen sich dieser Architektur und betreiben je nach Größe und Bedarf eine Vielzahl von MySQL-Servern, über die die Zugriffe aus dem Netz abgewickelt werden. Daneben wird MySQL in vielen Produkten als eingebettetes Datenbanksystem eingesetzt.[3]
MySQL ist mit mehr als 6 Millionen Installationen und über 64.000 Downloads pro Tag das populärste Open-Source-Datenbankverwaltungssystem der Welt.[4] Es kommt beispielsweise bei Google, YouTube, Wikipedia und Twitter zum Einsatz.[5]
MySQL Server und offizielle Bibliotheken sind wegen der Performance hauptsächlich in ANSI C und ANSI C++ implementiert.
Geschichte
MySQL wurde 1994 zunächst als Clone für mSQL entwickelt, um Datenbanken des maskengesteuerten Datenbanksystems UNIREG in Web-Anwendungen verfügbar zu machen. (UNIREG war 1979 von Michael Widenius entwickelt und ca. 1986 in die Programmiersprache C umgeschrieben worden, damit es auch unter UNIX-Systemen lief.) MySQL war daher sowohl zu mSQL als auch UNIREG voll kompatibel. Die Software wurde im Jahr 1997 sofort unter der Versionsnummer 3.21 veröffentlicht, um zu signalisieren, dass sie auf einem Kern basiert, der schon eine lange Geschichte hat. Sie war von Anfang an für große Datenmengen und sehr gute Performance ausgelegt, teils auf Kosten von Stabilität und Verfügbarkeit.
Die Menge der Eigenschaften hingegen war zunächst beschränkt. So gab es nur wenige Tabellentypen und keine Transaktionen. Typischerweise werden neue Eigenschaften auf Wunsch der Anwender implementiert, die dadurch ein sehr großes „Mitspracherecht“ haben.
Bereits mit der Version 3.23 verfügte MySQL über zwei Tabellentypen mit Transaktionen, wobei der eine (InnoDB) den Kriterien ACID genügt.
Alle Operationen, die allgemeine SQL-Eigenschaften betreffen, sind für alle Tabellentypen gleich, während die Eigenschaften der Tabellentypen aufgrund der unterschiedlichen Architektur sehr verschieden sein können. So besitzt der Typ MyISAM bereits seit der frühen Version 3.23 eine sehr leistungsfähige Volltext-Suche, die beim Typ InnoDB (noch) nicht implementiert ist.
Mit dem MySQL Cluster steht ein Tabellentyp zur Verfügung, bei dem die gesamte Datenbank im Arbeitsspeicher als In-Memory-Datenbank vorgehalten werden kann. Es wird synchrone Replikation zwischen allen Clusterknoten und Transaktions-Verarbeitung unterstützt, jedoch keine Volltextsuche.
Die Version 4.0 wurde im März 2003 freigegeben. Sie erlaubt die Nutzung von Unions und führte einen Query Cache ein, der die Ergebnisse häufig benutzter SQL-Anfragen zwischenspeichert.[6]
Die Version 4.1 wurde im Oktober 2004 freigegeben. Sie bietet eine Datenspeicherung in unterschiedlichen Zeichensätzen pro Tabelle an. Es wird unter anderem auch Unicode unterstützt. Die Verwendung von Unterabfragen (Subqueries/Subselects) wird ermöglicht.[7]
Die Version 5.0 wurde im Oktober 2005 freigegeben. Sie unterstützt alle im SQL3-Standard definierten Objekttypen:
- Datenbank
- Tabelle
- View (neu in Version 5)
- Alias
- Index
- Trigger (neu in Version 5)
- Stored Procedure (neu in Version 5)
- User Defined Function (neu in Version 5)
Im Februar 2008 hat Sun Microsystems MySQL AB übernommen. Als Kaufwert wird eine Milliarde Dollar genannt; davon 200 Millionen in Aktienoptionen.[8][9] Die Übernahmeverhandlungen wurden am 26. Februar 2008 abgeschlossen.[10]
Im Januar 2010 hat Oracle Sun Microsystems übernommen.[11] Wenige Monate später gab Oracle bekannt, dass die bereits von MySQL AB begonnene Entwicklung der Datenbank-Engine Falcon eingestellt wird.
Am 7. Dezember kündigte Oracle/MySQL das End of Live (EOL) von MySQL-Binaries für verschiedene Betriebssysteme zum 1. Januar 2011 an, darunter i5/OS V5R4, IBM i Version 6.1, AIX Version 5.3, Red Hat Enterprise Linux Version 3, SuSE Enterprise Linux Version 9 , OpenSuSE Linux Version 9 und generische X86 Linux-Distribution erstellt mit Intels ICC Compiler. Neu ist die Unterstützung für die Betriebssysteme FreeBSD und Fedora.[12] Damit gibt es keine Unterstützung mehr für die IBM POWER Plattformen.
Ankündigungen für zukünftige Versionen
Eine Version 5.2 wurde einige Zeit lang als Alpha-Test-Version angeboten, später jedoch mit Version 6.0 zusammengeführt.
Zukünftige Weiterentwicklungen sollen die Anwendung von Parallelverarbeitung ermöglichen.[13]
Einschränkungen
Die folgende Liste betrifft Version 5.0. In späteren Releases können einige davon weggefallen sein.
- VARCHAR-Spalten können bis Version 5.0.2 maximal die Länge 255 haben, ab 5.0.3 ist eine Länge bis 65535 Zeichen möglich.
- Datenzeilen (mit Ausnahme von BLOB- und TEXT-Daten) dürfen nicht größer als 8 KB sein.
- Die Beachtung von Fremdschlüssel-Beziehungen wird noch nicht von allen Speicher-Engines ausgeführt.
- Volltextindizes werden ausschließlich von der Speicherengine MyISAM unterstützt.
- Check-Constraints werden akzeptiert, aber von jeder Speicherengine ignoriert.
- Die Zeit-Datentypen DATETIME und TIME (nicht aber TIMESTAMP) werden ohne Zeitzone gespeichert; als Zeitzone wird standardmäßig die Zone ausgewählt, in der der MySQL Server läuft.
- Trigger können keine Transaktionen abbrechen.
- Keine Unterstützung von Sequenzen. Eine ähnliche Funktion bietet eine AUTO_INCREMENT-Spalte.
- Keine Schemata.
Speichersubsystem
MySQL bietet verschiedene Speichersubsysteme an. Jede einzelne Engine ist für ein spezielles Einsatz-Szenario optimiert. Im Vergleich zu der traditionellen Mehrschichtenarchitektur von Datenbanksystemen sind die Engines kein reines Speichersubsystem, sondern bieten mehr Funktionalität. So liegt die Verwaltung von Indizes und referenziellen Integritäten in der Hand der Engine. Man kann auch selber eine Speicher-Engine schreiben und diese zu den bestehenden hinzufügen oder eine Anwendung ausschließlich mit der eigenen Engine betreiben.[14]
Neben den Indizes liegt ein Hauptteil der Transaktionsverwaltung bei den Engines. Dies ermöglicht es, verschiedene Varianten von Engines zu erstellen, die einmal eine strenge ACID-Transaktionsverwaltung liefern oder eine sehr einfache Verwaltung, um effizienter arbeiten zu können.
Neben den von MySQL veröffentlichten und mit MySQL mitgelieferten Engines gibt es auch Engines anderer Hersteller.
Offizielle Engines
MyISAM
MyISAM bietet schnellen Zugriff auf Tabellen und Indizes ohne Transaktionssicherung. Concurrency (parallele Datenbankzugriffe) verwaltet MySQL auf Tabellenebene, das heißt, die komplette Tabelle wird je nach Sperrungsart für bestimmte Operationen gesperrt. Eine Vielzahl von simultanen Lesezugriffen ist möglich, da Lesezugriffe nur sogenannte READ-Locks akquirieren. Diese erlauben es anderen „READERN“, auf den gleichen Datensatz gleichzeitig zuzugreifen. Schreibzugriffe müssen allerdings warten, bis alle gegenwärtigen „READER“ ihre Leseoperationen abgeschlossen haben und damit ihren READ-Lock freigeben. Ein „READER“ muss somit nur andere „WRITER“ blocken.
Ein Datensatz, der geändert wird, kann weder gelesen noch geschrieben werden. Somit muss ein „WRITER“ (schreibender Zugriff auf Daten) andere „READER“ und „WRITER“ blocken. Dies geschieht durch einen „WRITE Lock“. Auch dieser findet auf Tabellenebene statt, somit kann in dieser Zeit weder lesend noch schreibend auf die gesamte Tabelle zugegriffen werden, bis der „WRITE Lock“ aufgehoben wird.
Für einen Querymix, der vor allem aus Lesezugriffen besteht, ist MyISAM eine sehr effiziente Speicher-Engine. Weitere Vorteile von MyISAM sind:
- flexibelste Autoincrement-Eigenschaft von allen Speicherengines
- MyISAM Tabellen können in FAST, COMPRESSED und READONLY Tabellen konvertiert werden
- MyISAM Tabellen können verwendet werden, um MERGE Tabellen zu erstellen
- MyISAM ist hoch portierbar, da die Tabellendateien (.frm Datei (Tabellenstruktur), .MYD (Datendatei), .MYI (Indexdatei)) auf eine andere Maschine kopiert werden können und dort sofort als Datenbanktabellen zur Verfügung stehen.
- Mächtige Volltextsuche
MyISAM war die Standard-Speicher-Engine von MySQL bis Version 5.1 und konnte beim Kompilieren oder Serverstart nicht ausgeschlossen werden.
InnoDB
InnoDB bietet transaktionssichere Lese- und Schreibzugriffe für Tabellen, die den Typ InnoDB haben. Allerdings gibt es hier Einschränkungen.
InnoDB bietet ferner die Möglichkeit, Fremdschlüssel-Beziehungen zu überprüfen.
InnoDB ist seit Version 5.5 die Standard-Speicher-Engine.
MERGE
MERGE bietet die Möglichkeit, mehrere Tabellen vom Typ MyISAM mit gleicher Struktur zu einer Tabelle zusammenzufassen und die Zugriffe darauf auszuführen.
MEMORY (HEAP)
Management von temporären Tabellen. Die Definition der Tabellen wird auf der Festplatte permanent gespeichert. Die Daten werden im Arbeitsspeicher gespeichert. Es werden jedoch nicht alle Datentypen unterstützt. Bei einem Neustarten des Servers sind die Tabellenstrukturen noch vorhanden, die Inhalte müssen neu eingelesen werden, beispielsweise aus permanenten Tabellen. Es sind spezielle Verfahren zur Speicherplatz-Verwaltung implementiert, um den Platz von gelöschten Sätzen bei der nächsten Einfügung wiederzuverwenden.
EXAMPLE
Code-Beispiel für die Entwicklung einer eigenen Speicher-Engine. EXAMPLE hat Funktionen zum Erstellen einer Tabelle, die Funktionen zum Schreiben und Lesen der Datensätze sind nur angedeutet. Ein SELECT-Statement liefert immer eine leere Ergebnismenge.
BDB
BDB ist die Abkürzung für Berkeley DataBase. Diese Speicher-Engine wurde von Sleepycat Software entwickelt und später an Oracle verkauft. Die BDB bietet Transaktionssicherheit und besondere Vorkehrungen, damit bei einem Systemausfall die gespeicherten Daten erhalten bleiben.
Die BDB-Speicher-Engine soll ab der Version 5.1.12 nicht mehr weiter unterstützt werden.
FEDERATED
Die FEDERATED-Engine bietet Zugriff auf Tabellen, die auf einem anderen Server liegen. Wenn man eine Tabelle vom Typ FEDERATED erstellt, dann muss die entfernte Tabelle auf dem anderen Server bereits existieren. Der lokale Server verhält sich wie ein Client, der auf den entfernten Server zugreift. Die FEDERATED-Engine verhält sich wie ein föderiertes Informationssystem, das bedeutet, dass sie die Daten selber nicht speichert, sondern Zugriff auf den fernen Server gewährt, während auf diesem ebenfalls auf die Daten zugegriffen werden kann. Bei der Version 5.0 kann nur auf andere MySQL-Server zugegriffen werden. Es ist geplant, diese Engine zu erweitern, dass auch auf andere DBMS zugegriffen werden kann.
ARCHIVE
Die ARCHIVE-Engine ist für die Speicherung von großen Datenmengen bei einem möglichst sparsamen Umgang mit dem zur Verfügung stehenden Speicherplatz konzipiert. Es können keine Indizes erstellt werden. Nur die Zugriffe INSERT und SELECT werden unterstützt. Der schnelle Zugriff auf die Daten steht hier nicht im Vordergrund.
Vor dem Speichern der Daten auf dem Speichermedium werden diese zunächst in einem Kompressionspuffer gesammelt. Wenn eine Serie von Einfüge-Operationen beendet wird, wird der optimale Kompressionsalgorithmus ermittelt und die Daten werden komprimiert ausgegeben.
Falls während einer Sequenz von Einfüge-Operationen von einem anderen Benutzer eine SELECT-Anfrage kommt, wird eine vorzeitige Kompression und Ausgabe der im Kompressionspuffer gespeicherten Daten erzwungen.
CSV
Bei der CSV-Engine werden die Daten im CSV-Format gespeichert, d.h. Zahlen werden nicht binär, sondern als einzelne Ziffern gespeichert und die einzelnen Werte werden durch Kommata getrennt.
BLACKHOLE
BLACKHOLE wurde entwickelt, um die Syntax von SQL-Statements zu prüfen und ein Binärlog zu schreiben. Die Daten werden nicht gespeichert. Dadurch können Syntaxprüfungen von SQL-Statements ausgeführt werden, ohne dass Speicherplatz zum Speichern der Daten bereitgestellt werden muss. Die Ausgabe des Binärlogs kann über einen Parameter aktiviert und deaktiviert werden.
Die BLACKHOLE-Engine ist ideal für die folgenden Aufgaben:
- Syntaxprüfung von Dump-Dateien
- Testen der Datenreplikation durch anschließenden Vergleich der Binärlogs auf dem Master-Server und dem Slave-Server.
- Zeitmessungen zur Bestimmung des Aufwands für das Schreiben des Binärlogs.
NDB
NDB ist die Abkürzung für Network Data Base. Die NDB-Speicher-Engine ist eine unabhängige Komponente, die die persistente Speicherung von Daten ermöglicht und für die Koordination aller Zugriffe auf Datenknoten in einem MySQL Cluster zuständig ist.[15] Anwendungen können direkt auf die NDB-Speicher-Engine über die NDB-API oder über einen MySQL-Knoten zugreifen. Der Zugriff über einen MySQL-Knoten ist für Anwendungsprogrammierer wesentlich einfacher zu gestalten, da in diesem Fall Standard-SQL-Befehle verwendet werden können und das Erlernen der NDB-Spezialitäten nicht notwendig ist.
Die NDB-API ist eine multithreading-fähige Schnittstelle zur Annahme aller ankommenden Datenanfragen.[15] Für jede Anfrage werden ein oder mehrere Threads gestartet. Auf die NDB-API ist nur ein sequenzieller Zugriff möglich, wodurch die Leistung des Clusters bei sehr vielen ankommenden Anfragen vermutlich eingeschränkt wird.
Falcon
Die Speicherengine Falcon wurde von MySQL AB entwickelt. Sie sollte mit der MySQL Version 6.0 als weitere transaktionsfähige Storage Engine zur Verfügung stehen. Einige Funktionen wie Fremdschlüsseldefinitionen sollten allerdings erst in der Version 6.1 enthalten sein.[16] Am 13. April 2010 gab Oracle bekannt, dass die Entwicklung der Falcon-Engine eingestellt wird.[17]
Engines anderer Anbieter
Neben den offiziellen Engines bieten mehrere Hersteller auch andere Engines mit anderen Eigenschaften oder Zusatzfunktionen. Einige seien hier beispielhaft erwähnt.
Revision Engine
Eine wichtige Funktion einer Datenbank ist es, Daten versionieren zu können. Neben dem reinem Speichern von Daten muss gewährleistet werden, dass Daten wieder herstellbar sind, wie sie zu einem bestimmten Zeitpunkt waren. Dies ist notwendig, um gesetzliche Auflagen erfüllen zu können, aber auch um den Verlauf von Produkteigenschaften zu speichern. Die Revision engine von DDEngine fügt eine automatische Versionierung als Plugin auf Ebene einer Speicherengine hinzu. Um die Daten physisch zu speichern, werden die mitgelieferten Storage-Engines benutzt.
IBMDB2I (DB2 unter i5/OS)
Im April 2007 wurde die Verfügbarkeit von MySQL auf dem IBM System i5 (ehemals AS/400 bzw. iSeries) angekündigt.[18] Die in das Betriebssystem integrierte Datenbank DB2 fungiert hierbei als Database Engine für MySQL. Damit werden implizit Transaktionen unterstützt. IBM erhofft sich davon neue Einsatzbereiche des Systems i5 für MySQL- und PHP-Anwendungen zu eröffnen. IBMDB2I wurde in MySQL-Version 5.1.35 (verfügbar im Mai 2009) hinzugefügt und mit MySQL 5.1.54 (November 2010) wieder entfernt.
Brighthouse Engine
Die Firma Infobright[19] in Toronto stellt die Brighthouse Engine zur Verfügung. Sie ist für Datawarehouse-Anwendungen konzipiert und somit für die Verarbeitung großer Datenmengen ausgerichtet. Indizes werden nicht unterstützt. Die Daten werden komprimiert gespeichert, dadurch können nach Angaben des Herstellers 90% des Speicherplatzes eingespart werden.[20]
NitroEDB
Die Firma NitroSecurity[21] in Portsmouth (USA) stellt die NitroEDB Engine zur Verfügung. Sie wurde für die Realtime Überwachung von Netzwerken entwickelt.[22]
Administration
Unter Linux installiert sich MySQL in das Verzeichnis /var/lib/mysql/. Unter Windows legt der Nutzer den Ablageort der Datendateien fest - Standard ist der Ordner %ProgramFiles%\MySQL. Grundeinstellungen werden durch den Administrator in der Datei my.cnf vorgenommen.
Zur Verwaltung von MySQL-Datenbanken dient der mitgelieferte Kommandozeilen-Client (Kommandos
mysql
undmysqladmin
). Als grafische Verwaltungssoftware bietet MySQL Inc. die Software MySQL Workbench an, welche für Windows, MacOSX und Linux verfügbar ist.Eine von vielen Alternativen ist die in der Skriptsprache PHP geschriebene Open-Source-Anwendung phpMyAdmin. Die grafische Benutzeroberfläche lässt sich über einen Browser bedienen. Man kann damit MySQL-Datenbanken verwalten. phpMyAdmin wird hauptsächlich zur Verwaltung von MySQL-Datenbanken auf Webservern verwendet, auf denen die einzelnen Kunden keine Rechte haben,
mysql
undmysqladmin
direkt auszuführen. Zum Erstellen und Verwalten von Backups der Datenbanken auf Webservern werden – wenn keine Rechte für die Ausführung vonmysqldump
vorliegen – häufig die ebenfalls in PHP geschriebenen Open-Source-Anwendungen phpMyBackupPro oder MySQLDumper eingesetzt.Für ein unterbrechungsfreies System bietet sich die Master/Slave-Replikation an, wobei die Datensicherung auf dem Slave durchgeführt wird.
Partitionierung
Mit der Version 5.1 können MySQL-Tabellen partitioniert werden. Es stehen mehrere Partitionierungsarten zur Auswahl.
Range-Partitionierung
Bei der Range-Partitionierung werden Wertebereiche für die einzelnen Partitionen definiert.
In dem Beispiel wird eine Tabelle erstellt mit drei Partitionen. Die Spalte 'region' darf bei dieser Syntax nur Werte kleiner als 30 erhalten.
create table kunde ( region int not null , nr int not null , name char(30) , ed date not null ) partition by range(region) ( partition p0 values less than (10) , partition p1 values less than (20) , partition p2 values less than (30) ) ;
Die Partitionierung kann auch durch einen Ausdruck ermittelt werden. Der Ausdruck muss einen Integer-Wert als Ergebnis generieren. Wenn die letzte Partition mit dem Wert 'maxvalue' definiert wird, damit kann man in die Spalte 'region' (Beispiel oben) alle Integer-Zahlen einfügen bzw. in der Spalte 'ed' (Beispiel unten) alle Datumswerte einfügen.
create table kunde ( region int not null , nr int not null , name char(30) , ed date not null ) partition by range(year(ed)) ( partition p0 values less than (1990) , partition p1 values less than (2000) , partition p2 values less than maxvalue ) ;
List-Partitionierung
Bei der List-Partition werden die Werte einzeln aufgezählt.
Beispiel:
create table kunde ( region int not null , nr int not null , name char(30) , ed date not null ) partition by list(region) ( partition p0 values in (1, 3, 5 ) , partition p1 values in (2, 4, 6 ) , partition p2 values in (10, 11, 12 ) ) ;
Hash-Partitionierung
Bei der Hash-Partitionierung wird die Verteilung der Sätze auf die einzelnen Partitionen vom DBMS ermittelt. Bei der regulären Hash-Partitionierung wird die Modulo-Funktion als Hash-Funktion verwendet (Region modulo 4). Sie hat den Vorteil, dass in der Spalte 'region' alle Integer-Zahlen eingefügt werden können.
create table kunde ( region int not null , nr int not null , name char(30) , ed date not null ) partition by hash(region) partitions 4 ;
Es gibt auch eine 'Lineare' Hash-Partitionierung. Dabei kommt eine andere Hash-Funktion zum Einsatz.
Key-Partitionierung
Bei der Key-Partitionierung wird implizit eine Hash-Funktion verwendet. Als Input für die Funktion dient der Primärschlüssel der Tabelle.
create table kunde ( nr int not null primary key , name char(30) , ed date not null ) partition by key() partitions 4 ;
Die Key-Partitionierung wird bei der Speicherengine NDB implizit bei allen Tabellen verwendet. Das erleichtert die interne Koordination der Replikation.
Unterpartitionen
Bei jeder Art von Partitionierung können zusätzlich 'Subpartitions' definiert werden. Dadurch ist eine noch granularere Aufteilung der Daten möglich.
Tools
Kommandozeilenwerkzeuge
Zum Funktionsumfang gehören die folgenden Kommandozeilenwerkzeuge:
- mysqlimport: kann als Ersatz für 'LOAD DATA INFILE …' verwendet werden. Durch Angabe von Parametern können sich Benutzer anmelden und das Verhalten des Programms steuern.
- mysqldump: kann als Ersatz für 'SELECT * INTO OUTFILE' verwendet werden. Zusätzlich kann die Tabellenstruktur als Dump ausgegeben werden. Durch Angabe von Parametern können sich Benutzer anmelden und das Verhalten des Programms steuern.
- perror: zeigt zu Fehlercodes erweiterte Informationen an. Als Parameter wird beim Programmstart der Errorcode benötigt.
- mysqlshow: gibt Metadaten zu Datenbanken, Tabellen oder einzelnen Tabellenspalten aus.
Grafische Tools
- DBDesigner 4: ist ein unter der GPL entwickeltes Werkzeug für die Softwareentwicklung mit Strukturiertem Design. Es unterstützt Softwareentwickler beim Design und der Implementierung von Datenbanken. Das Design wird in XML gespeichert, was eine einfache Weiterverarbeitung z. B. durch Plugins ermöglicht. Der DB Designer ist auf die Modellierung von MySQL-Datenbanken spezialisiert.
- MySQL Workbench: ist der Nachfolger von DBDesigner 4. Die Modelle vom DBDesigner können als XML-Struktur importiert werden.
Support-Angebote
Oracle bietet Support-Lizenzen für drei Leistungsstufen an, die sich im Leistungsumfang und im Preis unterscheiden: MySQL Enterprise Silver, Gold und Platinum.[23][24]
Folgende Leistungen werden durch die Lizenzverträge zugesagt:
- Monatliche Updates
- Beratungsunterstützung
- Unterstützung zur Problemlösung
- Haftungsfreistellung vor Schadensersatzansprüchen Dritter
Mit MySQL verwandte Produkte
Von MySQL wurde das Datenbank-Projekt MariaDB abgespalten. Abgespalten in 2008 wurde Drizzle.[25][26][27] HeidiSQL ist ein Open-Source-Client für MySQL (unter Windows). MySQL Cluster ermöglicht die Installation von MySQL auf einem Computercluster in einer Shared Nothing Architecture.
Einzelnachweise
- ↑ Hilfesystem der Version MySQL 5.0 Kapitel 1.3 und 1.4 oder http://dev.mysql.com/doc/refman/5.1/en/history.html
- ↑ MySQL unter Windows im Vergleich zu MySQL unter Unix
- ↑ Informationen zu MySQL Embedded Server 5.1, abgerufen am 27. September 2010
- ↑ http://www.mysql.de/why-mysql/marketshare/
- ↑ http://www.mysql.de/customers/
- ↑ Reference-Manual der Version 4.0
- ↑ MySQL Reference-Manual der Version 4.1
- ↑ Sun übernimmt MySQL - News bei TecChannel
- ↑ Sun kauft MySQL AB www.mysql.com/news-and-events
- ↑ Jonathan Schwartz, CEO von Sun, über den Abschluss der Übernahmeverhandlungen zwischen Sun und MySQL
- ↑ Oracle Pressemitteilung: Oracle Completes Acquisition of Sun
- ↑ http://www.mysql.com/support/eol-notice.html
- ↑ Does MySQL support query parallelisation?. Forums.mysql.com. Abgerufen am 8. Juni 2009.
- ↑ Reference-Manual von MySQL Version 5.0 Kapitel 14. Speicher-Engines und Tabellentypen
- ↑ a b Larissa Janssen: Hochleistungs-Datenbanksysteme: Theorie und Praxis, S. 190-191.
- ↑ Ankündigung von MySQL AB zur Falcon-Speicher-Engine
- ↑ http://www.heise.de/open/meldung/Oracle-Die-Zukunft-von-MySQL-977355.html
- ↑ Ankündigung der Verfügbarkeit von MySQL auf dem IBM System i5
- ↑ Webseite der Firma Infobright in Toronto
- ↑ Brighthouse Engine
- ↑ Webseite der Firma NitroSecurity in Portsmouth
- ↑ Informationen von Sun Microsystems über die NitroEDB Engine
- ↑ Angebot an Support-Leistungen von MySQL AB
- ↑ Oracle streicht Basistarif
- ↑ Artikel "MySQL-Forks und Patches"
- ↑ www.drizzle.org
- ↑ http://krow.livejournal.com/602409.html
Literatur
- Jeremy D. Zawodny, Derek J. Balling: MySQL High Performance O'Reilly 2004, ISBN 0-596-00306-4
- Matthias Kannengießer: PHP 5 / MySQL 4, Studienausgabe. Franzis, überarb. u. erw. Aufl. 2005, ISBN 3-7723-7005-5
- Michael Kofler: MySQL. Einführung, Programmierung, Referenz. Programmer's Choice. 3., überarb. u. erw. Aufl. 2005, ISBN 3-8273-2253-7
- Axel Bornträger: MYSQL 4 – echt einfach. Franzis, 2004, ISBN 3-7723-6137-4
- Matthias Kannengießer: MYSQL – Praxisbuch. Franzis, 2003, ISBN 3-7723-7500-6
- George Reese, Randy Jay Yarger, Tim King: MySQL: Einsatz und Programmierung. O'Reilly 2002, ISBN 3-89721-178-5
- George Reese: MySQL – kurz & gut. O'Reilly 2003, ISBN 3-89721-257-9
- Paul DuBois: MySQL Kochbuch. O'Reilly 2003, ISBN 3-89721-360-5
- Stefan Pröll, Eva Zangerle, Wolfgang Gassler: MySQL: Das Handbuch für Administratoren. Galileo Computing 2011, ISBN 978-3-8362-1715-6
Weblinks
Commons: MySQL – Sammlung von Bildern, Videos und Audiodateien- MySQL AB – offizielle Website (MySQL Deutschland)
- MySQL Forge – offizielle Community-Website
- MySQL-Handbuch
- Information zu MySQL auf sql-info.de
- MySQL NDB-Cluster HowTo
- MySQLfs mit MySQL NDB-Cluster als verteiltes Dateisystem HowTo
Kategorien:- Freies Datenbankmanagementsystem
- MySQL
- Unix-Software
- Linux-Software
- Mac-OS-Software
- Windows-Software
- Relationales Datenbankmanagementsystem
Wikimedia Foundation.