Was ist MySQL?

MySQL ist ein relationales Open-Source-Datenbankmanagementsystem (Relational Database Management System, RDBMS), das einfach implementiert und verwaltet werden kann – sowohl on-premise als auch über die Cloud durch einen Hosting-Provider. Durch Replikation werden viele gleichzeitig ablaufende Schreibvorgänge und Skalierungen unterstützt (allerdings wird dadurch die Komplexität erhöht). Aus diesem Grund und wegen seiner relativ geringen Wartungs-/Skalierungskosten wird es in erster Linie als Produktionsdatenbank verwendet.

Das 1994 entwickelte MySQL ist nicht nur eines der am besten etablierten RDBMS, sondern hat sich seitdem auch erheblich weiterentwickelt. Neunzig Prozent aller Websites nutzen MySQL, darunter Riesendienste wie Youtube, Twitter, Wikipedia und Facebook.

Die Wahl von MySQL als Datenbank

Open-Source-Charakter

MySQL wurde als Open-Source-Lösung entwickelt, sodass es auf handelsüblicher Hardware eingesetzt und mit vorhersehbaren Kosten skaliert werden kann. Dank seiner umfassenden Kompatibilität kann MySQL außerdem jederzeit gegen eine maßgeschneiderte Lösung ausgetauscht werden (viele konkurrierende transaktionale Datenbanken sind genau aus diesem Grund MySQL-konform).

Hohe Leistung

MySQL ist das Datenbank-Äquivalent zu einem Rennwagen, bei dem die Rücksitze entfernt wurden, damit er schneller fährt. Die Entwickler von MySQL entschieden sich dafür, Geschwindigkeit und Leistung den Vorrang vor Funktionsbreite zu geben. Das macht MySQL im Vergleich zu transaktionalen Datenbanken von anderen Anbietern zu einer etwas limitierten, dafür aber schnelleren Datenbank.

Verfügbarkeit und Skalierbarkeit

Die Fähigkeit von MySQL, für hohe Verfügbarkeit und Skalierbarkeit repliziert und verteilt zu werden, trägt zu seiner hohen Leistung bei. Höhere Verfügbarkeit und Skalierbarkeit bringen jedoch höhere Komplexität und Kosten mit sich.

Wozu ist MySQL besonders gut geeignet?

Webanwendungen

MySQL wurde in erster Linie für Webanwendungen entwickelt. Es eignet sich besonders für strukturierte und gut geplante Webanwendungen. Oracle beschreibt in einer hervorragenden Ressource, warum MySQL eine geeignete Lösung für Webanwendungen ist.

Neue Unternehmen ohne spezialisiertes Datenteam

MySQL ist aufgrund seiner Zuverlässigkeit, Vielseitigkeit und Leistungsfähigkeit oft die erste Wahl für kleinere Unternehmen oder Startups. MySQL ist auch deshalb eine attraktive Option, weil sich eine MySQL-Produktionsdatenbank relativ einfach zur Verwendung als analytische Datenbank replizieren lässt. MySQL verfügt über eine robuste Entwickler-Community, ist eines der am besten dokumentierten DB-Systeme auf dem Markt und wird von einer großen Anzahl von Anbietern vertrieben.

Hosting-Optionen und Preise für MySQL

Die MySQL-Software ist Open Source und kann kostenlos heruntergeladen werden. MySQL wird außerdem von zahlreichen Cloud-Anbietern bereitgestellt.

On-Premise-Implementierung von MySQL

Bei einem On-Premise-Einsatz kann die MySQL-Software selbst kostenlos heruntergeladen und implementiert werden. Die Gesamtbetriebskosten hängen jedoch stark von der zugeteilten Hardware ab: je mehr Festplatten-, CPU- und Speicherplatz, desto höher die Kosten. Bei einer selbst gehosteten MySQL-Lösung kommen noch Kosten für Serverspeicher sowie dedizierte Wartungskosten hinzu.

MySQL-Hosting in der Cloud

Das Hosting von MySQL in der Cloud macht die Verwaltung weniger komplex als bei einer On-Premise-Lösung, bietet jedoch weniger Transparenz und Kontrolle.

Es gibt Dutzende von MySQL-Anbietern. Zu den größten gehören:

Amazon RDS

Die On-Demand-Preise von Amazon RDS beginnen bei nur ein paar Cent pro Stunde für die kleinste Instanz, steigen bei mehr Leistung jedoch kräftig an. Bei längerfristiger Bindung gelten wieder niedrigere Preise. Amazon bietet Multi-Availability-Zone-Bereitstellungen an, die „eine verbesserte Verfügbarkeit und Widerstandsfähigkeit für Datenbankinstanzen bieten“. Die Speicherkosten sind nicht enthalten und werden nach GB pro Monat berechnet. Es fallen keine zusätzlichen Kosten für Backup-Speicherung an.

Google Cloud SQL

