Detailliertes Beispiel einer MySQL-Austauschpartition Vorwort Bevor wir die Exchange-Partition vorstellen, wollen wir zunächst die MySQL-Partition verstehen. Es gibt zwei Arten der Datenbankpartitionierung: horizontale Partitionierung und vertikale Partitionierung. MySQL unterstützt derzeit keine vertikale Partitionierung, im Folgenden geht es daher nur um die horizontale Partitionierung. Horizontale Partitionierung bedeutet, die Tabelle in Zeilen zu partitionieren. Beispiel: Partitionierung nach Zeit, eine Partition für jedes Jahr usw. In MySQL sind Partitionen austauschbar und die Daten in einer Partition einer Partitionstabelle können mit denen in einer normalen Tabelle ausgetauscht werden. Implementierung der Swap-Partition 1. Syntax der Swap-Partition Tabelle pt ändern, Partition p mit Tabelle nt austauschen; erklären: Tauschen Sie die Daten in Partition p der Partitionstabelle pt und einer normalen Tabelle nt aus. Voraussetzungen für den Austausch:
2. Experimentelle Swap-Partition (1) Erstellen Sie eine Partitionstabelle und fügen Sie Daten ein # Erstellen Sie eine Partitionstabelle CREATE TABLE e ( id INT NICHT NULL, fname VARCHAR(30), lname VARCHAR(30) ) PARTITION NACH BEREICH (id) ( PARTITION p0 WERTE WENIGER ALS (50), PARTITION p1 WERTE WENIGER ALS (100), PARTITION p2 WERTE WENIGER ALS (150), PARTITION p3 WERTE KLEINER ALS (MAXIMALER WERT) ); # Mehrere Datensätze in die Partitionstabelle einfügen e INSERT INTO e VALUES (1669, "Jim", "Smith"), (337, „Mary“, „Jones“), (16, "Frank", "Weiß"), (2005, „Linda“, „Schwarz“); (2) Erstellen Sie eine gemeinsame Tabelle e2 mit der gleichen Struktur wie die Partitionstabelle e # Erstellen Sie eine Tabelle e2 mysql> erstelle Tabelle e2 wie e; # Löschen Sie die Partition der Tabelle e2, um sie zu einer normalen Tabelle zu machen. mysql> alter table e2 remove partitioning; (3) Überprüfen Sie, wie viele Zeilen sich in jeder Partition der Tabelle e befinden mysql> wähle PARTITIONSNAME, TABELLENZEILEN -> VON INFORMATION_SCHEMA.PARTITIONS -> WO TABELLENNAME = "e"; +----+------------+ | PARTITIONSNAME | TABELLENZEILEN | +----+------------+ | p0 | 1 | | | s2 | 0 | | Seite 3 | 3 | +----+------------+ 4 Zeilen im Satz (0,00 Sek.) (4) Ersetzen Sie die Partition p0 der Tabelle e durch die normale Tabelle e2 mysql> Tabelle e ändern, Partition p0 mit Tabelle e2 austauschen; (5) Ergebnisse ansehen # Die Daten in Partition P0 der Tabelle e sind wegmysql> SELECT PARTITION_NAME, TABLE_ROWS -> VON INFORMATION_SCHEMA.PARTITIONS -> WO TABELLENNAME = "e"; +----+------------+ | PARTITIONSNAME | TABELLENZEILEN | +----+------------+ | p0 | 0 | | | s2 | 0 | | Seite 3 | 3 | +----+------------+ 4 Zeilen im Satz (0,00 Sek.) # In Tabelle e2 gibt es einen Datensatz aus Partition p0 der Tabelle emysql> SELECT * FROM e2; +----+-------+-------+ | Ich würde | FName | LName | +----+-------+-------+ | 16 | Frank | Weiß | +----+-------+-------+ 1 Zeile im Satz (0,00 Sek.) Es kann festgestellt werden, dass die Daten der Partition p0 der Tabelle e in die Tabelle e2 verschoben wurden. Das obige Beispiel tauscht eine Partition gegen eine normale leere Tabelle aus, was dem Auslagern der Daten einer Partition entspricht. Es wird normalerweise bei der Datenarchivierung verwendet. In ähnlicher Weise kann die Austauschpartition auch zwischen einer Partition und einer nicht leeren normalen Tabelle ausgetauscht werden, sodass die Daten in der normalen Tabelle in die angegebene Partition und die Daten in der angegebenen Partition in die normale Tabelle verschoben werden. Gehen Sie wie folgt vor: (6) Fügen Sie ein weiteres Datenelement zu p0 der Partitionstabelle e hinzu # Fügen Sie der Tabelle e einen Datensatz in Partition p0 hinzu mysql> INSERT INTO e VALUES (41, "Michael", "Green"); Abfrage OK, 1 Zeile betroffen (0,05 Sek.) # Bestätigen Sie, dass die eingefügten Daten tatsächlich in der Partition p0 gespeichert sind mysql> PARTITIONSNAME, TABELLENZEILEN AUSWÄHLEN -> VON INFORMATION_SCHEMA.PARTITIONS -> WO TABELLENNAME = "e"; +----+------------+ | PARTITIONSNAME | TABELLENZEILEN | +----+------------+ | p0 | 1 | | | s2 | 0 | | Seite 3 | 3 | +----+------------+ 4 Zeilen im Satz (0,00 Sek.) (7) Swap-Partition ausführen mysql> Tabelle e ändern, Partition p0 mit Tabelle e2 austauschen; Abfrage OK, 0 Zeilen betroffen (0,28 Sek.) (8) Ergebnisse ansehen # Zuvor wurde p0 der Tabelle e gegen ein Datum in Tabelle e2 ausgetauscht, und jetzt ist es wieder Tabelle e mysql> AUSWÄHLEN * VON e; +------+-------+---------+ | Ich würde | FName | LName | +------+-------+---------+ | 16 | Frank | Weiß | | 1669 | Jim | Schmied | | 337 | Maria | Jones | | 2005 | Linda | Schwarz | +------+-------+---------+ 4 Zeilen im Satz (0,00 Sek.) mysql> AUSWÄHLEN * VON e2; +----+---------+-------+ | Ich würde | FName | LName | +----+---------+-------+ | 41 | Michael | Grün | +----+---------+-------+ 1 Zeile im Satz (0,00 Sek.) Daraus können wir erkennen, dass die Daten in Tabelle e's p0 und Tabelle e2 vertauscht wurden! Dieses Szenario kann beim Verschieben von Daten aus einer allgemeinen Tabelle in eine Partition in einer partitionierten Tabelle verwendet werden . Allerdings gibt es eines zu beachten: Liegen die Daten der gemeinsamen Tabelle nicht im Bereich der auszutauschenden Partition, kann obige Syntax zum Partitionsaustausch nicht erfolgreich ausgeführt werden! Bitte sehen Sie sich die Vorgehensweise unten an. (9) Fügen Sie Daten, die den Bereich p0 der Tabelle e überschreiten, in die normale Tabelle e2 ein und führen Sie die obige Austauschanweisung aus mysql> INSERT INTO e2 VALUES (51, "Ellen", "McDonald"); Abfrage OK, 1 Zeile betroffen (0,08 Sek.) mysql> Tabelle e ändern, Partition p0 mit Tabelle e2 austauschen; FEHLER 1707 (HY000): Es wurde eine Zeile gefunden, die nicht mit der Partition übereinstimmt In MySQL 5.6 kann dieses Problem nicht gelöst werden; in MySQL 5.7.5 wurde eine Option OHNE VALIDIERUNG hinzugefügt, um den obigen Fehler zu beheben. Die Funktionsweise ist wie folgt: mysql> ALTER TABLE e TAUSCHEN SIE PARTITION p0 MIT TABELLE e2 OHNE ÜBERPRÜFUNG AUS; Abfrage OK, 0 Zeilen betroffen (0,02 Sek.) Sehen Sie sich die Ergebnisse an: # Die Daten mit der ID 51 werden auch in p0 der Tabelle e gespeichert mysql> select * from e partition(p0); +------+---------+----------+ | Ich würde | FName | LName | +------+---------+----------+ | 41 | Michael | Grün | | 51 | Ellen | McDonald | +------+---------+----------+ mysql> AUSWÄHLEN * VON e2; +----+---------+-------+ | Ich würde | FName | LName | +----+---------+-------+ | 16 | Frank | Weiß | +----+---------+-------+ 1 Zeile im Satz (0,00 Sek.) Zusammenfassen Durch die oben genannten praktischen Vorgänge haben wir festgestellt, dass die MySQL-Austauschpartitionsfunktion in zwei Szenarien anwendbar ist: Eine Partition einer Partitionstabelle wird gegen eine leere normale Tabelle ausgetauscht, sodass die Daten der Partition der Partitionstabelle ausgelagert werden. Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site! Das könnte Sie auch interessieren:
|
<<: Zusammenfassung häufiger Probleme und Lösungen in Vue (empfohlen)
>>: CentOS7-Bereitstellung Flask (Apache, mod_wsgi, Python36, venv)
In diesem Tutorial erfahren Sie alles über die In...
Inhaltsverzeichnis 1. Abrufen über --skip-grant-t...
In diesem Artikel werden die Eigenschaften von CS...
Beim Entwickeln einer Website-Funktion kann der S...
Inhaltsverzeichnis 1. Anweisungen 2. Modifikatore...
Mausereignis Wenn die Maus eine bestimmte Operati...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 1. Schloss und Riegel 2. Wiede...
Wir gehen davon aus, dass Sie ein linuxer sind, a...
Inhaltsverzeichnis einführen Link Start Gehen Sie...
Vorwort Im vorherigen Artikel wurde Hadoop instal...
Hintergrund Alle Unternehmenswebsites müssen das ...
Dieser Artikel stellt den Inhalt zur Git-Konfigur...
1. Die mysqldump-Sicherungsmethode verwendet eine...
1. Ändern Sie die Firewall-Konfigurationsdatei # ...