MySQL partitioniert vorhandene Tabellen in der Datentabelle

MySQL partitioniert vorhandene Tabellen in der Datentabelle

Erstellen Sie eine partitionierte Tabelle für eine vorhandene Tabelle und migrieren Sie die Daten in die neue Tabelle. Die Tabelle kann nach Zeit partitioniert werden. Diese Tabelle wird jedoch nicht in Echtzeit aktualisiert und es erfolgt ein Einfügevorgang pro Tag.
Es ist reichlich Zeit vorhanden, aber auf dem Server laufen auch andere Anwendungen, sodass der Einsatz geringerer Ressourcen der Hauptansatz ist.

So funktioniert es

@1 Sie können ALTER TABLE verwenden, um die Tabelle in eine partitionierte Tabelle umzuwandeln. Dieser Vorgang erstellt eine partitionierte Tabelle, kopiert automatisch die Daten und löscht dann die ursprüngliche Tabelle.
Ich vermute, dass der Ressourcenverbrauch des Servers relativ hoch ist.

Ähnliche Operationen

ALTER TABLE tbl_rtdata PARTITION BY RANGE (Monat(fld_date))
(   
PARTITION p_Apr WERTE KLEINER ALS (TO_DAYS('2012-05-01')),
PARTITION p_Mai WERTE KLEINER ALS (TO_DAYS('2012-06-01')), 
PARTITION p_Dec WERTE KLEINER ALS MAXIMALER WERT );

@2 Erstellen Sie eine neue Partitionstabelle, die mit der Originaltabelle identisch ist, exportieren Sie dann die Daten aus der Originaltabelle und importieren Sie sie anschließend in die neue Tabelle.
(Der ursprüngliche Primärschlüssel der Tabelle ist nur die ID, und mein Partitionsfeld ist stsdate. Hier sollte der Primärschlüssel in den gemeinsamen Primärschlüssel „ID, stsdate“ geändert werden. Die Partitionstabelle erfordert, dass das Partitionsfeld der Primärschlüssel oder ein Teil des Primärschlüssels ist.)

Betriebsablauf

Wählen Sie die zweite Option. Erstellen Sie zuerst eine partitionierte Tabelle, exportieren Sie dann die ursprünglichen Tabellendaten, ändern Sie den neuen Tabellennamen in den ursprünglichen Tabellennamen, fügen Sie ihn ein und erstellen Sie schließlich einen normalen Index.

Erstellen einer Partitionstabelle

Tabelle „apdailysts_p“ erstellen (
  `id` INT(11) NICHT NULL AUTO_INCREMENT,
  `ap_id` INT(11) NICHT NULL,
  `mac` VARCHAR(17) NICHT NULL,
  `liveinfo` LONGTEXT NICHT NULL,
  `livetime` INT(11) NICHT NULL,
  `stsdate` DATUM NICHT NULL,
  `lastmodified` DATETIME NICHT NULL,
   PRIMÄRSCHLÜSSEL (`id`, `stsdate`)
) 
PARTITION BY RANGE COLUMNS(stsdate) (
    PARTITION p0 WERTE KLEINER ALS ('2016-06-01'),
    PARTITION p1 WERTE KLEINER ALS ('2016-07-01'),
    PARTITION p2 WERTE KLEINER ALS ('2016-08-01'),
    PARTITION p3 WERTE KLEINER ALS ('2016-09-01'),
    PARTITION p4 WERTE KLEINER ALS ('2016-10-01'),
    PARTITION p5 WERTE KLEINER ALS ('2016-11-01'),
    PARTITION p6 WERTE KLEINER ALS ('2016-12-01'),
    PARTITION p7 WERTE KLEINER ALS ('2017-01-01'),
    PARTITION p8 WERTE KLEINER ALS ('2017-02-01'),
    PARTITION p9 WERTE KLEINER ALS ('2017-03-01'),
    PARTITION p10 WERTE KLEINER ALS ('2017-05-01'),
    PARTITION p11 WERTE KLEINER ALS ('2017-06-01'),
    PARTITION p12 WERTE KLEINER ALS ('2017-07-01'),
    PARTITION p13 WERTE KLEINER ALS ('2017-08-01'),
    PARTITION p14 WERTE KLEINER ALS ('2017-09-01'),
    PARTITION p15 WERTE WENIGER ALS MAXIMALER WERT
);

Daten exportieren

mysqldump -u Datenbankname -p --no-create-info Datenbankname apdailysts > apdailysts.sql

Ändern Sie den Tabellennamen, importieren Sie die Daten (das Importieren von 2 Millionen Daten, etwas über 8 GB, hat 10 Minuten gedauert), testen Sie sie und wenn alles in Ordnung ist, löschen Sie dann die Originaltabelle.

Der Test verläuft einwandfrei und wir werden ihn zwei Tage lang beobachten. .

– 10.16
Durch eine zweitägige Beobachtung konnte die Seitenabfragegeschwindigkeit von „Kann nicht geöffnet werden“ auf „Kann innerhalb von Sekunden geöffnet werden“ verbessert werden. Diese Optimierung ist wirksam.

Dies ist das Ende dieses Artikels zum Partitionieren einer vorhandenen Tabelle in MySQL. Weitere Informationen zum Partitionieren einer vorhandenen Tabelle in MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Die MySQL-Partitionstabelle ist nach Monaten klassifiziert
  • Ein Leistungsfehler bei MySQL-Partitionstabellen
  • Detaillierte Erklärung des Unterschieds zwischen temporärer MySQL-Tabelle und Partitionstabelle
  • Detaillierte Erklärung der MySQL-Partitionstabelle
  • MySQL Best Practices: Grundlegende Arten von Partitionstabellen
  • Warum muss der Partitionsschlüssel in einer MySQL-Partitionstabelle Teil des Primärschlüssels sein?

<<:  Verwenden Sie das Firebug-Tool, um die Seite auf dem iPad zu debuggen

>>:  Erweiterte Closures in JavaScript erklärt

Artikel empfehlen

Detaillierte Zusammenfassung von MySQL und verbindungsbezogenen Timeouts

MySQL und verbindungsbezogene Timeouts Vorwort: H...

Beispiel für die Anpassung des Stils des Auswahlfelds für Formulardateien

Code kopieren Der Code lautet wie folgt: <!DOC...

Benutzerdefinierter Kalendereffekt in JavaScript

In diesem Artikel wird der spezifische Code des b...

Die Iframe-Aktualisierungsmethode ist bequemer

So aktualisieren Sie Iframe 1. Zum Aktualisieren k...

So installieren Sie eine ISO-Datei im Linux-System

Wie installiere ich ISO-Dateien unter einem Linux...

Zusammenfassung der Wissenspunkte zur MySQL-Architektur

1. Datenbanken und Datenbankinstanzen Beim Studiu...

SQL IDENTITY_INSERT-Fallstudie

Wenn eine Spalte in einer Datentabelle einmal als...

Implementierungsmethode für die Datenspeicherung im WeChat-Applet

Inhaltsverzeichnis Globale Variable „globalData“ ...