Heim Datenbank MySQL-Tutorial Detaillierte Einführung in Partitionstabellen in MySQL

Detaillierte Einführung in Partitionstabellen in MySQL

Jan 19, 2019 am 10:35 AM
mysql

Dieser Artikel bietet Ihnen eine detaillierte Einführung in die Partitionstabelle in MySQL. Ich hoffe, dass er für Freunde hilfreich ist.

Für Benutzer ist die Partitionstabelle eine unabhängige logische Tabelle, die jedoch unten aus mehreren physischen Untertabellen besteht. Der Code, der die Partitionierung implementiert, ist eigentlich eine Kapselung der Handle-Objekte einer Reihe zugrunde liegender Tabellen. Anforderungen für Partitionstabellen werden über die Handle-Objekte in Schnittstellenaufrufe an die Speicher-Engine umgewandelt

Bedeutung

MySQL kann die in jeder Partition gespeicherten Daten definieren, indem es beim Erstellen einer Tabelle die PARTITION BY-Klausel verwendet. Beim Ausführen einer Abfrage filtert der Optimierer basierend auf der Partitionsdefinition diejenigen Partitionen heraus, die nicht über die von uns benötigten Daten verfügen, sodass die Abfrage nicht alle Partitionen scannen muss – es können nur die Partitionen gefunden werden, die die erforderlichen Daten enthalten.

Einer der Hauptzwecke der Partitionierung besteht darin, Daten in verschiedenen Tabellen mit einer gröberen Granularität zu speichern. Auf diese Weise können zusammengehörige Daten gespeichert werden. Darüber hinaus ist dies sehr praktisch, wenn wir die Daten der gesamten Partition auf einmal löschen möchten.

Partitionierung kann in den folgenden Szenarien eine große Rolle spielen:

  • Die Tabelle ist zu groß, um alle in den Speicher zu passen, oder nur in die Tabelle. Der letzte Teil enthält Hotspot Daten und der Rest sind historische Daten

  • Partitionstabellendaten sind einfacher zu pflegen

  • Partitionstabellendaten können auf verschiedene physische Geräte

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

  • Bei Bedarf können unabhängige Partitionen gesichert und wiederhergestellt werden

Auch die Partitionstabelle selbst hat einige

Einschränkungen, folgende Punkte sind besonders wichtig:

  • Eine Tabelle kann nur maximal 1024 Partitionen haben

  • In MySQL 5.1 muss der Partitionsausdruck eine Ganzzahl oder ein Ausdruck sein, der eine Ganzzahl zurückgibt. In MySQL5.5 können Spalten in einigen Szenarien direkt für die Partitionierung verwendet werden

  • Fremdschlüsseleinschränkungen können nicht in partitionierten Tabellen verwendet werden

  • Bei Partitionierung Wenn das Feld Primärschlüssel- oder eindeutige Indexspalten enthält, müssen alle Primärschlüsselspalten und eindeutigen Indexspalten enthalten sein

Prinzip der partitionierten Tabelle

Es gibt keinen Unterschied zwischen der Verwaltung jeder zugrunde liegenden Tabelle in der Partition durch die Speicher-Engine und der Verwaltung normaler Tabellen (alle zugrunde liegenden Tabellen müssen dieselbe Speicher-Engine verwenden)

Der Index der Partitionstabelle muss nur hinzugefügt werden ein identischer Index für jede zugrunde liegende Tabelle. Aus Sicht der Speicher-Engine gibt es keinen Unterschied zwischen der zugrunde liegenden Tabelle und einer gewöhnlichen Tabelle, und die Speicher-Engine muss nicht wissen, ob es sich um eine gewöhnliche Tabelle oder einen Teil einer partitionierten Tabelle handelt.

Die Operationen an der Partitionstabelle werden gemäß der folgenden Operationslogik ausgeführt:

SELECT-Abfrage

Beim Abfragen einer Partitionstabelle öffnet und sperrt zunächst die Partitionsschicht alle In der unteren Schichttabelle ermittelt der Optimierer zunächst, ob einige Partitionen gefiltert werden können, und ruft dann die entsprechende Speicher-Engine-Schnittstelle auf, um auf die Daten jeder Partition zuzugreifen

INSERT-Operation

Beim Schreiben eines Datensatzes Die Partitionsschicht: Öffnen und sperren Sie zuerst alle zugrunde liegenden Tabellen, bestimmen Sie dann, welche Partition den Datensatz empfängt, und schreiben Sie den Datensatz dann in die entsprechende zugrunde liegende Tabelle.

