Die MySQL-Partitionierung wird durch Umschließen der Datentabelle implementiert. Dies bedeutet, dass der Index tatsächlich auf Grundlage jeder einzelnen Partition und nicht der gesamten Tabelle definiert wird. Diese Funktion unterscheidet sich von Oracle, wo Indizes und Tabellen flexibler und komplexer partitioniert werden können. Die MySQL-Partitionierung bestimmt die Partition, zu der eine Datenzeile gehört, indem die Bedingungen der PATITION BY-Klausel definiert werden. Bei der Ausführung einer Abfrage unterscheidet der Abfrageoptimierer zwischen Partitionen, d. h. die Abfrage überprüft nicht alle Partitionen, sondern nur die Partitionen, die die angeforderten Daten enthalten. Der Hauptzweck der Partitionierung besteht darin, die Datentabelle grob zu indizieren und zu clustern. Dadurch muss möglicherweise nicht mehr auf eine große Anzahl von Datentabellen zugegriffen werden, und zusammengehörende Datenzeilen müssen nicht mehr nah beieinander gespeichert werden. Die Vorteile der Partitionierung sind erheblich, insbesondere in den folgenden Szenarien:
Die Implementierungsdetails der MySQL-Partitionierung sind sehr komplex und schwer zu verstehen. Wir müssen uns nur auf die Leistung konzentrieren. Wenn Sie mehr erfahren möchten, können Sie den Abschnitt zur Partitionierung im MySQL-Handbuch lesen. Mit der Partitionierung gehen auch andere Probleme und Einschränkungen einher:
PartitionierungsmechanismusWie bereits erwähnt, verfügt die Partitionstabelle tatsächlich über mehrere versteckte physische Speichertabellen, die durch Handle-Objekte dargestellt werden. Wir können nicht direkt auf die Partitionen zugreifen. Normalerweise wird jede Partition von einer Speicher-Engine verwaltet (daher ist für alle Partitionen dieselbe Speicher-Engine erforderlich) und der Index in der Datentabelle ist tatsächlich ein Index der verborgenen physischen Speichertabelle. Aus Sicht der Speicher-Engine sind Partitionen auch Datentabellen. Die Speicher-Engine weiß nicht wirklich, ob die Datentabelle unabhängig ist oder eine Partition einer größeren Datentabelle. Die Operationen an der Partitionstabelle werden durch die folgenden logischen Operationen implementiert: SELECT AbfrageBeim Abfragen einer partitionierten Tabelle öffnet und sperrt die Partitionierungsebene alle versteckten Partitionen, der Abfrageoptimierer bestimmt, welche versteckten Partitionen ignoriert werden können, und dann ruft die Partitionierungsebene die Speicher-Engine auf, die die Partitionen über die Handle-API verwaltet, um die Abfrageergebnisse zu erhalten. INSERT-OperationWenn eine Datenzeile eingefügt wird, öffnet und sperrt die Partitionsebene alle Partitionen, bestimmt dann, welche Partition die aktuelle Datenzeile speichert, und speichert die Datenzeile in der entsprechenden Partition. DELETE-VorgangBeim Löschen einer Datenzeile öffnet und sperrt die Partitionierungsebene alle Partitionen, prüft, welche Partition die Datenzeile enthält, und sendet dann die Löschanforderung an diese Partition. UPDATE-Vorgang Beim Ändern einer Datenzeile öffnet und sperrt die Partitionierungsebene alle Partitionen, prüft, welche Partition die Datenzeile enthält, ruft die Datenzeile zur Änderung ab und bestimmt dann, welche Partition die neue Datenzeile enthalten soll, sendet die Einfügeanforderung an die Partition und die Löschanforderung an die alte Partition. Obwohl die Partitionsebene alle Partitionen öffnet und sperrt, bedeutet das nicht, dass die Partitionen gesperrt bleiben. Speicher-Engines wie InnoDB unterstützen Sperren auf Zeilenebene und entsperren Partitionen nur auf Partitionsebene. Der Sperr- und Entsperrvorgang ähnelt dem Sperrvorgang gewöhnlicher InnoDB-Datentabellen. Arten von PartitionenMySQL unterstützt mehrere Arten der Partitionierung. Die am häufigsten verwendete Art ist die Bereichspartitionierung, also die Partitionierung nach verschiedenen Wertebereichen oder Ausdrücken bestimmter Spalten. Die folgende Anweisung unterteilt beispielsweise die Verkaufsdaten nach Jahr in verschiedene Partitionen: CREATE TABLE Verkäufe ( Bestelldatum DATETIME NICHT NULL --Andere Spaltendefinitionen) ENGINE=InnoDB PARTITION BY RANGE(YEAR(order_date)) ( PARTITION p_2018 WERTE WENIGER ALS (2018), PARTITION p_2019 WERTE WENIGER ALS (2019), PARTITION p_2020 WERTE WENIGER ALS (2020), PARTITION p_other WERTE KLEINER ALS MAXIMALER WERT); In der Teilungsklausel können unterschiedliche Funktionen verwendet werden. Die Hauptanforderung besteht darin, dass eine nicht-konstante, deterministische Ganzzahl zurückgegeben werden muss. Im obigen Beispiel wird die Funktion YEAR verwendet, es können jedoch auch andere Funktionen verwendet werden, z. B. TO_DAYS(). Die Verwendung von Zeitintervallen zur Partitionierung ist ein gängiger Ansatz für datumsbasierte Daten. MySQL unterstützt auch Methoden zur Schlüssel-, Hash- und Listenpartitionierung und einige unterstützen auch die Unterpartitionierung (die in der Praxis selten verwendet wird). In MySQL 5.5 und höher können Sie den Partitionstyp RANGE COLUMNS verwenden, um direkt nach datumsbasierten Spalten zu partitionieren, ohne Funktionen zum Konvertieren von Datumsangaben in Ganzzahlen zu verwenden. Zu den weiteren gängigen Partitionierungstechniken gehören:
Oben finden Sie ausführliche Informationen zum Konzept und Mechanismus der erweiterten MySQL-Funktion - Datentabellenpartitionierung. Weitere Informationen zur erweiterten MySQL-Funktion Datentabellenpartitionierung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Zusammenfassung der Kompatibilitätsprobleme beim Flex-Layout
>>: Implementierung der Nginx-Konfiguration HTTPS-Sicherheitsauthentifizierung
Vorwort Im Internet gibt es zahlreiche Informatio...
Da wir Bilder hochladen möchten, müssen wir zunäc...
Inhaltsverzeichnis 1. Komponentenorganisation 2. ...
Beispielverwendung Code kopieren Der Code lautet w...
Dieser Artikel beschreibt anhand eines Beispiels,...
Normalerweise wird bei einem Deadlock die Verbind...
Inhaltsverzeichnis Wo ist der Quellcode des Apple...
1. Überprüfen Sie die MySQL-Datenbankkodierung my...
1. Befehlseinführung bzip2 wird zum Komprimieren ...
Inhaltsverzeichnis Überblick Definieren von Metho...
Gegeben: Ein Array [1,8,5,4,3,9,2], schreiben Sie...
Inhaltsverzeichnis JavaScript-Ereignisse: Häufig ...
Dieser Artikel veranschaulicht anhand von Beispie...
Inhaltsverzeichnis 1. Vergleich der Daten vor und...
Das Span-Tag wird häufig beim Erstellen von HTML-W...