[+/-]
Dieser Abschnitt beschreibt die in MySQL 5.1 verfügbaren Arten der Partitionierung, nämlich:
RANGE
-Partitionierung
(Bereichspartitionierung): Weist den Partitionen Zeilen zu, je
nachdem, ob ihre Spaltenwerte in einen bestimmten Wertebereich
fallen. Siehe Abschnitt 17.2.1, „RANGE
-Partitionierung“.
LIST
-Partitionierung
(Listenpartitionierung): Ähnelt der Bereichspartitionierung,
nur dass hier die Partition anhand der Frage ausgewählt wird,
ob sich die Spaltenwerte in einer Menge eigenständiger Werte
wiederfinden. Siehe Abschnitt 17.2.2, „LIST
-Partitionierung“.
HASH
-Partitionierung:
Hierbei wird eine Partition anhand des Rückgabewerts eines
benutzerdefinierten Ausdrucks ausgewählt, der auf
Spaltenwerten der Zeilen operiert, die in die Tabelle
eingefügt werden sollen. Die Funktion kann jeden in MySQL
zulässigen Ausdruck enthalten, der einen nichtnegativen
Integer ergibt. Siehe Abschnitt 17.2.3, „HASH
-Partitionierung“.
KEY
-Partitionierung
(Schlüsselpartitionierung): Ähnelt der Hash-Partitionierung,
aber mit dem Unterschied, dass nur bestimmte auszuwertende
Spalten übergeben werden und der MySQL Server seine eigene
Hash-Funktion liefert. Die Spalte(n) dürfen nur Integer-Werte
enthalten. Siehe Abschnitt 17.2.4, „KEY
-Partitionierung“.
Bitte vergessen Sie nicht: Egal welche Art von Partitionierung Sie
verwenden, Partitionen werden immer automatisch der Reihe nach bei
ihrer Erstellung durchnummeriert, und zwar beginnend mit
0
. Wenn eine neue Zeile in eine partitionierte
Tabelle eingefügt wird, wird die richtige Partition anhand dieser
laufenden Nummern gefunden. Wenn beispielsweise Ihre Tabellen 4
Partitionen nutzen, so habe diese Partitionen die Nummern
0
, 1
, 2
und 3
. Bei einer RANGE
- oder
LIST
-Partitionierung müssen Sie
gewährleisten, dass für jede Partitionsnummer auch eine
Partition definiert ist. Bei einer
HASH
-Partitionierung muss die verwendete
benutzerdefinierte Funktion einen Integer größer
0
zurückgeben. Bei einer
KEY
-Partitionierung wird dieses Problem
automatisch von der Hash-Funktion gelöst, die der MySQL Server
intern einsetzt.
Partitionsnamen halten sich generell an dieselben Regeln, die auch
für andere MySQL-Bezeichner gelten, wie beispielsweise die für
Tabellen und Datenbanken. Allerdings müssen Sie daran denken,
dass Partitionsnamen nicht zwischen Groß- und Kleinschreibung
unterscheiden. So würde beispielsweise die folgende
CREATE TABLE
-Anweisung scheitern:
mysql>CREATE TABLE t2 (val INT)
->PARTITION BY LIST(val)(
->PARTITION mypart VALUES IN (1,3,5),
->PARTITION MyPart VALUES IN (2,4,6)
->);
ERROR 1488 (HY000): All partitions must have unique names in the table
Der Fehler liegt daran, dass MySQL keinen Unterschied zwischen den
Partitionsnamen mypart
und
MyPart
erkennen kann.
In den folgenden Abschnitten geben wir nicht immer alle nur
denkbaren Syntaxvarianten zur Erstellung der Partitionstypen an.
Diese Informationen können Sie unter
Abschnitt 13.1.5, „CREATE TABLE
“, nachschlagen.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.