LÖSCHEN-Vorgang

Beim Löschen eines Datensatzes wird die Partition gelöscht Die Ebene öffnet und sperrt zunächst alle zugrunde liegenden Tabellen, bestimmt dann die den Daten entsprechende Partition und führt schließlich einen Löschvorgang für die entsprechende zugrunde liegende Tabelle aus

UPDATE-Vorgang

Wenn ein Datensatz aktualisiert wird, Zuerst wird die Partitionsschicht geöffnet und alle zugrunde liegenden Tabellen gesperrt. MySQL bestimmt zunächst, in welcher Partition der Datensatz aktualisiert werden muss, entnimmt dann die Daten und aktualisiert sie, bestimmt dann, in welche Partition die aktualisierten Daten abgelegt werden sollen, und schreibt schließlich die zugrunde liegende Tabelle und aktualisiert die Originaldaten.

Diese Vorgänge unterstützen das Filtern.

Obwohl jeder Vorgang „zuerst alle zugrunde liegenden Tabellen öffnet und sperrt“, bedeutet dies

nicht, dass die Partitionstabelle während der Verarbeitung die gesamte Tabelle sperrt . Wenn die Speicher-Engine selbst Sperren auf Zeilenebene implementieren kann, wird die entsprechende Tabellensperre auf Partitionsebene freigegeben. Dieser Sperr- und Entsperrvorgang ähnelt Abfragen bei normalem InnoDB.

Arten von Partitionstabellen

MySQL unterstützt eine Vielzahl von Partitionstabellen. Am häufigsten sehen wir die Partitionierung basierend auf Bereichen. Jeder Partitionsspeicher liegt in einem bestimmten Bereich . Aufzeichnungen. Der Partitionsausdruck kann eine Spalte oder ein Ausdruck sein, der Spalten enthält.

Zum Beispiel speichert die folgende Tabelle die jährlichen Umsätze in verschiedenen Partitionen:

CREATE TABLE sales(
    order_date DATETIME NOT NULL,
    ....
)ENGINE=InnoDB PARTITION BY RANGE(YEAR(order_date))(
    PARTITION p_2010 VALUES LESS THAN (2010),
    PARTITION p_2011 VALUES LESS THAN (2011),
    PARTITION p_2012 VALUES LESS THAN (2012),
    PARTITION p_catchall VALUES LESS THAN MAXVALUE;
)
Nach dem Login kopieren

PARTITION In der Partitionsklausel können verschiedene Funktionen verwendet werden. Es gibt jedoch eine Anforderung: Der vom

-Ausdruck zurückgegebene Wert muss eine bestimmte Ganzzahl sein und darf keine Konstante sein.

MySQL unterstützt auch Schlüsselwert-, Hash- und Listenpartitionierung usw.

So verwenden Sie partitionierte Tabellen

Wenn wir Datensätze für einen bestimmten Zeitraum aus einer sehr großen Tabelle abfragen möchten, wie sollten wir diese Tabelle abfragen und wie können wir das? effizienter machen?

Da die Datenmenge sehr groß ist, können wir sicherlich nicht bei jeder Abfrage die gesamte Tabelle scannen. In Anbetracht des Speicherplatzverbrauchs und der Wartung von Indizes möchten wir keine Indizes verwenden. Selbst wenn Sie Indizes verwenden, werden Sie feststellen, dass die Daten nicht in der gewünschten Weise aggregiert werden, was zu einer starken Fragmentierung führt und schließlich dazu führt, dass eine Abfrage Tausende von zufälligen I/Os generiert. Tatsächlich

Wenn die Datenmenge extrem groß ist, kann der B-Tree-Index nicht mehr funktionieren.

So können wir einige grobkörnigere, aber kostengünstigere Methoden zum Abrufen von Daten wählen, z. B. die Indizierung nur eines kleinen Teils der entsprechenden Metadaten für eine große Datenmenge.

Das ist genau die Aufgabe der Partitionierung. Das Verständnis der Partitionierung kann als die ursprüngliche Form eines Index betrachtet werden. Da Partitionen keine zusätzlichen Datenstrukturen benötigen, um die Daten in jeder Partition aufzuzeichnen – Partitionen müssen den Speicherort jedes Datenelements nicht genau lokalisieren, sodass keine zusätzlichen Datenstrukturen erforderlich sind – sind die Kosten daher sehr niedrig . Es ist nur ein einfacher Ausdruck erforderlich, um auszudrücken, welche Daten in jeder Partition gespeichert sind.

