Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Archivierung von Daten in partitionierten Tabellen
MySQL unterstütztpartitionierend
Sehen Sie sich den folgenden Beispielcode an.TABLE orders
existiert innerhalb derorderprocessing
Schema. Seine historischen Daten sind in der Partition vorhandenphistorica
l, das Daten aus dem Jahr 2021 und früher enthält. In derselben Tabelle sind heiße Daten auf Anwendungsebene in den Live-Partitionen für jeden Monat des Jahres 2022 vorhanden. Um die Daten auf der Partition zu archivierenphistorical
, Sie können ein Archiv erstellentable orders_2021_and_older
mit der gleichen Struktur in derarchive
Schema. Sie können dann das MySQL verwendenPARTITION AUSTAUSCHENphistorical
in diesen Tisch. Beachten Sie, dass die Archivtabelle nicht partitioniert ist. Nach der Archivierung können Sie Ihre Daten überprüfen und nach Amazon S3 verschieben.
CREATE TABLE orders ( orderid bigint NOT NULL AUTO_INCREMENT, customerid bigint DEFAULT NULL, ............ ............ order_date date NOT NULL, PRIMARY KEY (`orderid`,`order_date`)) PARTITION BY RANGE (TO_DAYS(order_date)) ( PARTITION pstart VALUES LESS THAN (0), PARTITION phistorical VALUES LESS THAN (TO_DAYS('2022-01-01')), PARTITION p2022JAN VALUES LESS THAN (TO_DAYS('2022-02-01')), PARTITION p2022FEB VALUES LESS THAN (TO_DAYS('2022-03-01')), PARTITION p2022MAR VALUES LESS THAN (TO_DAYS('2022-04-01')), PARTITION p2022APR VALUES LESS THAN (TO_DAYS('2022-05-01')), PARTITION p2022MAY VALUES LESS THAN (TO_DAYS('2022-06-01')), PARTITION p2022JUN VALUES LESS THAN (TO_DAYS('2022-07-01')), PARTITION p2022JUL VALUES LESS THAN (TO_DAYS('2022-08-01')), PARTITION p2022AUG VALUES LESS THAN (TO_DAYS('2022-09-01')), PARTITION p2022SEP VALUES LESS THAN (TO_DAYS('2022-10-01')), PARTITION p2022OCT VALUES LESS THAN (TO_DAYS('2022-11-01')), PARTITION p2022NOV VALUES LESS THAN (TO_DAYS('2022-12-01')), PARTITION p2022DEC VALUES LESS THAN (TO_DAYS('2023-01-01')), PARTITION pfuture VALUES LESS THAN MAXVALUE ); CREATE TABLE orders_2021_and_older ( orderid bigint NOT NULL AUTO_INCREMENT, customerid bigint DEFAULT NULL, ............ ............ order_date date NOT NULL, PRIMARY KEY (`orderid`,`order_date`)); mysql> alter table orderprocessing.orders exchange partition phistorical with table archive.orders_2021_and_older; Query OK, 0 rows affected (0.33 sec)
Wenn du das benutztEXCHANGE PARTITION
Um historische Daten zu archivieren, empfehlen wir die folgenden Best Practices:
-
Erstellen Sie ein separates Schema zum Speichern von Archivdaten in Ihrer Anwendung. Dieses Schema wird Archivtabellen enthalten, in denen archivierte Daten gespeichert werden. Eine Archivtabelle in Ihrem Archivschema sollte dieselbe Struktur wie Ihre Live-Tabelle haben, einschließlich ihrer Indizes und ihres Primärschlüssels. Die Zielarchivtabelle kann jedoch keine partitionierte Tabelle sein. Der Austausch von Partitionen zwischen zwei partitionierten Tabellen ist in MySQL nicht zulässig.
-
Folgen Sie einer Namenskonvention für Ihre Archivtabelle, anhand derer Sie die darin gespeicherten historischen Daten identifizieren können. Dies ist nützlich, wenn Sie Prüfungsaufgaben ausführen oder Jobs entwerfen, die diese Daten nach Amazon S3 verschieben.
-
Führen Sie die
EXCHANGE PARTITION
DDL-Anweisung (Data Definition Language) in einem Ausfallfenster, wenn kein Datenverkehr in Ihren Aurora MySQL-kompatiblen Writer, Amazon RDS für MySQL oder Amazon RDS für MariaDB-Instances eingeht.Es könnte möglich sein zu rennen
EXCHANGE PARTITION
bei wenig frequentierten Fenstern in Ihrer Anwendung oder Ihrem Microservice. Es sollte jedoch keine Schreibvorgänge und keine oder nur sehr wenige Auswahlen in der partitionierten Tabelle geben. Bestehende lang andauernde Auswahlabfragen können dazu führen, dassEXCHANGE PARTITION
DDL wartet, was zu Ressourcenkonflikten in Ihrer Datenbank führt. Entwerfen Sie Skripts, die verifizieren, dass all diese Bedingungen erfüllt sind, bevor Sie sie ausführenEXCHANGE PARTITION
auf Ihrem System.
Wenn Ihr Anwendungsdesign partitionierte Daten unterstützen kann und Sie derzeit über eine unpartitionierte Tabelle verfügen, sollten Sie erwägen, Ihre Daten in partitionierte Tabellen zu verschieben, um die Archivierung Ihrer Daten zu unterstützen. Weitere Informationen finden Sie in der MySQL-Dokumentation