Deutschland: +49 89 143 01280
USA Subscription Renewals: +1-866-830-4410
EMEA: +353 1 8031050
Die MySQL Partitionierung ermöglicht Entwicklern und DBAs eine Verbesserung der Leistung sowie eine vereinfachte Verwaltung sehr umfangreicher Datenbanken. MySQL unterstützt die horizontale Partitionierung, bei der die Zeilen einer Datenbank in kleinere Datensätze unterteilt und anschließend auf verschiedene Verzeichnisse und Festplatten verteilt werden.
Durch die Partitionierung kann eine höhere Abfrageleistung erzielt werden, da für spezifische Operationen nicht auf eine einzelne große Tabelle, sondern nur auf kleinere Datensätze zugegriffen werden muss. Es kann außerdem eine Verteilung von partitionierten Tabellen über verschiedene physische Laufwerke durchgeführt werden, was zu einer Senkung der physische E/A-Last führt, wenn auf mehrere Partitionen gleichzeitig zugegriffen wird.
Die Partitionierung vereinfacht zudem die Datenverwaltung. Ein DBA kann beispielsweise spezifische Partitionen in einer partitionierten Tabelle löschen, während die verbleibenden Partitionen intakt bleiben (im Gegensatz zur Durchführung einer Massenlöschoperation für die gesamte Tabelle, die zu einer Fragmentierung führt), ohne dass der DBA eingreifen muss.
Verschiedene Partitionierungsmethoden ermöglichen DBAs eine präzise Steuerung, wie die Daten partitioniert werden:
Jede Partition enthält Zeilenzuordnungen zu einem spezifischen Satz (Bereich) von Werten. Die Bereichspartitionierung ist nützlich, wenn häufig Abfragen ausgeführt werden, die direkt von der zur Partitionierung der Tabelle verwendeten Spalte abhängen; oder zum schnellen Löschen alter Daten durch das einfache Löschen einer Tabelle.
Die Listenpartitionierung ähnelt der Bereichspartitionierung. Der Hauptunterschied liegt darin, dass der Partitionierungsmodus eine Datensegmentierung basierend auf einer vordefinierten, vom DBA angegebenen Liste von Werten ermöglicht, statt einen Satz fortlaufender Wertebereiche als Grundlage für die Segmentierung zu verwenden.
Die Spaltenpartitionierung ermöglicht die Verwendung mehrerer Spalten in Partitionierungsschlüsseln. Die verschiedenen Spalten werden sowohl für die Platzierung von Zeilen in Partitionen als auch dazu verwendet, die bei Ausschlussoperationen für Partitionen auf übereinstimmende Zeilen zu prüfenden Partitionen zu ermitteln. Die Spaltenpartitionierung ist eine Erweiterung der Bereichs- und Listenpartitionierung.
Die Partitionierung nach Hash wird vor allem deshalb verwendet, um eine gleichmäßige Verteilung von Daten auf eine vordefinierte Anzahl von Partitionen sicherzustellen. Bei der Bereichs- oder Listenpartitionierung müssen Sie ausrücklich angeben, in welcher Partition ein vorgegebener Spaltenwert gespeichert werden soll. Bei der Hash-Partitionierung übernimmt MySQL diese Aufgabe für Sie. Sie müssen lediglich einen Spaltenwert oder einen Ausdruck basierend auf einem Spaltenwert für das Hashing und die Anzahl an Partitionen angeben, auf die die partitionierte Tabelle aufgeteilt werden soll.
Eine Variante der Hash-Partitionierung ist das lineare Hashing, bei dem ein komplexerer Algorithmus zur Partitionierung der Daten verwendet wird. Dieser ermöglicht ein weitaus schnelleres Hinzufügen, Löschen, Zusammenführen und Aufteilen von Partitionen, wenn es um Multi-Terabyte-Tabellen geht.
Die Partitionierung nach Schlüssel ähnelt der Partitionierung nach Hash. MySQL garantiert eine gleichmäßige Verteilung der Daten über einen vom System erzeugten Hash-Schlüssel – anstelle von benutzerdefinierten Ausdrücken wie bei der Hash-Partitionierung. Bei der Schlüsselpartitionierung können größere Bereiche von Spaltendatentypen für die Partitionierung herangezogen werden.
Die Unterpartitionierung ermöglicht eine weitere Unterteilung jeder Partition in einer partitionierten Tabelle und ist für die Verwendung mit besonders großen Tabellen gedacht. Diese Art der Partitionierung ermöglicht eine Verteilung von Daten und Indizes über viele Server und Festplatten.
Durch Verwendung der geeigneten WHERE- oder ON-Klausel in einer Abfrage kann der MySQL Optimizer lediglich auf die Partitionen zugreifen, in denen übereinstimmende Werte vorhanden sind. Als Ergebnis kann eine Abfrage um ein Vielfaches schneller ausgeführt werden als dieselbe Abfrage, die für eine nicht partitionierte Tabelle ausgeführt wird.