Um die Skalierbarkeit großer Datenmengen sicherzustellen, gibt es im Allgemeinen zwei Strategien:

  1. Scannen Sie die Daten vollständig ohne Index : Solange die WHERE-Bedingung genutzt werden kann, um die benötigten Daten auf wenige Partitionen zu beschränken, ist die Effizienz sehr hoch. Bei dieser Strategie wird davon ausgegangen, dass die Daten nicht vollständig im Speicher abgelegt werden müssen und dass sich alle erforderlichen Daten auf der Festplatte befinden. Da der Speicher relativ klein ist, werden die Daten schnell aus dem Speicher verdrängt, sodass der Cache keine Rolle spielt. Diese Strategie eignet sich, wenn auf normale Weise auf große Datenmengen zugegriffen wird.

  2. Indexdaten und separate Hotspots: Wenn die Daten offensichtliche „Hotspots“ aufweisen und außer diesem Teil der Daten nur selten auf andere Daten zugegriffen wird Sie können diesen Teil der Hotspot-Daten in einer separaten Partition ablegen, sodass die Daten in dieser Partition im Speicher zwischengespeichert werden können. Solche Abfragen können nur auf eine kleine partitionierte Tabelle zugreifen, Indizes verwenden und auch den Cache effektiv nutzen.

Unter welchen Umständen treten Probleme auf?

Die beiden oben vorgestellten Partitionierungsstrategien basieren auf zwei sehr wichtigen Annahmen: Abfragen können gefiltert werden. Löschen von a Viele zusätzliche Partitionen und Partitionen selbst verursachen keine großen zusätzlichen Kosten.

Es stellt sich heraus, dass diese beiden Annahmen in bestimmten Szenarien problematisch sein können:

  • Partitionsspalten und Indexspalten stimmen nicht überein: Wenn definiert Die Indexspalte und die Partitionsspalte stimmen nicht überein, was dazu führt, dass die Abfrage die Partitionsfilterung nicht durchführen kann.

  • Die Wahl einer Partition kann teuer sein: Verschiedene Arten von Partitionen werden unterschiedlich implementiert, daher variiert ihre Leistung. Insbesondere bei der Bereichspartitionierung kann der Aufwand für die Abfrage, zu welchen Partitionen eine qualifizierte Zeile gehört, sehr hoch sein, da der Server die Liste aller Partitionsdefinitionen durchsuchen muss, um die richtige Antwort zu finden.

  • Die Kosten für das Öffnen und Sperren aller zugrunde liegenden Tabellen können hoch sein: Wenn eine Abfrage auf eine partitionierte Tabelle zugreift, muss MySQL alle zugrunde liegenden Tabellen öffnen und sperren ist ein weiterer Overhead von partitionierten Tabellen.

  • Die Kosten für die Wartung von Partitionen können hoch sein: Einige Partitionswartungsvorgänge können sehr schnell sein, z. B. das Hinzufügen oder Löschen von Partitionen. Einige Vorgänge, beispielsweise das Reorganisieren von Partitionen oder ähnliche ALTER-Anweisungen, können sehr kostspielig sein, da für solche Vorgänge das Kopieren von Daten erforderlich ist.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Partitionstabellen in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

So erstellen Sie Navicat Premium So erstellen Sie Navicat Premium Apr 09, 2025 am 07:09 AM

Erstellen Sie eine Datenbank mit Navicat Premium: Stellen Sie eine Verbindung zum Datenbankserver her und geben Sie die Verbindungsparameter ein. Klicken Sie mit der rechten Maustaste auf den Server und wählen Sie Datenbank erstellen. Geben Sie den Namen der neuen Datenbank und den angegebenen Zeichensatz und die angegebene Kollektion ein. Stellen Sie eine Verbindung zur neuen Datenbank her und erstellen Sie die Tabelle im Objektbrowser. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Daten einfügen, um die Daten einzufügen.

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

So erstellen Sie eine neue Verbindung zu MySQL in Navicat So erstellen Sie eine neue Verbindung zu MySQL in Navicat Apr 09, 2025 am 07:21 AM

Sie können eine neue MySQL -Verbindung in Navicat erstellen, indem Sie den Schritten folgen: Öffnen Sie die Anwendung und wählen Sie eine neue Verbindung (Strg N). Wählen Sie "MySQL" als Verbindungstyp. Geben Sie die Hostname/IP -Adresse, den Port, den Benutzernamen und das Passwort ein. (Optional) Konfigurieren Sie erweiterte Optionen. Speichern Sie die Verbindung und geben Sie den Verbindungsnamen ein.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

See all articles