Vorwort: Partitionierung ist ein Tabellenentwurfsmuster. Im Allgemeinen besteht die Tabellenpartitionierung darin, eine große Tabelle basierend auf Bedingungen in mehrere kleine Tabellen aufzuteilen. Für die Anwendung ist die partitionierte Tabelle jedoch dasselbe wie die nicht partitionierte Tabelle. Mit anderen Worten: Die Partitionierung ist für die Anwendung transparent und stellt lediglich eine Neuorganisation der Daten durch die Datenbank dar. Dieser Artikel stellt Partitionstabellen in MySQL und ihre Verwendungsszenarien vor. Freunde in Not können ihn zu Rate ziehen. Ich hoffe, er wird Ihnen hilfreich sein. 1. Zweck und Art der Trennwand Beim Erstellen einer Tabelle in MySQL können Sie die Klausel PARTITION BY verwenden, um die in jeder Partition gespeicherten Daten zu definieren. Beim Ausführen einer Abfrage filtert der Optimierer Partitionen heraus, die basierend auf der Partitionsdefinition nicht die von uns benötigten Daten enthalten, sodass die Abfrage nicht alle Partitionen scannen muss, sondern nur die Partition finden muss, die die erforderlichen Daten enthält. Ein weiterer Zweck der Partitionierung besteht darin, Daten mit gröberer Granularität in verschiedenen Tabellen zu speichern. Auf diese Weise können zusammengehörige Daten zusammen gespeichert werden. Darüber hinaus ist es praktisch, wenn wir die Daten einer ganzen Partition stapelweise auf einmal löschen möchten. Im Folgenden werden vier gängige Partitionstypen kurz vorgestellt:
Unter den oben genannten vier Partitionstypen wird die RANGE-Partitionierung am häufigsten verwendet. Das Merkmal der RANGE-Partitionierung besteht darin, dass die Bereiche mehrerer Partitionen zusammenhängend sein müssen, sich aber nicht überschneiden dürfen. Standardmäßig wird das Attribut VALUES LESS THAN verwendet, d. h. jede Partition enthält nicht den angegebenen Wert. 2. Beispiel für eine Partitionierungsoperation In diesem Abschnitt wird die RANGE-Partitionierung als Beispiel verwendet, um Vorgänge im Zusammenhang mit Partitionstabellen vorzustellen. # Erstellen Sie eine partitionierte Tabellemysql> CREATE TABLE `tr` ( -> `id` INT, -> `Name` VARCHAR(50), -> `gekauft` DATUM -> ) ENGINE=InnoDB STANDARD-CHARSET=utf8 -> PARTITION NACH BEREICH (JAHR (gekauft)) ( -> PARTITION p0 WERTE WENIGER ALS (1990), -> PARTITION p1 WERTE WENIGER ALS (1995), -> PARTITION p2 WERTE WENIGER ALS (2000), -> PARTITION p3 WERTE WENIGER ALS (2005), -> PARTITION p4 WERTE WENIGER ALS (2010), -> PARTITION p5 WERTE WENIGER ALS (2015) -> ); Abfrage OK, 0 Zeilen betroffen (0,28 Sek.) # Datamysql einfügen> INSERT INTO `tr` VALUES -> (1, 'Schreibtisch-Organizer', '2003-10-15'), -> (2, 'Wecker', '1997-11-05'), -> (3, 'Vorsitzender', '10.03.2009'), -> (4, 'Bücherregal', '1989-01-10'), -> (5, 'Heimtrainer', '2014-05-09'), -> (6, 'Sofa', '1987-06-05'), -> (7, 'Espressomaschine', '22.11.2011'), -> (8, 'Aquarium', '1992-08-04'), -> (9, 'Schreibtisch', '2006-09-16'), -> (10, 'Lavalampe', '1998-12-25'); Abfrage OK, 10 Zeilen betroffen (0,03 Sek.) Datensätze: 10 Duplikate: 0 Warnungen: 0 Nach der Erstellung können Sie sehen, dass jede Partition einer IBD-Datei entspricht. Die obige Erstellungsanweisung ist leicht zu verstehen. In dieser Partitionstabelle wird das Jahr im Datum DATE mithilfe der Funktion YEAR extrahiert und in eine Ganzzahl umgewandelt. Jahre vor 1990 werden in Partition p0 gespeichert, Jahre vor 1995 in Partition p1 und so weiter. Beachten Sie, dass jede Partition in der Reihenfolge vom niedrigsten bis zum höchsten definiert ist. Um zu verhindern, dass die eingefügten Daten einen Fehler melden, weil die entsprechende Partition nicht gefunden wird, sollten wir rechtzeitig eine neue Partition erstellen. Im Folgenden werden weitere Vorgänge im Zusammenhang mit der Partitionswartung gezeigt. # Daten einer Partition anzeigenmysql> SELECT * FROM tr PARTITION (p2); +------+----------+------------+ | ID | Name | gekauft | +------+----------+------------+ | 2 | Wecker | 05.11.1997 | | 10 | Lavalampe | 25.12.1998 | +------+----------+------------+ 2 Zeilen im Satz (0,00 Sek.) # Partition hinzufügenmysql> alter table tr add partition( -> PARTITION p6 WERTE WENIGER ALS (2020) -> ); Abfrage OK, 0 Zeilen betroffen (0,06 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 # Partition aufteilenmysql> alter table tr reorganize partition p5 into( -> Partition s0 Werte kleiner als(2012), -> Partition s1 Werte kleiner als (2015) -> ); Abfrage OK, 0 Zeilen betroffen (0,26 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 # Partitionen zusammenführenmysql> alter table tr reorganize partition s0,s1 into ( -> Partition p5 Werte kleiner als (2015) -> ); Abfrage OK, 0 Zeilen betroffen (0,12 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 # Daten einer Partition löschen mysql> alter table tr truncate partition p0; Abfrage OK, 0 Zeilen betroffen (0,11 Sek.) # Partition löschen mysql> alter table tr drop partition p1; Abfrage OK, 0 Zeilen betroffen (0,06 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 # Austauschpartition # Erstellen Sie zunächst eine Austauschtabelle mit der gleichen Struktur wie die Partitionstabelle mysql> CREATE TABLE `tr_archive` ( -> `id` INT, -> `Name` VARCHAR(50), -> `gekauft` DATUM ->) ENGINE=InnoDB DEFAULT CHARSET=utf8; Abfrage OK, 0 Zeilen betroffen (0,28 Sek.) # Führen Sie „Partition austauschen mysql> alter table tr“ aus, und tauschen Sie PARTITION p2 mit Tabelle tr_archive aus. Abfrage OK, 0 Zeilen betroffen (0,13 Sek.) 3. Partitionsüberlegungen und anwendbare Szenarien Tatsächlich gibt es bei der Verwendung von Partitionstabellen viele Einschränkungen und Vorsichtsmaßnahmen. Unter Bezugnahme auf die offizielle Dokumentation werden einige Punkte wie folgt kurz zusammengefasst:
Aus der obigen Einführung können wir ersehen, dass Partitionstabellen für einige Protokollierungstabellen geeignet sind. Kennzeichnend für diesen Tabellentyp sind die große Datenmenge, die Unterscheidung zwischen kalten und heißen Daten sowie die Datenarchivierung nach der Zeitdimension. Dieser Tabellentyp eignet sich besser für die Verwendung von Partitionstabellen, da Partitionstabellen separate Partitionen verwalten können, was für die Datenarchivierung praktischer ist. 4. Warum Partitionstabellen nicht häufig verwendet werden In unserer Projektentwicklung werden Partitionstabellen selten verwendet. Hier sind einige Gründe:
Zusammenfassen: In diesem Artikel wird die MySQL-Partitionierung ausführlich vorgestellt. Wenn Sie partitionierte Tabellen verwenden möchten, empfiehlt es sich, im Voraus zu planen, partitionierte Tabellen während der Initialisierung zu erstellen und Wartungspläne zu erstellen. Bei richtiger Verwendung ist dies recht praktisch, insbesondere für Tabellen, die eine Archivierung historischer Daten erfordern. Die Verwendung partitionierter Tabellen macht die Archivierung bequemer. Natürlich gibt es noch viel mehr Inhalt zur Partitionstabelle. Interessierte Studierende können in der offiziellen Dokumentation nachsehen, die eine große Anzahl von Beispielen enthält. Oben finden Sie eine ausführliche Erläuterung der MySQL-Partitionstabelle. Weitere Informationen zur MySQL-Partitionstabelle finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Fallzusammenfassung zur Vue-Komponentenkommunikationsmethode
>>: Implementierungsprinzip und Nutzungsanalyse des Apache Bench-Stresstest-Tools
Vorwort Dieser Artikel enthält eine Anleitung zum...
1. Docker importiert lokale Images Manchmal kopie...
1. JS-Prinzip der asynchronen Ausführung Wir wiss...
Inhaltsverzeichnis Einführung Anweisungen Tatsäch...
Vor Kurzem habe ich das Problem gelöst, dass Dock...
"/" ist das Stammverzeichnis und "...
Verwenden Sie JS, um einen einfachen Rechner für ...
Inhaltsverzeichnis 1. Einige Konzepte, die Sie vo...
Heute werden wir einen fragmentierten Bildladeeff...
Inhaltsverzeichnis 1. Befehl 2. docker-compose.ym...
Das Folgende ist ein Bild-Zoom-Effekt, der in rei...
Methode 1: Verwenden Sie den cmd-Befehl Öffnen Si...
Die Benutzerorganisation verfügt über zwei Window...
Detailliertes Download-, Installations- und Konfi...
Inhaltsverzeichnis Vorwort Schritt 1: Aufbau und ...