Google bietet zwei verschiedene Preisschemata für Cloud SQL (sein MySQL-Angebot) an. Die erste Generation wird als Komplettpaket geliefert oder auf tatsächlicher Gebrauchs-Basis berechnet. Die zweite Generation wird für jede Minute, in der die Instanz ausgeführt wird, berechnet und ist besser konfigurierbar.
Mit dem Preisrechner von Google können Sie abschätzen, welcher Plan für Ihre spezifischen Anforderungen am besten geeignet ist. Und: Google bietet eine Gutschrift in Höhe von 300 USD für die ersten 12 Monate an.

Oracle Cloud

Die Preise für Oracle Cloud sind mit stündlichen und monatlichen Plänen für die Service-Verfügbarkeit relativ unkompliziert. Für die Speicherung gelten Staffelpreise auf Stundenbasis, die bei wenigen Cent pro GB pro Monat beginnen. Der Monatsplan für die Speicherung beginnt bei 30 USD pro TB/Monat. Für ausgehende Datenübertragungen fallen zusätzliche Kosten an, falls diese ein GB pro Monat überschreiten.

MySQL-Architektur

Die Architektur von MySQL besteht aus mehreren Ebenen:

Anwendungsebene

Die Anwendungsebene von MySQL ist die Art und Weise, wie sich verschiedene Clients mit MySQL verbinden und Abfragen stellen. Anwendungen wie MySQL Workbench und Looker stellen eine Verbindung mit der MySQL-Anwendungsebene her, um Abfragen zu senden und den Benutzerzugriff auf die Datenbank zu steuern.

Abfrageprozessor

Wenn von der Anwendungsebene eine Abfrage zum Lesen oder Schreiben von Daten aus der untergeordneten Speicherebene gestellt wird, übersetzt der Abfrageprozessor diese Abfrage in einen Abfrageplan, den die Datenbank ausführen kann.

Transaktionsmanagement

MySQL ist ACID-konform, d. h. ein Satz von Abfragen kann in einer Transaktion gekapselt werden. Das führt dazu, dass entweder alle  erfolgreich sind oder alle fehlschlagen. Der Transaktionsmanager regelt dies, indem er einen COMMIT-Befehl zur Ausführung jeder Transaktion erteilt. Wenn eine Transaktion fehlschlägt, erteilt der Transaktionsmanager einen ROLLBACK-Befehl. Dieser macht alle Änderungen an der Datenbank, welche durch die fehlgeschlagene Transaktion erfolgten, rückgängig.

Recovery-Management

MySQL ist äußerst widerstandsfähig. Der Recovery-Manager ist dafür verantwortlich, die Datenbank im Falle eines Absturzes in ihren letzten stabilen Zustand zurückzuversetzen. Er protokolliert jede einzelne Operation, die in der Datenbank (seit ihrem Beginn) abgeschlossen wurde. Im Falle eines Absturzes führt er jeden Befehl im Protokoll aus, wodurch die Datenbank effektiv wieder in ihren letzten stabilen Zustand zurückversetzt wird.

Speichermanagement

Der Speichermanager ist für die Zuweisung von Speicherressourcen verantwortlich, die erforderlich sind, um Daten von der physischen Platte zu ziehen und die Ergebnisse an den Client zu liefern.

Anpassbare Datenspeicherung

Das MySQL-RDBMS unterscheidet sich bezüglich der Speicher-Engines aufgrund seiner modularen Architektur stark von anderen transaktionalen Datenbanken. Da der Server-Kerncode von MySQL von der Speicher-Engine getrennt ist, können Speicher-Engines in MySQL ein- und ausgelagert werden. Dadurch erhalten Benutzer die Flexibilität und die Fähigkeit, ihre Datenspeicher an ihre Bedürfnisse anzupassen.

Das ist von besonderer Bedeutung, da die jeweils verwendete Speicher-Engine die Datenbankleistung erheblich beeinflusst. Die Dokumentation von MySQL enthält eine umfassende Liste der unterstützten Speicher-Engines.

Kompatibilität

MySQL unterstützt Transaktionen mit der Integration der BDB- und InnoDB-Engines (die Standard-Engine). Das macht die Ausführung von simultanen Schreibvorgängen sicherer und begründete den Trend zur Integration von Funktionen, die in Unternehmensumgebungen benötigt werden.

MySQL läuft auf Linux, Solaris, Windows, AIX und HPUX und bietet sowohl 32-Bit- als auch 64-Bit-Versionen.

MySQL ist weitgehend kompatibel mit MariaDB und Amazon Aurora. Wie bei allen Dialekten gibt es einige Unterschiede (z. B. unterstützt Aurora nur Lese-Replikate), aber die drei Dialekte sind eng miteinander verwandt. Ein Vorteil von MariaDB ist, dass es über Fensterfunktionalität verfügt, während das bei MySQL nicht der Fall ist.

Datentypen

