Réorganiser et gérer les partitions
Dans cette étape, nous allons apprendre à modifier la structure de partitionnement d'une table existante à l'aide de l'instruction ALTER TABLE. Ceci est utile pour adapter votre schéma de partitionnement à mesure que vos données augmentent ou que vos besoins évoluent.
Rappel : Vous devriez toujours être dans le shell MySQL et utiliser la base de données sales_data. Si ce n'est pas le cas, utilisez :
USE sales_data;
Supposons que nous voulions ajouter une nouvelle partition pour l'année 2024. Actuellement, les données de 2024 et au-delà se trouvent dans la partition pFuture. Vous ne pouvez pas ajouter une nouvelle partition avec ADD PARTITION car la partition pFuture est définie avec VALUES LESS THAN MAXVALUE, qui doit toujours être la dernière partition.
Au lieu de cela, nous devons REORGANIZE la partition pFuture pour la diviser. Nous allons diviser pFuture en deux nouvelles partitions : une pour l'année 2024 (p2024) et une nouvelle partition pFuture pour tout ce qui suit.
ALTER TABLE sales REORGANIZE PARTITION pFuture INTO (
PARTITION p2024 VALUES LESS THAN (2025),
PARTITION pFuture VALUES LESS THAN MAXVALUE
);
Cette commande prend la partition pFuture existante, déplace toutes les données de 2024 vers la nouvelle partition p2024, et redéfinit pFuture pour couvrir les dates à partir de 2025. La ligne avec sale_date '2024-01-01' sera déplacée vers p2024.
Vérifions la structure de partitionnement mise à jour et le nombre de lignes :
SELECT
PARTITION_NAME,
TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS
WHERE
TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';
Vous devriez voir la nouvelle partition p2024. La ligne de 2024 se trouve maintenant dans p2024.
+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| p2020 | 0 |
| p2021 | 2 |
| p2022 | 2 |
| p2023 | 2 |
| p2024 | 0 |
| pFuture | 0 |
+----------------+------------+
Démontrons maintenant la fusion de partitions. Supposons que nous voulions combiner les partitions p2020 et p2021 en une seule partition nommée p2020_2021.
ALTER TABLE sales REORGANIZE PARTITION p2020, p2021 INTO (
PARTITION p2020_2021 VALUES LESS THAN (2022)
);
Cette commande fusionne les données de p2020 et p2021 dans une nouvelle partition appelée p2020_2021. La clause VALUES LESS THAN (2022) définit la nouvelle limite pour cette partition fusionnée.
Vérifiez à nouveau la structure de partitionnement :
SELECT
PARTITION_NAME,
TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS
WHERE
TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';
Vous verrez que p2020 et p2021 ont disparu, et que p2020_2021 existe avec le nombre total de lignes combiné.
+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| p2020_2021 | 3 |
| p2022 | 2 |
| p2023 | 2 |
| p2024 | 0 |
| pFuture | 0 |
+----------------+------------+
Enfin, supprimons une partition. Nous pouvons supprimer la partition p2024. Notez que cela supprimera également toutes les données contenues dans cette partition.
ALTER TABLE sales DROP PARTITION p2024;
Vérifions la structure de partitionnement une dernière fois :
SELECT
PARTITION_NAME,
TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS
WHERE
TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';
La partition p2024 ne devrait plus être listée.
+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| p2020_2021 | 3 |
| p2022 | 2 |
| p2023 | 2 |
| pFuture | 0 |
+----------------+------------+
Vous avez réussi à réorganiser, fusionner et supprimer des partitions en utilisant ALTER TABLE. Cela démontre la flexibilité de la gestion des tables partitionnées à mesure que vos données évoluent.