Die Partitionierung von Hash- oder schlüsselpartitionierten
Tabellen lässt sich in ähnlicher Weise ändern, wobei sich
Tabellen mit diesen beiden Formen der Partitionierung in
mehrerer Hinsicht von bereichs- oder listenpartitionierten
Tabellen unterscheiden. Daher werden in diesem Abschnitt nur
Änderungen von Hash- oder schlüsselpartitionierten Tabellen
behandelt. Das Hinzufügen und Löschen der Partitionen von
bereichs- oder listenpartitionierten Tabellen wird in
Abschnitt 17.3.1, „Verwaltung von RANGE
- und
LIST
-Partitionen“,
beschrieben.
Sie können Partitionen aus HASH
- oder
KEY
-partitionierten Tabellen nicht genauso
löschen wie aus RANGE
- oder
LIST
-partitionierten Tabellen. Doch zum
Zusammenführen von HASH
- oder
KEY
-partitionierten Tabellen können Sie
ebenfalls den ALTER TABLE ... COALESCE
PARTITION
-Befehl verwenden. Angenommen, Sie haben eine
Tabelle mit Kundendaten, die in 12 Partitionen aufgeteilt ist.
Diese clients
-Tabelle ist folgendermaßen
definiert:
CREATE TABLE clients ( id INT, fname VARCHAR(30), lname VARCHAR(30), signed DATE ) PARTITION BY HASH( MONTH(signed) ) PARTITIONS 12;
Um die Anzahl der Partitionen von 12 auf 6 zu reduzieren,
führen Sie folgenden ALTER TABLE
-Befehl aus:
mysql> ALTER TABLE clients COALESCE PARTITION 6;
Query OK, 0 rows affected (0.02 sec)
COALESCE
funktioniert genauso gut mit
HASH
-, KEY
-,
LINEAR HASH
- oder LINEAR
KEY
-partitionierten Tabellen. Hier sehen Sie ein
ähnliches Beispiel wie oben, allerdings dieses Mal mit einer
Tabelle, die nach LINEAR KEY
partitioniert
ist:
mysql>CREATE TABLE clients_lk (
->id INT,
->fname VARCHAR(30),
->lname VARCHAR(30),
->signed DATE
->)
->PARTITION BY LINEAR KEY(signed)
->PARTITIONS 12;
Query OK, 0 rows affected (0.03 sec) mysql>ALTER TABLE clients_lk COALESCE PARTITION 6;
Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0
COALESCE
kann nicht verwendet werden, um die
Anzahl der Partitionen zu erhöhen. Ein Versuch, dies zu tun,
verursacht folgenden Fehler:
mysql> ALTER TABLE clients COALESCE PARTITION 18;
ERROR 1478 (HY000): Cannot remove all Partitionen, use DROP TABLE instead
Um die Anzahl der Partitionen der
clients
-Tabelle von 12 auf 18 zu erhöhen,
erteilen Sie folgende ALTER TABLE ... ADD
PARTITION
-Anweisung:
ALTER TABLE clients ADD PARTITION PARTITIONS 18;
Hinweis: ALTER TABLE
... REORGANIZE PARTITION
kann nicht für
HASH
- oder
KEY
-partitionierte Tabellen verwendet werden.
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.