Heim >Datenbank >MySQL-Tutorial >Partitionstabelle zur MySQL-Leistungsoptimierung (Zusammenfassungsfreigabe)

Partitionstabelle zur MySQL-Leistungsoptimierung (Zusammenfassungsfreigabe)

WBOY
WBOYnach vorne
2022-04-30 09:00:172382Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über MySQL, das hauptsächlich Probleme im Zusammenhang mit der Leistungsoptimierung und den relevanten Inhalt von Partitionstabellen vorstellt. Für Benutzer sind Partitionstabellen eine unabhängige Logiktabelle, aber die unterste Ebene besteht aus mehreren Schauen wir uns die physischen Untertabellen gemeinsam an. Ich hoffe, dass sie für alle hilfreich sind.

Partitionstabelle zur MySQL-Leistungsoptimierung (Zusammenfassungsfreigabe)

Empfohlenes Lernen: MySQL-Video-Tutorial

Für Benutzer ist die Partitionstabelle eine unabhängige logische Tabelle, aber die unterste Ebene besteht aus mehreren physischen Untertabellen. Die Partitionstabelle ist eine Blackbox, die die zugrunde liegende Implementierung vollständig kapselt und für den Benutzer transparent ist. Mehrere Tabellendateien, deren Namen durch # zur Trennung verwendet werden, sind vom Dateisystem aus sichtbar.
MySQL verwendet die Partition-by-Klausel, um beim Erstellen einer Tabelle die in jeder Partition gespeicherten Daten zu definieren. Beim Ausführen einer Abfrage filtert der Optimierer diejenigen Partitionen, die nicht über die von uns benötigten Daten verfügen, basierend auf der Partitionsdefinition, sodass die Abfrage dies tut Es ist nicht erforderlich, alle Partitionen zu scannen.
Der Hauptzweck der Partitionierung besteht darin, die Daten grob in verschiedene Tabellen aufzuteilen, sodass zusammengehörige Daten zusammen gespeichert werden können.
Als nächstes werde ich über Partitionstabellen aus den folgenden 6 Aspekten sprechen, nämlich die Anwendungsszenarien von Partitionstabellen, Einschränkungen von Partitionstabellen, Prinzipien von Partitionstabellen, Arten von Partitionstabellen, Verwendung von Partitionstabellen und Verwendung von Partitionstabellen . Themen, die zu diesem Zeitpunkt Aufmerksamkeit erfordern.

1. Anwendungsszenarien von Partitionstabellen

1 Die Tabelle ist so groß, dass sie nicht vollständig im Speicher abgelegt werden kann, oder es befinden sich nur heiße Daten im letzten Teil der Tabelle, und der Rest sind historische Daten.

2. Partitionstabellendaten sind einfacher zu verwalten

(1) Um eine große Datenmenge stapelweise zu löschen, können Sie die Methode zum Löschen der gesamten Partition verwenden

(2) Optimieren, überprüfen, reparieren usw unabhängige Partition

3. Partitionstabelle Die Daten können auf verschiedene physische Geräte verteilt werden, wodurch mehrere Hardwaregeräte effizient genutzt werden können

4. Partitionstabellen können verwendet werden, um einige besondere Engpässe zu vermeiden

(1) Sich gegenseitig ausschließender Zugriff auf einen einzelnen Index von innodb

(2) Inode-Sperrkonkurrenz im ext3-Dateisystem

5. Unabhängige Partitionen können gesichert und wiederhergestellt werden

2. Eine Tabelle kann nur maximal 1024 Partitionen haben Es kann 8196 in Version 5.7 Partition unterstützen

2 In der frühen MySQL-Version muss der Partitionsausdruck eine Ganzzahl oder ein Ausdruck sein, der eine Ganzzahl zurückgibt. In MySQL 5.5 können Spalten in einigen Szenarien direkt für die Partitionierung verwendet werden.

3. Wenn das Partitionsfeld Primärschlüssel- oder eindeutige Indexspalten enthält, müssen alle Primärschlüsselspalten und eindeutigen Indexspalten enthalten sein.

4. Partitionierte Tabellen können keine Fremdschlüsseleinschränkungen verwenden

Eine partitionierte Tabelle wird auch durch ein Handle-Objekt identifiziert, auf das wir direkt zugreifen können jede Partition. Die Speicher-Engine verwaltet jede zugrunde liegende Tabelle der Partition auf die gleiche Weise wie eine normale Tabelle (alle zugrunde liegenden Tabellen müssen dieselbe Speicher-Engine verwenden. Die Indexkenntnis der Partitionstabelle fügt jeder zugrunde liegenden Tabelle einen identischen Index hinzu). Aus Sicht der Speicher-Engine unterscheidet sich die zugrunde liegende Tabelle nicht von einer gewöhnlichen Tabelle, und die Speicher-Engine muss nicht wissen, ob es sich um eine gewöhnliche Tabelle oder um einen Teil einer partitionierten Tabelle handelt. Die Operation der Partitionstabelle erfolgt gemäß der folgenden Operationslogik:

1. Abfrage auswählen

Beim Abfragen einer Partitionstabelle öffnet und sperrt die Partitionsschicht zunächst alle zugrunde liegenden Tabellen, und der Optimierer ermittelt zunächst, ob einige Partitionen können gefiltert werden und dann die entsprechende Speicher-Engine-Schnittstelle aufrufen, um auf die Daten jeder Partition zuzugreifen Die Partition akzeptiert diese Datensätze und schreibt die Datensätze dann in die entsprechende zugrunde liegende Tabelle.

3. Löschvorgang

Beim Löschen eines Datensatzes öffnet und sperrt die Partitionsschicht zunächst alle zugrunde liegenden Tabellen, bestimmt dann die den Daten entsprechende Partition und löscht schließlich die entsprechende zugrunde liegende Tabelle.

4. Aktualisierungsvorgang

Beim Aktualisieren eines Datensatzes öffnet und sperrt MySQL zunächst alle zugrunde liegenden Tabellen, ermittelt dann, welche Partition der Datensatz aktualisiert werden muss, und bestimmt dann die aktualisierte Partition, in der die Daten gespeichert werden sollen, und schließlich wird die zugrunde liegende Tabelle geschrieben und die zugrunde liegende Tabelle, in der sich die Quelldaten befinden, gelöscht.

Einige Vorgänge unterstützen das Filtern. Wenn beispielsweise ein Datensatz gelöscht wird, muss MySQL zuerst den Datensatz finden, der mit dem Partitionsausdruck übereinstimmt. Dies funktioniert auch für Updates. Wenn es sich um einen Einfügevorgang handelt, wird nur eine Partition getroffen und andere Partitionen werden herausgefiltert. MySQL ermittelt zunächst, zu welcher Partition dieser Datensatz gehört, und schreibt den Datensatz dann in die entsprechende Partitionstabelle, ohne andere Partitionen zu bearbeiten.

Obwohl bei jedem Vorgang „zuerst alle zugrunde liegenden Tabellen geöffnet und gesperrt werden“, bedeutet dies nicht, dass die Partitionstabelle während der Verarbeitung die gesamte Tabelle sperrt. Wenn die Speicher-Engine selbst Sperren auf Zeilenebene implementieren kann, z. B. innodb, dann Das entsprechende Die Tabellensperre wird auf Partitionsebene aufgehoben.

Empfohlenes Lernen: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonPartitionstabelle zur MySQL-Leistungsoptimierung (Zusammenfassungsfreigabe). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen