AnalyticDB for MySQL vous permet de stocker les partitions chaudes et froides sur des supports distincts : des SSD pour les données chaudes et Object Storage Service (OSS) pour les données froides. Cette approche garantit des performances de requête élevées là où elles sont essentielles, tout en maîtrisant les coûts de stockage.
Le stockage hiérarchisé s'applique uniquement aux tables partitionnées par date ou par heure. Le cluster doit exécuter la version mineure 3.1.3.3 ou ultérieure et appartenir à l'une des éditions suivantes : Enterprise Edition, Basic Edition, Data Lakehouse Edition ou Data Warehouse Edition (mode Elastic). Pour vérifier ou mettre à jour la version mineure, connectez-vous à la console AnalyticDB for MySQL et accédez à la section Configuration Information de la page Cluster Information.
Choisir une politique de stockage
AnalyticDB for MySQL propose trois politiques de stockage. Utilisez le tableau ci-dessous pour sélectionner celle qui correspond le mieux à votre charge de travail :
| Politique de stockage | Emplacement des données | Cas d'usage idéal | Coût |
|---|---|---|---|
| Stockage chaud | Toutes les données sur SSD | Tables fréquemment interrogées avec des exigences strictes en matière de latence | Le plus élevé |
| Stockage froid | Toutes les données dans OSS (stockage redondant interzones, ZRS) | Données d'archivage rarement ou jamais consultées | Le plus bas |
| Stockage mixte | Partitions chaudes sur SSD, partitions froides dans OSS | Grandes tables partitionnées temporellement dont les données récentes sont actives et les anciennes rarement interrogées | Moyen |
Critères de sélection :
Optez pour le stockage chaud lorsque la latence des requêtes est critique et que vous accédez régulièrement à la majorité des données.
Privilégiez le stockage froid pour les données archivées que vous n'interrogez presque jamais.
Le stockage mixte convient aux charges de travail de séries temporelles, telles que les tables de journaux, l'historique des commandes et les données de surveillance. Il s'agit du choix le plus courant pour les grandes tables partitionnées.
Fonctionnement du stockage mixte
Lorsque vous choisissez le stockage mixte, vous spécifiez le nombre de partitions chaudes (N). AnalyticDB for MySQL trie toutes les partitions par valeur de clé de partition dans l'ordre décroissant : les N premières partitions sont considérées comme chaudes et stockées sur des SSD, tandis que les autres sont froides et stockées dans OSS.
En cas d'ajout de partitions ou de modification du nombre de partitions chaudes, le système retrier et migre automatiquement les données afin de maintenir la distribution correcte. Pour plus de détails, consultez la section Impact des modifications du nombre de partitions.
Définir une politique de stockage
Lors de la création de la table
Spécifiez la politique à l'aide du paramètre storage_policy dans votre instruction CREATE TABLE :
CREATE TABLE your_table (
...
)
PARTITION BY ...
PROPERTIES (
"storage_policy" = "MIXED", -- HOT, COLD, or MIXED
"hot_partition_count" = "5" -- Required when storage_policy = MIXED
);
Pour une table existante
Utilisez l'instruction ALTER TABLE pour modifier la politique de stockage. Après l'exécution de cette commande, vous pouvez suivre la progression de la migration. Consultez la section Suivre la progression de la modification de la politique de stockage.
-- Switch to mixed storage with 5 hot partitions
ALTER TABLE your_table
SET PROPERTIES (
"storage_policy" = "MIXED",
"hot_partition_count" = "5"
);
Pour la référence complète de la syntaxe, consultez les rubriques CREATE TABLE et ALTER TABLE.
Après avoir défini ou modifié une politique de stockage, la migration des données entre le stockage chaud et froid nécessite l'exécution d'une tâche BUILD. Vous pourrez consulter les tailles mises à jour des données chaudes et froides une fois la tâche BUILD terminée. Si aucune modification de données n'intervient après la définition de la politique, le système ne déclenche pas automatiquement de tâche BUILD. Dans ce cas, vous devez exécuter manuellement BUILD TABLE pour lancer la migration des données.
Facturation
Une fois le stockage hiérarchisé des données chaudes et froides activé, le stockage des données froides fait l'objet de frais distincts facturés à l'utilisation, indépendamment du stockage des données chaudes. Pour connaître les tarifs, consultez la page Tarification.
Utilisez les plans de stockage pour compenser les coûts de stockage.
Impact des modifications du nombre de partitions
Lors de l'insertion d'une nouvelle partition
Toutes les partitions sont retriées afin de conserver exactement N partitions chaudes. La partition dont la valeur de clé est la plus faible passe du statut chaud au statut froid.
Exemple : Le paramètre hot_partition_count est défini sur 5. Une nouvelle partition 20241226 (valeur de clé la plus élevée) est insérée. Après l'exécution d'une tâche BUILD, le système promeut 20241226 au statut chaud et déplace 20241221 (la précédente partition chaude ayant la valeur de clé la plus faible) vers le stockage froid.
Lors de la modification du nombre de partitions chaudes
Augmentation de N à M (M > N) : Les
M - Npartitions froides possédant les valeurs de clé les plus élevées sont promues au statut chaud.Diminution de N à M (M < N) : Les
N - Mpartitions chaudes possédant les valeurs de clé les plus faibles sont rétrogradées au statut froid.
Exemple — augmentation de 5 à 6 : La partition 20241220 (clé de partition froide la plus élevée) passe du stockage froid au stockage chaud.
Exemple — diminution de 5 à 4 : La partition 20241221 (clé de partition chaude la plus faible) passe du stockage chaud au stockage froid.
Interroger la politique de stockage
Requête pour toutes les tables
SELECT * FROM information_schema.table_usage;
Requête pour une table spécifique
SELECT * FROM information_schema.table_usage
WHERE table_schema = '<schema_name>' AND table_name = '<table_name>';
Paramètres de réponse
| Paramètre | Description |
|---|---|
table_schema |
Nom de la base de données |
table_name |
Nom de la table |
storage_policy |
Politique de stockage : HOT, COLD ou MIXED |
hot_partition_count |
Nombre de partitions chaudes (après union des shards ; peut dépasser la valeur configurée, voir la note ci-dessous) |
cold_partition_count |
Nombre de partitions froides |
rt_total_size |
Taille totale des données en temps réel (rt_data_size + rt_index_size). Unité : octets |
rt_data_size |
Taille des données en temps réel. Unité : octets |
rt_index_size |
Taille des données de clé primaire et d'index dans les données en temps réel. Unité : octets |
hot_total_size |
Taille totale des données dans les partitions chaudes (hot_data_size + hot_index_size). Unité : octets |
hot_data_size |
Taille des données dans les partitions chaudes. Unité : octets |
hot_index_size |
Taille des données de clé primaire et d'index dans les partitions chaudes. Unité : octets |
cold_total_size |
Taille totale des données dans les partitions froides (cold_data_size + cold_index_size). Unité : octets |
cold_data_size |
Taille des données dans les partitions froides. Unité : octets |
cold_index_size |
Taille des données de clé primaire et d'index dans les partitions froides. Unité : octets |
Remarques d'utilisation :
Toutes les valeurs de taille (
rt_*,hot_*,cold_*) évoluent au fil des opérations INSERT, UPDATE, DELETE et BUILD.Si
hot_total_sizeetcold_total_sizevalent tous deux 0 après l'écriture des données, celles-ci sont synchronisées en temps réel. La valeurrt_total_sizereflète alors la taille actuelle. Exécutez une instruction BUILD pour convertir les données en temps réel en données historiques ; les champshot_total_sizeetcold_total_sizeseront alors renseignés.Le paramètre
hot_partition_countconfiguré indique le nombre de partitions chaudes par shard. La valeurhot_partition_countrenvoyée par la requête correspond à l'union sur l'ensemble des shards et peut être supérieure si la distribution des partitions diffère d'un shard à l'autre.
Exemple — différence entre la valeur hot_partition_count interrogée et la valeur configurée :
La table A comporte deux shards et le paramètre hot_partition_count est configuré sur 2.
Shard 1 : P4 et P5 sont chaudes ; P1, P2 et P3 sont froides.
Shard 2 : P3 et P4 sont chaudes ; P1 et P2 sont froides.
La valeur interrogée correspond à l'union : {P4, P5} ∪ {P3, P4} = {P3, P4, P5}, donc hot_partition_count renvoie 3.
Suivre la progression de la modification de la politique de stockage
Après avoir exécuté l'instruction ALTER TABLE pour modifier une politique de stockage, suivez la progression de la migration via la vue information_schema.storage_policy_modify_progress.
Requête pour toutes les tables
SELECT * FROM information_schema.storage_policy_modify_progress;
Requête pour une table spécifique
SELECT * FROM information_schema.storage_policy_modify_progress
WHERE table_schema = '<schema_name>' AND table_name = '<table_name>';
Paramètres de réponse
| Paramètre | Description |
|---|---|
table_schema |
Nom de la base de données |
table_name |
Nom de la table |
task_id |
ID de la tâche de modification de la politique de stockage |
source_storage_policy |
Politique de stockage d'origine : HOT, COLD ou MIXED |
source_hot_partition_count |
Nombre de partitions chaudes avant la modification |
dest_storage_policy |
Nouvelle politique de stockage : HOT, COLD ou MIXED |
dest_hot_partition_count |
Nombre de partitions chaudes après la modification |
hot_to_cold_partition_count |
Nombre de partitions déplacées du stockage chaud vers le stockage froid |
cold_to_hot_partition_count |
Nombre de partitions déplacées du stockage froid vers le stockage chaud |
hot_to_cold_data_size |
Taille des données déplacées du stockage chaud vers le stockage froid. Unité : octets |
cold_to_hot_data_size |
Taille des données déplacées du stockage froid vers le stockage chaud. Unité : octets |
hot_data_size_before_change |
Taille des données chaudes avant la modification. Unité : octets |
cold_data_size_before_change |
Taille des données froides avant la modification. Unité : octets |
hot_data_size_after_change |
Taille des données chaudes après la modification. Unité : octets |
cold_data_size_after_change |
Taille des données froides après la modification. Unité : octets |
start_time |
Début de la plage horaire durant laquelle la politique de stockage est modifiée |
update_time |
Fin de la plage horaire durant laquelle la politique de stockage est modifiée |
progress |
Progression de la modification. Unité : % |
status |
État de la modification : INIT (non démarré), RUNNING (en cours) ou FINISH (terminé) |