www.wikidata.de-de.nina.az
MySQL ˌmaɪɛskjuːˈɛl 6 ist eines der weltweit verbreitetsten 7 relationalen Datenbankverwaltungssysteme Es ist als Open Source Software sowie als kommerzielle Enterpriseversion fur verschiedene Betriebssysteme verfugbar und bildet die Grundlage fur viele dynamische Webauftritte MySQLBasisdatenEntwickler Oracle Corporation bis Februar 2008 MySQL AB bis Januar 2010 Sun Microsystems Erscheinungsjahr 23 Mai 1995Aktuelle Version 8 1 0 1 18 Juli 2023 Betriebssystem Linux 2 Microsoft Windows 2 macOS 2 FreeBSD 2 Solaris 2 Unix ahnliches SystemProgrammiersprache C C 3 Kategorie DatenbankmanagementsystemLizenz GNU General Public License Version 2 4 proprietare Lizenz 5 deutschsprachig jawww mysql comMySQL wurde seit 1994 vom schwedischen Unternehmen MySQL AB entwickelt Im Februar 2008 wurde MySQL AB vom Unternehmen Sun Microsystems ubernommen das seinerseits im Januar 2010 von Oracle gekauft wurde Der Name MySQL setzt sich zusammen aus dem Vornamen My den die Tochter des MySQL AB Mitbegrunders Michael Widenius tragt und SQL 8 9 Inhaltsverzeichnis 1 Einsatzgebiete und Verbreitung 2 Plattformen und Schnittstellen 3 Struktur des verwendeten Speichersystems 4 Ablauf der Verarbeitung einer Anfrage 4 1 Query Cache 4 2 Parsing 4 3 Optimierung 5 Geschichte 6 Kritik 7 Speichersubsysteme 7 1 Offizielle Engines 7 1 1 MyISAM 7 1 2 InnoDB 7 1 3 MERGE 7 1 4 MEMORY HEAP 7 1 5 EXAMPLE 7 1 6 BDB 7 1 7 FEDERATED 7 1 8 ARCHIVE 7 1 9 CSV 7 1 10 BLACKHOLE 7 1 11 NDB 7 2 Engines anderer Anbieter 7 2 1 Revision Engine 7 2 2 Brighthouse Engine 8 Partitionierung 8 1 Range Partitionierung 8 2 List Partitionierung 8 3 Hash Partitionierung 8 3 1 Key Partitionierung 8 4 Unterpartitionen 9 Administration 9 1 Kommandozeilenwerkzeuge 9 2 Grafische Werkzeuge 10 Lizenz und Support 11 Mit MySQL verwandte Produkte 11 1 Forks 11 2 Weitere Produkte 12 Literatur 13 Weblinks 14 EinzelnachweiseEinsatzgebiete und Verbreitung BearbeitenEin bevorzugtes Einsatzgebiet von MySQL ist die Datenspeicherung fur Webservices MySQL wird dabei haufig in Verbindung mit dem Webserver Apache bzw Nginx und der Skriptsprache PHP eingesetzt Man spricht dann von einem LAMP Stack Linux Apache MySQL PHP oder von LEMP Stack das e steht dann fur e nginx Viele Webdienste bedienen sich dieser Architektur und betreiben je nach Grosse und Bedarf eine Vielzahl von MySQL Servern uber die die Zugriffe aus dem Netz abgewickelt werden 10 MySQL wird unter anderem verwendet von Flickr 11 YouTube 12 Facebook 13 14 und Twitter 15 Daneben wird MySQL in vielen Produkten als eingebettetes Datenbanksystem eingesetzt 16 MariaDB ist ein Fork von MySQL und zu MySQL kompatibel so dass MySQL Datenbanken recht einfach migriert werden konnen Der Begrunder von MySQL Monty Widenius hat nach dem Kauf von MySQL durch Oracle den neuen Fork entwickelt und erweitert diesen gemeinsam mit einem Team ehemaliger Core Entwickler von MySQL so dass weitere Features inzwischen verfugbar sind Eine Ruckmigration ist nach Nutzung dieser Features teilweise nicht mehr ohne Weiteres moglich Dies gilt insbesondere wenn Speicher Engines wie ColumnStores verwendet werden die MySQL so nicht kennt 17 Plattformen und Schnittstellen BearbeitenMySQL ist auf vielen Unix Varianten macOS und Linux aber auch auf Windows OS 2 und i5 OS ehemals OS 400 lauffahig Seit Anfang 2008 gibt es auch eine Symbian Variante Struktur des verwendeten Speichersystems BearbeitenMySQL sieht grundsatzlich einen MySQL Server vor auf dem Daten gespeichert sind und einen oder mehrere MySQL Clients die Anfragen an den Server schicken die dieser beantwortet Der Standardport fur den MySQL Server ist 3306 im Transmission Control Protocol TCP Auf dem Datenbankmanagementsystem dem MySQL Server konnen mehrere Datenbanken erstellt werden In einer Datenbank konnen mehrere Tabellen angelegt werden Praktisch erstellt MySQL dabei fur jede Datenbank einen Ordner auf der Festplatte in dem Dateien fur die Struktur und die Daten der einzelnen Tabellen abgelegt werden Das genaue Format dieser Dateien hangt von der fur die jeweilige Tabelle verwendeten Speicherengine ab Die Tabellen konnen jeweils von einem unterschiedlichen Typ sein Der Tabellentyp legt fest welche Speicherengine Speichersubsystem fur Anfragen an eine Tabelle verwendet wird Jede Tabelle kann Spalten enthalten in denen Daten eines festgelegten Datentyps gespeichert werden konnen z B Integer ganze Zahlen oder Strings Zeichenketten Die maximale Grosse der Tabellen wird grundsatzlich nur durch das Betriebssystem limitiert Ablauf der Verarbeitung einer Anfrage BearbeitenEin Client kann Datenbankanfragen an einen MySQL Server schicken Dieser ist dafur zustandig jede Anfrage moglichst performant zu bearbeiten Dabei wird zunachst der Query Cache befragt und bei nicht vorhandenem Ergebnis die Anfrage geparst optimiert und schliesslich ausgefuhrt das Ergebnis wird dann zuruckgegeben Query Cache Bearbeiten Um die Performance zu verbessern kann MySQL die Ergebnisse von Anfragen in einem Zwischenspeicher dem Query Cache ablegen Sollte spater eine identische Abfrage an den Server geschickt werden ohne dass sich in der Zwischenzeit die Daten in der Datenbank verandert haben wird sie aus dem Cache beantwortet Es muss dann nicht auf die Datenbank selbst zugegriffen werden 18 Parsing Bearbeiten Soll eine Query ausgefuhrt werden wird zunachst gepruft ob ihre Syntax gultig ist Sie wird dazu in ihre einzelnen Komponenten zerlegt Zugleich werden einige grundlegende Informationen uber die Query gesammelt wie etwa die Art der Query z B SELECT INSERT SET oder GRANT die betroffenen Tabellen oder die Inhalte der WHERE Klausel Am Ende dieses Schrittes kennt MySQL den Parse Baum der danach optimiert werden kann 19 Optimierung Bearbeiten Ist eine Abfrage syntaktisch gultig dann wird sie als Nachstes optimiert Dabei sucht der Optimizer nach dem effizientesten Weg die Query zu bearbeiten Dazu wird hauptsachlich versucht die Anzahl der zu lesenden Datensatze moglichst gering zu halten Dies wird etwa wenn Datensatze aus mehreren Tabellen gelesen werden mussen durch eine geschickte Abfragereihenfolge JOIN der Tabellen erreicht nicht benotigte Tabellen werden komplett aus dem JOIN entfernt Der Optimizer berucksichtigt unter anderem ob es sinnvoll ist zur Lokalisierung der gesuchten Datensatze einen Index zu verwenden und wenn ja welchen oder ob es besser ware stattdessen einen Table Scan durchzufuhren d h die komplette Tabelle zu durchlaufen Die zur Verfugung stehenden Alternativen werden vom Optimizer bewertet Dabei wird aufgrund von Heuristiken fur jede Moglichkeit geschatzt wie lange die Ausfuhrung benotigen wurde Diejenige Alternative die die geringsten Kosten hat wird anschliessend tatsachlich durchgefuhrt Die Arbeit des Optimizers lasst sich mit dem MySQL Kommando EXPLAIN nachvollziehen Dieser Befehl gefolgt von einer bestimmten Query beauftragt den Optimizer seinen Query Plan zuruckzugeben Als Ausgabe erhalt der Nutzer Informationen fur jeden Schritt den der Optimizer zur Beantwortung der Query durchfuhren wurde Auf diese Art lasst sich mit etwas Hintergrundwissen ermitteln inwiefern die Query optimiert werden kann so dass sie schneller ausgefuhrt werden kann 18 Geschichte BearbeitenMichael Widenius und David Axmark begannen 1994 mit der Entwicklung von MySQL 20 Es wurde zunachst als Klon fur mSQL entwickelt um Datenbanken des maskengesteuerten Datenbanksystems UNIREG in Web Anwendungen verfugbar 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 Nach einem internen Release am 23 Mai 1995 wurde die Software im Jahr 1997 sofort unter der Versionsnummer 3 1 veroffentlicht um zu signalisieren dass sie auf einem Kern basiert der schon eine lange Geschichte hat Sie war von Anfang an fur grosse Datenmengen und sehr gute Performance ausgelegt teils auf Kosten von Stabilitat und Verfugbarkeit Der Funktionsumfang hingegen war zunachst beschrankt So gab es nur wenige Tabellentypen und keine Transaktionen Typischerweise werden neue Eigenschaften auf Wunsch der Anwender implementiert die dadurch ein sehr grosses Mitspracherecht haben Mit der im Januar 2001 veroffentlichten Version 3 23 verfugte MySQL uber zwei Tabellentypen mit Transaktionen wobei der eine InnoDB den ACID Kriterien genugt Alle Operationen die allgemeine SQL Eigenschaften betreffen sind fur alle Tabellentypen gleich wahrend die Eigenschaften der Tabellentypen aufgrund der unterschiedlichen Architektur sehr verschieden sein konnen So besitzt der Typ MyISAM bereits seit der fruhen Version 3 23 eine sehr leistungsfahige Volltext Suche die beim Typ InnoDB nicht implementiert ist Neu in Version 3 23 ist ebenfalls das Replikationssystem Es ist fur den Einsatz in einem Rechnerverbund ausgelegt und bietet sich fur einen unterbrechungsfreien Betrieb an Dabei sind dem Datenbankmanagementsystem DBMS mehrere Datenbanken auf unterschiedlichen Rechnerknoten zugeordnet Eine der Datenbanken fungiert als Master hier werden die Datenbankinhalte verandert Das Replikationssystem verteilt anschliessend die datenverandernden SQL Kommandos auf die anderen Datenbanken die diese Anderungen lokal auf ihren Tabellen nachvollziehen Es handelt sich hierbei also um eine asynchrone Replikation der SQL Kommandos Mit dem MySQL Cluster steht ein Tabellentyp zur Verfugung bei dem die gesamte Datenbank im Arbeitsspeicher als In Memory Datenbank vorgehalten werden kann Es wird synchrone Replikation zwischen allen Clusterknoten und Transaktionsverarbeitung unterstutzt jedoch keine Volltextsuche MySQL 4 0 das im Marz 2003 freigegeben wurde erlaubt die Nutzung von Unions und fuhrte einen Query Cache ein der die Ergebnisse haufig benutzter SQL Anfragen zwischenspeichert 21 Im Oktober 2004 wurde MySQL 4 1 veroffentlicht Es bietet eine Datenspeicherung in unterschiedlichen Zeichensatzen pro Tabelle an unter anderem wird auch Unicode unterstutzt Unterabfragen Subqueries Subselects sind moglich 22 Version 5 0 wurde im Oktober 2005 freigegeben Sie unterstutzt alle im SQL3 Standard definierten Objekttypen Neu in Version 5 ist dabei die Unterstutzung von Views Triggern Stored Procedures und User Defined Functions Im Februar 2008 ubernahm Sun Microsystems MySQL AB Als Kaufwert wird eine Milliarde Dollar genannt davon 200 Millionen in Aktienoptionen 23 24 Im November 2008 25 wurde MySQL 5 1 freigegeben Zu den Neuerungen zahlen ausser Partitionsfunktionen mit denen sehr grosse Tabellen in mehrere physikalische Dateien aufgeteilt werden konnen ein Event Scheduler mit dessen Hilfe zuvor definierte SQL Kommandos in regelmassigen Zeitabstanden ausgefuhrt werden konnen sowie Funktionen des Instanzenmanagers Die API wurde uberarbeitet so dass nun das Laden und Entladen von Komponenten wahrend der Laufzeit und ohne Neustart des Servers moglich ist 26 Im Januar 2010 wurde Sun Microsystems von Oracle gekauft 27 Wenige Monate spater gab Oracle bekannt dass die bereits von MySQL AB begonnene Entwicklung der Datenbank Engine Falcon eingestellt wird Ende 2010 wurde MySQL 5 5 veroffentlicht InnoDB wurde zur Standard Speicherengine Die Performance wurde durch die Nutzung von asynchronem I O verbessert Neu sind auch die Kommandos SIGNAL RESIGNAL die standardkonforme Fehlerbehandlung in Stored Procedures erlauben 28 29 Das im Jahr 2012 veroffentlichte MySQL 5 6 umfasst u a Memcached APIs globale Transaktions IDs und Verbesserungen am PERFORMANCE SCHEMA 30 Im Januar 2009 bereits bevor Oracle MySQL AB kaufte startete Monty Widenius einen GPL Fork MariaDB MariaDB basiert auf der Code Basis von MySQL server 5 5 und hat sich das Ziel gegeben weitgehend die Kompatibilitat zu den von Oracle herausgegebenen MySQL Versionen zu erhalten 31 Die Entwicklung von MySQL 5 7 hat insgesamt uber zwei Jahre in Anspruch genommen bis es schliesslich Ende Oktober 2015 veroffentlicht werden konnte Die neue Version zeichnet sich insbesondere durch eine gesteigerte Performance verbesserte Replikation und Logging aus So erweiterten die MySQL Entwickler beispielsweise den Abfragenoptimierer um ein dynamisches Kostenmodell was eine schnellere Ausfuhrung ermoglicht und dem Nutzer mehr Eingriffsmoglichkeiten bietet 32 Mit einem Versionssprung auf MySQL 8 erschien im Jahr 2018 die nachste Weiterentwicklung Laut der Doku 33 ist die 8er Versionsreihe offenbar ein Upgrade sodass die Versionsnummern momentan zweigleisig gezahlt werden Kritik BearbeitenSeit der Ubernahme von MySQL AB von Sun durch Oracle steht das Datenbanksystem immer haufiger in der Kritik Der Unterschied zwischen der freien und kommerziellen Version von MySQL wird immer gravierender 34 Neue Funktionen sind haufig nur noch in der kommerziellen Version von MySQL enthalten Dazu kommen die nicht offentliche Datenbank mit Fehlermeldungen veraltete Bazaar Archive und fehlende Tests fur die Fehlersuche 35 Seit Ende 2012 erodiert auch der Ruckhalt in der OpenSource Gemeinschaft fur MySQL Nach Fedora und OpenSUSE haben Anfang 2013 auch Slackware und Arch Linux das MySQL Paket durch MariaDB ersetzt einen Fork des Mitbegrunders Widenius Ausloser seien der mangelnde Respekt gegenuber der Gemeinschaft und die zunehmend abgeschottete Entwicklung des RDBMS 36 37 Ebenso wechselte die Wikimedia Foundation Anfang 2013 zu MariaDB Jaroslav Reznik Red Hats Fedora Projekt Manager erklarte dass sich MySQL in Richtung eines geschlossenen Projektes entwickle Alle nutzlichen Informationen zu Sicherheitsfragen CVEs wurden nicht mehr veroffentlicht Es existierten keine vollstandigen Regressionstests mehr und ein sehr grosser Teil der MySQL Bug Datenbank sei nun nicht mehr offentlich 38 Michael Widenius der ehemalige Grunder von MySQL AB kritisiert Oracle scharf Oracle habe klargemacht dass sie kein Interesse an Open Source hatten die Zusammenarbeit mit der Community ablehnten und auch MySQL im Allgemeinen nicht mogen wurden Als Beispiele fur die Missachtung der Open Source Prinzipien nennt er die kommerziellen Erweiterungen fur MySQL die inzwischen nichtoffentliche Fehler Datenbank und den Mangel an Testfallen fur neuen MySQL Code Vorzeige Funktionen wie das Online Backup und Fremdschlussel fur alle Speicher Engines die fur MySQL 6 0 versprochen wurden seien nicht veroffentlicht worden obwohl sie fertig entwickelt und bereit seien Statt Fehler zu beheben entferne Oracle Funktionen Die meisten der ursprunglichen MySQL Entwickler hatten Oracle verlassen Als weitere Beweise fur die Verachtung der MySQL Anwender nennt er den scharfen Anstieg der Lizenz und Support Gebuhren und das Fehlen einer offenen Roadmap 39 Speichersubsysteme BearbeitenMySQL bietet verschiedene Speichersubsysteme Engines an Jede Engine ist fur ein spezielles Einsatz Szenario optimiert Im Vergleich zu der traditionellen Mehrschichtenarchitektur von Datenbanksystemen sind die Engines kein reines Speichersubsystem sondern bieten mehr Funktionalitat So liegt die Verwaltung von Transaktionen von Indizes und referenziellen Integritaten in der Hand der Engine Die einzelnen Speicherengines unterstutzen unterschiedliche Funktionen und weisen je nach Einsatzgebiet eine unterschiedliche Performance auf Je nachdem wozu eine Tabelle benutzt wird z B hauptsachlich lesende SELECT Anfragen oder hauptsachlich schreibende INSERT UPDATE Anfragen sollte eine passende Speicherengine gewahlt werden Ein anderes Kriterium fur die Wahl der Speicherengine kann auch die Notwendigkeit sein eine bestimmte Funktion zu nutzen wie z B Transaktionen oder referenzielle Integritat MySQL kann auch um eigene Speicherengines erweitert werden 40 Neben den von MySQL veroffentlichten und mit MySQL mitgelieferten Engines gibt es auch Engines anderer Hersteller Offizielle Engines Bearbeiten MyISAM Bearbeiten MyISAM bietet schnellen Zugriff auf Tabellen und Indizes ohne Transaktionssicherung Parallele Datenbankzugriffe Concurrency verwaltet MySQL auf Tabellenebene das heisst die komplette Tabelle wird je nach Sperrungsart fur bestimmte Operationen gesperrt Read oder Write Lock Eine Vielzahl von simultanen Lesezugriffen ist moglich da Lesezugriffe nur sogenannte READ Locks akquirieren Diese erlauben es anderen READERN auf den gleichen Datensatz gleichzeitig zuzugreifen Schreibzugriffe mussen allerdings warten bis alle gegenwartigen READER ihre Leseoperationen abgeschlossen haben und damit ihren READ Lock freigeben Ein READER muss somit nur andere WRITER blocken Ein Datensatz der geandert wird kann weder gelesen noch anderweitig 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 Fur einen Querymix der vor allem aus Lesezugriffen besteht ist MyISAM eine sehr effiziente Speicher Engine Weitere Vorteile von MyISAM sind flexibelste Autoincrement Eigenschaft aller Speicherengines MyISAM Tabellen konnen in komprimierte read only Tabellen konvertiert werden MyISAM Tabellen konnen feste Zeilenlange haben die eine schnellere Zeilensuche ermoglicht MyISAM Tabellen konnen 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 konnen und dort sofort als Datenbanktabellen zur Verfugung stehen Machtige VolltextsucheMySQL verwaltet die Zugriffsrechte uber Grant Tabellen in der Datenbank mysql die auch in der neuesten Version ausschliesslich in MyISAM Tabellen gespeichert werden MyISAM kann beim Kompilieren oder Serverstart deshalb nicht ausgeschlossen werden Bis MySQL Version 5 1 war MyISAM ausserdem die Standard Speicher Engine danach nahm InnoDB diesen Platz ein InnoDB Bearbeiten InnoDB bietet transaktionssichere Lese und Schreibzugriffe d h es bietet Begin Commit und Rollback Funktionen Dadurch wird sichergestellt dass eine Abfrage oder ein Satz zusammengehoriger Abfragen entweder ganz oder gar nicht nicht aber unvollstandig ausgefuhrt wird Die gewunschte Isolationsebene der Transaktionen kann eingestellt werden Dadurch kann die Sicherheit der vollstandigen und korrekten Ausfuhrung verringert werden was sich positiv auf die Ausfuhrungsgeschwindigkeit auswirkt InnoDB bietet ferner die Moglichkeit Fremdschlussel Beziehungen zu uberprufen Seit MySQL 5 5 ist InnoDB die Standard Speicher Engine 28 Ab MySQL 5 6 wird auch in InnoDB Tabellen eine Volltextsuche moglich sein 41 Jedoch erfullt InnoDB den SQL3 Standard nicht vollstandig Fremdschlussel werden nur eingeschrankt unterstutzt 42 InnoDB speichert die Tabellenstruktur in einzelnen frm Dateien Nutzdaten und Indizes in einem Tabellenraum Der Tabellenraum wird vor Beginn der Arbeit mit dem Datenbankserver eingestellt und kann sich uber eine oder mehrere Dateien erstrecken Die Dateien des Tabellenraums konnen auf verschiedene Verzeichnisse verteilt werden Die Konfiguration des Tabellenraums kann nicht nachtraglich angepasst werden ohne Datenverlust zu riskieren Nach einer Anderung der Konfiguration des Tabellenraums wird die gesamte Datenbank von einer Sicherungskopie wiederhergestellt MERGE Bearbeiten MERGE bietet die Moglichkeit mehrere Tabellen vom Typ MyISAM mit gleicher Struktur zu einer Tabelle zusammenzufassen und die Zugriffe darauf auszufuhren Dabei konnen komprimierte MyISAM mit nicht komprimierten MyISAM Tabellen zusammengefasst werden Auf diese Weise lasst sich Datenarchivierung realisieren MEMORY HEAP Bearbeiten Management von temporaren Tabellen Die Definition der Tabellen wird auf der Festplatte permanent gespeichert Die Daten werden im Arbeitsspeicher gespeichert Es werden jedoch nicht alle Datentypen unterstutzt Bei einem Neustarten des Servers sind die Tabellenstrukturen noch vorhanden die Inhalte mussen neu eingelesen werden beispielsweise aus permanenten Tabellen Es sind spezielle Verfahren zur Speicherplatz Verwaltung implementiert um den Platz von geloschten Satzen bei der nachsten Einfugung wiederzuverwenden EXAMPLE Bearbeiten Code Beispiel fur die Entwicklung einer eigenen Speicher Engine EXAMPLE hat Funktionen zum Erstellen einer Tabelle die Funktionen zum Schreiben und Lesen der Datensatze sind nur angedeutet Ein SELECT Statement liefert immer eine leere Ergebnismenge BDB Bearbeiten BDB ist die Abkurzung fur Berkeley DB Diese Speicher Engine wurde von Sleepycat Software entwickelt und spater an Oracle verkauft Die BDB bietet Transaktionssicherheit und besondere Vorkehrungen damit bei einem Systemausfall die gespeicherten Daten erhalten bleiben Die BDB Speicher Engine wird ab Version 5 1 nicht mehr weiter unterstutzt FEDERATED Bearbeiten 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 verhalt sich wie ein Client der auf den entfernten Server zugreift Die FEDERATED Engine verhalt sich wie ein foderiertes Informationssystem das bedeutet dass sie die Daten selber nicht speichert sondern Zugriff auf den fernen Server gewahrt wahrend auf diesem ebenfalls auf die Daten zugegriffen werden kann Bei der Version 5 0 kann nur auf andere MySQL Server zugegriffen werden Die Zugangsdaten zu dem entfernten Datenbankserver werden dabei unverschlusselt in der lokalen frm Datei gespeichert Der Zugriff auf das Datenverzeichnis muss auf der Betriebssystemebene eingeschrankt werden um das Auslesen der Zugriffsrechte durch Unbefugte zu verhindern ARCHIVE Bearbeiten Die ARCHIVE Engine ist fur die Speicherung von grossen Datenmengen bei einem moglichst sparsamen Umgang mit dem zur Verfugung stehenden Speicherplatz konzipiert Es konnen keine Indizes erstellt werden Nur die Zugriffe INSERT und SELECT werden unterstutzt Der schnelle Zugriff auf die Daten steht hier nicht im Vordergrund Vor dem Speichern der Daten auf dem Speichermedium werden diese zunachst in einem Kompressionspuffer gesammelt Wenn eine Serie von Einfuge Operationen beendet wird wird der optimale Kompressionsalgorithmus ermittelt und die Daten werden komprimiert ausgegeben Falls wahrend einer Sequenz von Einfuge Operationen von einem anderen Benutzer eine SELECT Anfrage kommt wird eine vorzeitige Kompression und Ausgabe der im Kompressionspuffer gespeicherten Daten erzwungen CSV Bearbeiten Bei der CSV Engine werden die Daten im CSV Format gespeichert Zahlen werden nicht binar sondern als Ziffernfolgen gespeichert die einzelnen Werte werden durch Kommata getrennt BLACKHOLE Bearbeiten BLACKHOLE wurde entwickelt um die Syntax von SQL Statements zu prufen und ein Binarlog zu schreiben Die Daten werden nicht gespeichert Dadurch konnen Syntaxprufungen von SQL Statements ausgefuhrt werden ohne dass Speicherplatz zum Speichern der Daten bereitgestellt werden muss Die Ausgabe des Binarlogs kann uber einen Parameter aktiviert und deaktiviert werden Die BLACKHOLE Engine ist ideal fur die folgenden Aufgaben Syntaxprufung von Dump Dateien Testen der Datenreplikation durch anschliessenden Vergleich der Binarlogs auf dem Master Server und dem Slave Server Zeitmessungen zur Bestimmung des Aufwands fur das Schreiben des Binarlogs NDB Bearbeiten NDB ist die Abkurzung fur Network Data Base Die NDB Speicher Engine ist eine unabhangige Komponente die die persistente Speicherung von Daten ermoglicht und fur die Koordination aller Zugriffe auf Datenknoten in einem MySQL Cluster zustandig ist 43 Anwendungen konnen direkt auf die NDB Speicher Engine uber die NDB API oder uber einen MySQL Knoten zugreifen Der Zugriff uber einen MySQL Knoten ist fur Anwendungsprogrammierer wesentlich einfacher zu gestalten da in diesem Fall Standard SQL Befehle verwendet werden konnen und das Erlernen der NDB Spezialitaten nicht notwendig ist Die NDB API ist eine multithreading fahige Schnittstelle zur Annahme aller ankommenden Datenanfragen 43 Fur jede Anfrage werden ein oder mehrere Threads gestartet Auf die NDB API ist nur ein sequenzieller Zugriff moglich wodurch die Leistung des Clusters bei sehr vielen ankommenden Anfragen vermutlich eingeschrankt wird Engines anderer Anbieter Bearbeiten Neben den offiziellen Engines bieten mehrere Hersteller auch andere Engines mit anderen Eigenschaften oder Zusatzfunktionen Einige seien hier beispielhaft erwahnt Revision Engine Bearbeiten Die Revision Engine von DDEngine fugt eine automatische Versionierung als Plugin auf Ebene einer Speicherengine hinzu Neben dem reinen Speichern von Daten kann diese Engine dadurch gewahrleisten dass Daten so wieder herstellbar sind wie sie zu einem bestimmten Zeitpunkt waren Diese Eigenschaft kann z B genutzt werden um den Verlauf von Produkteigenschaften zu speichern oder um gesetzliche Auflagen zu erfullen Um die Daten physisch zu speichern werden die mitgelieferten Storage Engines benutzt 44 Brighthouse Engine Bearbeiten Die Firma Infobright 45 stellt die Brighthouse Engine zur Verfugung Sie ist fur Data Warehouse Anwendungen konzipiert und auf die Verarbeitung besonders grosser Datenmengen ausgerichtet Indizes werden nicht unterstutzt Die Daten werden komprimiert gespeichert wodurch nach Angaben des Herstellers bis zu 90 des Speicherplatzes eingespart werden konnen 46 Partitionierung BearbeitenAb der Version 5 1 konnen MySQL Tabellen partitioniert werden Es stehen mehrere Partitionierungsarten zur Auswahl 47 Range Partitionierung Bearbeiten Bei der Range Partitionierung werden Wertebereiche fur die einzelnen Partitionen definiert In dem Beispiel wird eine Tabelle mit drei Partitionen erstellt 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 einfugen bzw in der Spalte ed Beispiel unten alle Datumswerte einfugen 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 Bearbeiten Bei der List Partition werden die Werte einzeln aufgezahlt 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 Bearbeiten Bei der Hash Partitionierung wird die Verteilung der Satze auf die einzelnen Partitionen vom DBMS ermittelt Bei der regularen Hash Partitionierung wird die Modulo Funktion als Hashfunktion verwendet Region modulo 4 Sie hat den Vorteil dass in der Spalte region alle Integer Zahlen eingefugt werden konnen 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 Hashfunktion zum Einsatz Key Partitionierung Bearbeiten Bei der Key Partitionierung wird implizit eine Hashfunktion verwendet Als Input fur die Funktion dient der Primarschlussel 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 Bearbeiten Bei jeder Art von Partitionierung konnen zusatzlich Subpartitions definiert werden Dadurch ist eine noch granularere Aufteilung der Daten moglich Administration BearbeitenUnter 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 Kommandozeilenwerkzeuge Bearbeiten Zur Verwaltung von MySQL Datenbanken dient der mitgelieferte Kommandozeilen Client Kommandos mysql und mysqladmin Zum Funktionsumfang gehoren ausserdem die folgenden Kommandozeilenwerkzeuge mysqlimport kann als Ersatz fur LOAD DATA INFILE verwendet werden Durch Angabe von Parametern konnen sich Benutzer anmelden und das Verhalten des Programms steuern mysqldump kann als Ersatz fur SELECT INTO OUTFILE verwendet werden Zusatzlich kann die Tabellenstruktur als Dump ausgegeben werden Durch Angabe von Parametern konnen sich Benutzer anmelden und das Verhalten des Programms steuern perror zeigt zu Fehlercodes erweiterte Informationen an Als Parameter wird beim Programmstart der Errorcode benotigt mysqlshow gibt Metadaten zu Datenbanken Tabellen oder einzelnen Tabellenspalten aus Grafische Werkzeuge Bearbeiten Als grafische Verwaltungssoftware bietet Oracle die Software MySQL Workbench an Sie ist fur die Betriebssysteme Windows macOS und Linux verfugbar Eine von vielen Alternativen ist die in der Skriptsprache PHP geschriebene Open Source Anwendung phpMyAdmin Die grafische Benutzeroberflache lasst sich uber einen Browser bedienen phpMyAdmin wird hauptsachlich zur Verwaltung von MySQL Datenbanken auf Webservern verwendet auf denen die einzelnen Benutzer keine Rechte haben mysql und mysqladmin direkt auszufuhren Zum Erstellen und Verwalten von Backups der Datenbanken auf Webservern werden wenn keine Rechte fur die Ausfuhrung von mysqldump vorliegen haufig die ebenfalls in PHP geschriebenen Open Source Anwendungen phpMyBackupPro eingesetzt Lizenz und Support BearbeitenFur 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 Unterstutzung fur den Einsatz von MySQL bietet zunachst das offizielle Handbuch 48 Ausserdem gibt es mehrere Foren und IRC Channels in denen Fragen kostenlos beantwortet werden Daneben bietet Oracle auch kostenpflichtige Support Lizenzen in drei Leistungsstufen an MySQL Enterprise Silver Gold und Platinum 49 Sie unterscheiden sich in Leistungsumfang und Preis 50 51 Mit MySQL verwandte Produkte BearbeitenForks Bearbeiten Von MySQL wurde das Datenbank Projekt MariaDB abgespalten um den fur MySQL verwendeten Quellcode weiterhin frei zur Verfugung zu stellen und aktiv weiterzuentwickeln Im Jahr 2008 folgte mit Drizzle ein weiterer Fork 52 53 54 Percona Server fur MySQL ist ein fork der durch die Firma Percona entstand Es fokussiert sich auf die Nutzung auf Servern 55 WebscaleSQL war ein Zweig im MySQL Projekt der durch die Zusammenarbeit von Facebook Google LinkedIn Twitter und der Alibaba Group entstand Er hatte das Ziel MySQL besser auf die Bedurfnisse der genannten Firmen anzupassen 56 Die Weiterentwicklung des Zweigs wurde inzwischen eingestellt 57 OurDelta erstellt ein eigenes SQL Programm dessen Version 5 0 auf MySQL basierte 58 Weitere Produkte Bearbeiten MySQL Cluster ermoglicht die Installation von MySQL auf einem Computercluster in einer Shared Nothing Architecture Literatur BearbeitenStefan Proll Eva Zangerle Wolfgang Gassler MySQL Das Handbuch fur Administratoren Rheinwerk Verlag 2015 ISBN 978 3 8362 3753 6 Weblinks Bearbeiten Commons MySQL Sammlung von Bildern Videos und Audiodateien MySQL com offizielle Website MySQL Documentation offizielle DokumentationEinzelnachweise Bearbeiten Changes in MySQL 8 1 0 2023 07 18 Innovation Release 18 Juli 2023 abgerufen am 20 Juli 2023 a b c d e Supported Platforms MySQL Database englisch abgerufen am 28 Juli 2018 https www openhub net p mysql analyses latest languages summary github com abgerufen am 27 September 2017 www mysql com abgerufen am 27 September 2017 Michael Widenius Michael Widenius interviewed at MySQL Conference 2010 O Reilly April 2010 abgerufen am 16 November 2016 englisch DB Engines Ranking Abgerufen am 8 September 2013 Vorlage Cite web temporar Hilfesystem der Version MySQL 5 0 Kapitel 1 3 und 1 4 oder http dev mysql com doc refman 5 1 en history html 1 2 3 History of MySQL In MySQL Oracle abgerufen am 1 Juli 2023 englisch MySQL is named after co founder Monty Widenius s daughter My mysql de YouTube Flickr and Wikipedia to Share their Secrets of Success at the 2007 MySQL Conference amp Expo O Reilly 10 April 2007 abgerufen am 29 September 2012 Vorlage Cite web temporar MySQL Customers by Industry Web Social Networks Abgerufen am 5 Januar 2012 Vorlage Cite web temporar Jason Sobel Keeping Up In Facebook Blog 21 Dezember 2007 abgerufen am 30 Oktober 2008 Vorlage Cite web temporar Om Malik Facebook s Insatiable Hunger for Hardware GigaOM 25 April 2008 abgerufen am 30 Oktober 2008 Vorlage Cite web temporar Big and Small Data at Twitter MySQL CE 2011 myNoSQL 17 April 2011 abgerufen am 20 Oktober 2011 Vorlage Cite web temporar Informationen zu MySQL Embedded Server 5 1 abgerufen am 27 September 2010 https www informatik aktuell de betrieb datenbanken mariadb und mysql vergleich der features html Vergleich MySQL und MariaDB a b Fur weitere Details siehe vor allem Sasha Pachev Understanding MySQL Internals Chapter 9 Parser and Optimizer O Reilly Die fur das Parsing zustandigen Module befinden sich in den Dateien sql sql yacc yy sql gen lex hash cc and sql gen lex cc Five Questions With Michael Widenius Founder And Original Developer of MySQL Opensourcereleasefeed com archiviert vom Original am 13 Marz 2009 abgerufen am 8 Juni 2009 Vorlage Cite web temporar 1 2 Vorlage Toter Link dev mysql com Reference Manual der Version 4 0 Seite nicht mehr abrufbar festgestellt im Mai 2023 Suche in Webarchiven bzw Suche Webcitearchiv in Webarchiven archivierte Webseiten von WebCite sind seit 2021 nicht mehr abrufbar Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot dev mysql com 1 2 Vorlage Toter Link dev mysql com MySQL Reference Manual der Version 4 1 Seite nicht mehr abrufbar festgestellt im Mai 2023 Suche in Webarchiven bzw Suche Webcitearchiv in Webarchiven archivierte Webseiten von WebCite sind seit 2021 nicht mehr abrufbar Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot dev mysql com Sun ubernimmt MySQL News bei TecChannel Sun kauft MySQL AB Memento vom 31 Juli 2008 im Internet Archive heise de dev mysql com Memento des Originals vom 17 Februar 2012 im Internet Archive Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot dev mysql com Oracle Pressemitteilung Oracle Completes Acquisition of Sun a b oracle com heise de Neuerungen in MySQL 5 6 Memento des Originals vom 23 April 2011 im Internet Archive Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot dev mysql com englisch abgerufen am 23 Juni 2012 MariaDB versus MySQL Kompatibilitat In MariaDB KnowledgeBase mariadb com abgerufen am 8 Februar 2017 Press Release Oracle Announces General Availability of MySQL 5 7 englisch abgerufen am 30 August 2017 Doku pro linux de golem de pro linux de Slackware wechselt zu MariaDB Von Mirko Lindner Mo 25 Marz 2013 14 07 blog wikimedia org Wikimedia Foundation wechselt zu MariaDB zdnet com computerworld com au Memento des Originals vom 21 Februar 2016 im Internet Archive Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www computerworld com au Reference Manual von MySQL Version 5 0 Kapitel 14 Speicher Engines und Tabellentypen golem de dev mysql com zu Fremdschlussel Beschrankungen in MySQL 5 6 Nicht mehr online verfugbar dev mysql com archiviert vom Original am 16 April 2015 abgerufen am 1 Februar 2012 Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot dev mysql com a b Larissa Janssen Hochleistungs Datenbanksysteme Theorie und Praxis S 190 191 ddengine org Memento des Originals vom 10 Mai 2012 im Internet Archive Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www ddengine org Website der Firma Infobright in Toronto Informationen zum Thema Data Warehouse Memento des Originals vom 24 Dezember 2011 im Internet Archive Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www mysql de dev mysql com dev mysql com mysql de Angebot an Support Leistungen von Oracle Oracle erhoht Preise fur MySQL Artikel MySQL Forks und Patches Memento des Originals vom 23 Dezember 2010 im Internet Archive Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www admin magazin de drizzle org Memento des Originals vom 14 Januar 2013 im Internet Archive Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www drizzle org krow livejournal com Percona Server for MySQL Abgerufen am 29 Juli 2022 englisch WebScaleSQL MySQL for Facebook sized databases Abgerufen am 29 Juli 2022 englisch WebScaleSQL We re Gonna Need A Bigger Database Abgerufen am 26 Januar 2023 OurDelta Open Query 22 August 2017 abgerufen am 29 Juli 2022 australisches Englisch Normdaten Sachbegriff GND 4559381 4 lobid OGND AKS Abgerufen von https de wikipedia org w index php title MySQL amp oldid 235115380