Archivage des données dans des tables partitionnées - AWS Conseils prescriptifs

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 MySQLpartitionnementpour le moteur de stockage InnoDB, et vous pouvez utiliser cette fonctionnalité pour partitionner de grandes tables. Les partitions de la table sont stockées sous forme de tables physiques distinctes, bien que le code SQL qui opère sur la table partitionnée lise la table entière. Cela vous donne la liberté de supprimer des partitions inutiles de la table sans exécuterrow-by-rowsupprime, afin que vous puissiez archiver les lignes historiques dans votre base de données.

Examinez l'exemple de code suivant.TABLE ordersexiste au sein duorderprocessingschéma. Ses données historiques sont présentes dans la partitionphistorical, 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_olderavec la même structure dansarchiveschéma. Vous pouvez ensuite utiliser MySQLPARTITION D'ÉCHANGEpour déplacer la partitionphistoricaldans 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 PARTITIONfonctionnalité 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 leEXCHANGE PARTITIONinstruction 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 courirEXCHANGE PARTITIONpendant 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 PARTITIONDDL 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 PARTITIONsur 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.