PolarDB for MySQL permet de créer des index partiels dans une table partitionnée. Vous pouvez ainsi définir des index sur une ou plusieurs partitions spécifiques plutôt que sur l'ensemble des partitions. Cette fonctionnalité permet d'adapter les index aux besoins de requête de chaque partition tout en économisant de l'espace de stockage.
Cas d'usage
-
Tables de commandes ou journaux
Les tables de commandes et les journaux utilisent généralement un partitionnement par plage temporelle. Toutefois, seules les une ou deux partitions les plus récentes font l'objet de requêtes fréquentes. Il est donc pertinent de créer des index secondaires uniquement sur ces partitions actives. Cependant, MySQL natif et d'autres bases de données imposent la création d'index identiques sur toutes les partitions. Bien que cette contrainte réponde aux besoins des partitions sollicitées, elle entraîne une consommation excessive d'espace due aux index secondaires créés sur les partitions inactives.
Dans ce contexte, les index partiels offrent une solution adaptée. En limitant la création des index secondaires aux seules partitions chaudes, vous répondez aux exigences de requête tout en optimisant significativement l'espace de stockage.
-
Requêtes et analyse de données historiques
L'interrogation et l'analyse de données historiques reposent couramment sur un partitionnement par plage temporelle. Les nouvelles partitions nécessitent une insertion rapide des données et des requêtes simples, tandis que les analyses lourdes portent principalement sur les partitions historiques. Pour satisfaire ces besoins analytiques, la création de multiples index secondaires semble nécessaire, mais leur accumulation finit par dégrader les performances d'écriture.
Les index partiels permettent de résoudre ce problème : créez des index secondaires légers pour les requêtes simples sur les partitions chaudes et réservez les index analytiques complexes aux partitions historiques.
En adaptant ainsi les index aux besoins métier de chaque partition, vous garantissez des insertions performantes sur les données récentes tout en maintenant des capacités d'analyse sur l'historique. De plus, cette stratégie minimise l'espace occupé par les index secondaires.
Prérequis
Le cluster doit exécuter PolarDB for MySQL 8.0.2 en version de révision 8.0.2.2.21 ou ultérieure. Pour vérifier la version de votre cluster, consultez la section « Query the engine version » de la rubrique Engine versions.
Limites
La création d'index partiels sur des clés primaires n'est pas prise en charge.
Un global secondary index (GSI) ne peut pas être configuré comme index partiel. Néanmoins, il est possible de combiner un index secondaire global et un index partiel au sein de la même table partitionnée.
Les index de type FULLTEXT et SPATIAL ne sont pas compatibles avec la fonctionnalité d'indexation partielle.
L'optimiseur sélectionne uniquement les index existants sur la table partitionnée pour accéder aux données.
Utilisation
Vous pouvez créer un index partiel dans une table partitionnée, puis le modifier ultérieurement selon vos besoins. Pour plus d'informations sur ces opérations, consultez les rubriques Create a partial index et Modify a partial index.
La création d'index partiels dans une table partitionnée est en cours de déploiement progressif. Pour utiliser cette fonctionnalité et bénéficier d'un support technique, rejoignez le groupe DingTalk 24490017825.