MySQL arbeitet besser mit gut strukturierten Transaktionsdaten und Daten, die in der dritten normalen Form strukturiert sind. MySQL funktioniert außerdem besser mit kleineren, vollständigeren Datensätzen. Es funktioniert dagegen nicht sehr gut mit spärlichen Daten oder breiten Tabellen. Je spärlicher die Tabelle, desto schwieriger ist es, sie zu schreiben; je breiter die Tabelle, desto schwieriger ist es, sie zu lesen.

MySQL kann große bzw. sogar sehr große Tabellen unterstützen, allerdings mit viel größerer Komplexität und höheren Kosten. MySQL ist in hohem Maße von der Indexierung abhängig. Daher kann die Leistung stark davon beeinflusst werden, ob Sie im Voraus wissen, welche Arten von Abfragen Sie ausführen werden.

Maximal empfohlene Datengröße

Auch wenn es keine feste Obergrenze gibt, würden sicher nur wenige empfehlen, mehr als eine Milliarde Zeilen zu laden. InnoDB-Tabellen haben eine fest definierte Obergrenze von 1017 Spalten.

Implementierung und Leistungsabstimmung von MySQL

Implementierung von MySQL

Man könnte ein ganzes Buch über die Feinabstimmung von MySQL schreiben (und davon gibt es mittlerweile mehrere!).

Aber es reicht zu sagen, dass es mehr Anpassungsoptionen (und mehr Möglichkeiten, sich ins eigene Fleisch zu schneiden) gibt, wenn man lokal hostet. Bei der Wahl einer Cloud-gehosteten Lösung ist man durch die Erstellung eines Kontos bei Google Cloud Storage oder eines Clusters bei Amazon RDS in Minutenschnelle einsatzbereit. Da es sich um gehostete Lösungen handelt, werden die meisten Dinge, um die man sich normalerweise bei der Bereitstellung auf eigenen Servern kümmern müsste, für Sie erledigt.​​​​​​​

Einfügen neuer Daten-Streams ist beliebt, wenn sie transaktional verwendet werden. Aber auch Batch-Inserts sind möglich.

Wartung und Skalierung von MySQL

MySQL funktioniert ohne Anpassungen gut für kleine Datensätze und Arbeitslasten. Da jedoch sowohl die Daten als auch der Bedarf an Gleichzeitigkeit schwanken, kann MySQL auf verschiedene Weise skaliert werden.

Replikation: Die Replikation ist eine übliche Methode zur Konfiguration von mehreren Servern unter einer einzigen MySQL-Instanz, wobei jeder Replik bestimmte Aufgaben zugewiesen werden.

Es gibt zwei Hauptarten der Replikation:

  • die Master-Slave-Replikation, die dadurch gekennzeichnet ist, dass eine Produktionsdatenbank für das Schreiben von Daten zuständig ist, während es potenziell mehrere Slave-Datenbanken als schreibgeschützte Replikate der Master-Datenbank gibt. Auf diese Weise kann ein Administrator gleichzeitig ablaufende Lesevorgänge auf der Instanz skalieren.

  • die Multi-Master-Replikation, die der Master-Slave-Replikation ähnlich ist, aber sowohl die Skalierung von Schreibvorgängen als auch die Erhöhung der Verfügbarkeit ermöglicht. Dieses Replikationssystem ist jedoch komplexer, was die Latenzzeit erhöht.

Clustering: Clustering ist etwas anderes als Replikation. Anstatt die Daten über viele verschiedene Datenbanken zu duplizieren, um Lese- oder Schreibvorgänge zu skalieren, werden die Daten selbst auf verschiedene Server verteilt, um die Leistung zu erhöhen. Das Implementieren eines MySQL-Clusters erfordert auch die Implementierung einer für das Clustering spezifischen Speicher-Engine, die als MySQL NDB-Cluster bezeichnet wird.

Partitionierung: Partitionierung ist eine Möglichkeit, Datenbanktabellen in kleinere Teilmengen aufzuteilen, um die Indexgröße zu verringern und damit die Leistung zu erhöhen. Eine beliebte Methode der Partitionierung ist ein als Sharding bezeichneter Prozess. Sharding ist ein Verfahren, bei dem Tabellen horizontal aufgebrochen und über verschiedene Datenbanken auf einem oder mehreren Rechnern partitioniert werden. Pinterest ist bekannt für die Skalierung seiner MySQL-Datenbank. Das Unternehmen verwendet Sharding, Master-Master-Replikation und Clustering, um seine massiven Tabellen über eine einzige MySQL-Instanz zu verteilen.

Entdecken Sie Ihre Liebe zur Analytik.

Business Intelligence, Big-Data-Analyse oder eine 360°-Ansicht Ihrer Kunden.
Was auch immer Sie benötigen, Looker steht Ihnen zur Seite. Sprechen Sie einfach mit unseren Datenexperten.

Demo anfordern