Heim  >  Artikel  >  Datenbank  >  Zusammenfassung der MySQL-Partitionierung_MySQL

Zusammenfassung der MySQL-Partitionierung_MySQL

WBOY
WBOYOriginal
2016-09-09 08:13:40970Durchsuche

Vorwort

Partitionierung bezieht sich auf die Zerlegung einer großen Tabelle in mehrere kleinere Teile nach bestimmten Regeln. Die Regeln hier bestehen im Allgemeinen darin, die Tabelle horizontal aufzuteilen. Die Logik hat sich nicht geändert, aber tatsächlich wurde die Tabelle in mehrere Teile aufgeteilt physische Objekte, die jeweils in ein unabhängiges Objekt unterteilt sind. Im Vergleich zu einer einzelnen Tabelle ohne Partitionen bietet eine partitionierte Tabelle viele Vorteile, darunter gleichzeitige statistische Abfragen, schnelle Archivierung und Löschung partitionierter Daten, dezentrale Speicherung und bessere Abfrageleistung.

Mysql5.7 und spätere Abfrageanweisungen unterstützen angegebene Partitionen. Zum Beispiel: „SELECT * FROM t PARTITION (p0,p1) WHERE c < 5“ angegebene Partitionen sind ebenfalls anwendbar DELETE, INSERT, REPLACE, UPDATE, and LOAD DATA, LOAD XML.

Datenbankversion: mysql5.7.12

Ob Partitionierung unterstützt wird

SHOW PLUGINS ;

Wenn der Status der Abfragepartition aktiv ist, bedeutet dies, dass die Partitionierung unterstützt wird. Wenn sie aus dem Quellcode installiert wird, muss „-DWITH_PARTITION_STORAGE_ENGINE=1 “ während des Kompilierungsprozesses hinzugefügt werden.

Hinweis: MERGE-, CSV- oder FEDERATED-Speicher-Engines unterstützen nicht alle Partitionen derselben Tabelle. Sie können MYISAM nicht für Partition 1 und INNODB für Partition 2 verwenden können verschiedene Speicher-Engines sein.

Partitionseinführung

Zu den derzeit verfügbaren Partitionstypen für MySQL gehören hauptsächlich die folgenden:

RANGE-Partitionierung: Basierend auf einem bestimmten kontinuierlichen Intervallbereich basiert RANGE hauptsächlich auf der Ganzzahlpartitionierung. Für nicht ganzzahlige Felder müssen Ausdrücke verwendet werden, um sie in Ganzzahlen umzuwandeln.

LIST-Partitionierung: wird basierend auf der aufgelisteten Liste der Aufzählungswerte partitioniert.

COLUMNS-Partition: Nicht-Ganzzahlfelder können direkt ohne Konvertierung durch Ausdrücke partitioniert werden. Gleichzeitig unterstützt die COLUMNS-Partition auch mehrere Feldkombinationspartitionen, und COLUMNS ist RANGE und LIST-Partitionen aktualisieren.

 HASH-Partition: Basierend auf der angegebenen Anzahl von Partitionen können HASH-Partitionen nur Ganzzahlen hashen, und nicht ganzzahlige Felder können nur durch Ausdrücke konvertiert werden.

 KEY-Partition: Unterstützt die Partitionierung aller Datentypen außer Text und BLOB. Die Schlüsselpartitionierung kann direkt basierend auf Feldern ohne Konvertierung in Ganzzahlen erfolgen.

Beschreibung

1. Achten Sie auf die Groß-/Kleinschreibung von Partitionsnamen und auf Schlüsselwortprobleme.

2. Unabhängig vom Partitionstyp gibt es entweder keinen Primärschlüssel oder eindeutigen Schlüssel in der partitionierten Tabelle, oder der Primärschlüssel oder eindeutige Schlüssel ist in der Partitionsspalte enthalten. Bei Tabellen mit Primärschlüsseln oder eindeutigen Schlüsseln sind die Felder anders als der Primärschlüssel oder eindeutige Schlüssel kann nicht als Partitionierungsfeld verwendet werden.

Versionen vor 3.5.7 zeigen Partitionsausführungspläne an mit: EXPLAIN PARTITIONS; nach 5.7 direkt ausführen: EXPLAIN

4. Es gibt keine zwingende Anforderung, dass die Partitionsspalte nicht NULL sein muss. Wenn ein NULL-Wert in die Partitionsspalte eingefügt wird, wird dies der Fall sein Wird als kleinster Wert in der LIST-Partition behandelt. NULL Der Wert muss in der Aufzählungsliste enthalten sein, andernfalls wird das Einfügen von NULL-Werten in HASH/KEY-Partitionen als 0 behandelt.

5. Konvertierungsfunktionen basierend auf Zeittypfeldern. MySQL bietet „YEAR(), MONTH(), DAY(), TO_DAYS(), TO_SECONDS(), WEEKDAY(), DAYOFYEAR()“

6. Nach dem Teilen und Zusammenführen von Partitionen sind die statistischen Informationen der geänderten Partition ungültig. Die statistischen Informationen der unveränderten Partition sind weiterhin vorhanden und haben keinen Einfluss auf die Hinzufügung des neu eingefügten Werts zu den statistischen Informationen ; Zu diesem Zeitpunkt müssen Sie einen Analysevorgang für die Tabelle durchführen

7. Es wird empfohlen, die COLUMNS-Partitionierung für die RANGLIST-Partitionierung von nicht ganzzahligen Feldern zu verwenden.

Partitionen löschen und hinzufügen

Die Verwendung jeder Partition wird in der Einführung jeder Partition ausführlich vorgestellt, aber alle führen in die Erstellung von Partitionen sowie das Ändern und Löschen einzelner Partitionen beim Erstellen einer Tabelle ein. Sie können Partitionen auch zu einer vorhandenen Tabelle hinzufügen. Sie können die gesamte Tabellenpartition auf einmal löschen.

1. Tabellenpartitionen entfernen

ALTER TABLE tablename
REMOVE PARTITIONING ;

Hinweis: Wenn Sie zum Entfernen einer Partition „Remove“ (Entfernen) verwenden, wird nur die Definition der Partition entfernt und nicht die Daten gelöscht. Dies unterscheidet sich von „Drop PARTITION“, bei dem die Daten zusammen gelöscht werden

2. Erstellen Sie eine Partition für eine Tabelle, die bereits Datensätze enthält. Die Syntax ist die gleiche wie beim Erstellen einer Tabelle und einer Partition.

ALTER TABLE `tb_partition`.`tb_varchar` 
PARTITION BY RANGE(id) PARTITIONS 3( PARTITION part0 VALUES LESS THAN (5000), PARTITION part1 VALUES LESS THAN (10000), PARTITION part2 VALUES LESS THAN (MAXVALUE)) ;

Hinweis: Nach dem Erstellen einer Partition für eine vorhandene Tabelle werden die Daten entsprechend der Partitionsdefinition auf jede Partitionsdatei verteilt

Zusammenfassung

Das Obige ist die gesamte Einführung und Zusammenfassung der MySQL-Partitionierung. Ich hoffe, dass dieser Artikel für alle hilfreich ist, die MySQL verwenden.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn