Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Archivage des données dans des tables partitionnées
Supports MySQLpartitionnement
Examinez l'exemple de code suivant.TABLE orders
existe au sein duorderprocessing
schéma. Ses données historiques sont présentes dans la partitionphistorica
l, qui contient des données datant de 2021 et antérieures. Dans le même tableau, les données les plus populaires au niveau de l'application sont présentes dans les partitions actives pour chaque mois de 2022. Pour archiver les données de la partitionphistorical
, vous pouvez créer une archivetable orders_2021_and_older
avec la même structure dansarchive
schéma. Vous pouvez ensuite utiliser MySQLPARTITION D'ÉCHANGEphistorical
dans cette table. Notez que la table d'archive n'est pas partitionnée. Après l'archivage, vous pouvez vérifier vos données et les déplacer vers Amazon S3.
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)
Lorsque vous utilisez leEXCHANGE PARTITION
fonctionnalité permettant d'archiver les données historiques, nous recommandons les meilleures pratiques suivantes :
-
Créez un schéma distinct pour stocker les données d'archive dans votre application. Ce schéma contiendra des tables d'archives qui hébergeront les données archivées. Une table d'archive de votre schéma d'archive doit avoir la même structure que votre table active, y compris ses index et sa clé primaire. Toutefois, la table d'archive cible ne peut pas être une table partitionnée. L'échange de partitions entre deux tables partitionnées n'est pas autorisé dans MySQL.
-
Suivez une convention de dénomination pour votre table d'archive qui vous aide à identifier les données historiques qui y sont stockées. Cela est utile lorsque vous effectuez des tâches d'audit ou de conception qui déplacent ces données vers Amazon S3.
-
Exécutez le
EXCHANGE PARTITION
instruction DDL (langage de définition de données) dans une fenêtre d'indisponibilité lorsqu'aucun trafic n'entre dans votre enregistreur compatible Aurora MySQL, Amazon RDS pour MySQL ou vos instances Amazon RDS pour MariaDB.Il est peut-être possible de courir
EXCHANGE PARTITION
pendant les fenêtres à faible trafic de votre application ou de votre microservice. Toutefois, il ne doit y avoir aucune écriture et aucune ou très peu de sélections sur la table partitionnée. Les requêtes de sélection de longue durée existantes peuvent provoquer votreEXCHANGE PARTITION
DDL doit attendre, ce qui entraîne des conflits de ressources sur votre base de données. Créez des scripts qui vérifient que toutes ces conditions sont remplies avant de les exécuterEXCHANGE PARTITION
sur votre système.
Si la conception de votre application peut prendre en charge des données partitionnées et que vous disposez actuellement d'une table non partitionnée, envisagez de déplacer vos données dans des tables partitionnées pour faciliter l'archivage de vos données. Pour plus d'informations, veuillez consulter la documentation MySQL