Si votre activité doit gérer à la fois des charges de travail OLTP (traitement transactionnel en ligne) à forte concurrence et des charges de travail OLAP (traitement analytique en ligne) complexes, ajoutez une instance en lecture seule analytique basée sur DuckDB à votre instance RDS for MySQL. Grâce au proxy de base de données, activez le routage automatique des requêtes HTAP ou le routage manuel avec un indice. Cette fonctionnalité dirige les requêtes OLAP vers l'instance en lecture seule analytique basée sur DuckDB et les requêtes OLTP vers l'instance principale ou les instances en lecture seule classiques, afin d'intégrer efficacement le traitement des transactions et l'analyse des données.
Présentation
La solution de routage des requêtes HTAP pour RDS for MySQL exploite les avantages spécifiques de différents moteurs de stockage. Un proxy de base de données achemine automatiquement les requêtes vers le type d'instance le plus adapté, selon le coût d'exécution estimé des requêtes SQL. Cela permet d'isoler les charges de travail et d'optimiser les performances.
Types d'instances
Instance orientée ligne : L'instance principale RDS for MySQL et les instances en lecture seule classiques. Ces instances utilisent le moteur InnoDB et sont idéales pour traiter les requêtes de lecture et d'écriture OLTP à forte concurrence.
Instance columnstore : L'instance en lecture seule analytique basée sur DuckDB. Cette instance utilise le moteur DuckDB et convient aux requêtes analytiques OLAP complexes.
Méthodes de routage
RDS for MySQL prend en charge les deux méthodes de routage des requêtes suivantes :
Routage automatique des requêtes HTAP : Achemine automatiquement les requêtes OLAP et OLTP vers des instances columnstore ou orientées ligne, selon le coût d'exécution estimé de l'instruction SQL.
Routage manuel avec un indice : Si le routage automatique n'est pas efficace ou si votre version de MySQL ne prend pas en charge l'estimation des coûts, utilisez un
hintpour spécifier manuellement la destination du routage.
Coût d'exécution SQL
Lorsque vous utilisez le routage automatique, exécutez la commande SHOW STATUS LIKE 'Last_query_cost' pour vérifier le coût d'exécution estimé d'une instruction SQL. Cela vous aide à comprendre la logique de routage. Nous vous recommandons d'exécuter l'instruction EXPLAIN avant de vérifier le coût d'exécution.
Exemple
Consultez le coût d'exécution estimé de l'instruction SELECT COUNT(*) FROM sbtest5.sbtest1 :
EXPLAIN SELECT COUNT(*) FROM sbtest5.sbtest1;
SHOW STATUS LIKE 'Last_query_cost';
-- Example result:
+-------------------+---------------+
| Variable_name | Value |
+-------------------+---------------+
| Last_query_cost | 84454.999000 |
+-------------------+---------------+
Le résultat indique que le coût d'exécution estimé de l'instruction SQL est de 84454.999000. Le système utilise cette valeur pour déterminer s'il faut acheminer la requête vers une instance columnstore.
Prérequis
Pour utiliser le routage automatique des requêtes HTAP, l'instance principale doit remplir les conditions suivantes :
L'instance exécute MySQL 8.0 avec une version mineure du moteur 20250731 ou ultérieure, ou MySQL 5.7 avec une version mineure du moteur 20260228 ou ultérieure.
Une instance en lecture seule analytique basée sur DuckDB a été ajoutée.
La fonctionnalité de proxy de base de données est activée et la version du proxy de base de données est 2.25.8 ou ultérieure.
Pour mettre à niveau la version mineure du moteur MySQL et la version du proxy de base de données, consultez Mettre à niveau la version mineure du moteur et Mettre à niveau la version mineure du moteur d'un proxy de base de données.
Remarques importantes
Le seuil de latence et le niveau de cohérence du proxy de base de données s'appliquent également aux instances en lecture seule analytiques basées sur DuckDB.
Le poids de lecture des instances en lecture seule analytiques basées sur DuckDB affecte uniquement l'équilibrage de charge entre ces instances et n'influence pas la logique de routage entre les instances orientées ligne et columnstore.
Si toutes les instances en lecture seule analytiques basées sur DuckDB sont saturées, les requêtes analytiques suivantes sont mises en file d'attente pour traitement sur ces instances.
Après avoir défini le poids de lecture du point de terminaison du proxy sur CustomCustom, le poids de lecture de toute nouvelle instance en lecture seule analytique basée sur DuckDB ajoutée à l'instance principale est par défaut de 0 et doit être configuré manuellement.
Vous pouvez configurer librement le seuil de latence, le niveau de cohérence, l'attribut de lecture/écriture et les poids de lecture du proxy de base de données. Pour plus d'informations, consultez Configurer un proxy de base de données.
Routage automatique des requêtes HTAP
Activer le routage automatique des requêtes
Connectez-vous à la console RDS. Dans le volet de navigation de gauche, cliquez sur InstancesInstances. Dans la barre de navigation supérieure, sélectionnez la région de votre instance.
Sur la page InstancesInstances, cliquez sur l'ID de l'instance principale cible. L'instance principale est identifiée par l'icône

.Dans le volet de navigation de gauche, cliquez sur Database ProxyDatabase Proxy.
Dans la section Connection InformationConnection Information, recherchez le point de terminaison du proxy cible et cliquez sur Modify ConfigurationModify Configuration dans la colonne ActionsActions.
Dans la boîte de dialogue qui s'affiche, activez HTAP Query RoutingHTAP Query Routing et cliquez sur OKOK.
Attribuer des poids de lecture aux instances DuckDB
Si votre instance RDS for MySQL dispose de plusieurs instances en lecture seule analytiques basées sur DuckDB, définissez un poids de lecture pour chaque instance selon vos besoins métier. Par défaut, le poids de lecture du point de terminaison du proxy est défini sur AutomaticAutomatic. Plus le poids de lecture est élevé, plus l'instance traite de requêtes de lecture.
Connectez-vous à la console RDS. Dans le volet de navigation de gauche, cliquez sur InstancesInstances. Dans la barre de navigation supérieure, sélectionnez une région.
Sur la page InstancesInstances, cliquez sur l'ID de l'instance principale cible, identifiée par l'icône

.Dans le volet de navigation de gauche, cliquez sur Database ProxyDatabase Proxy.
Dans la section Connection InformationConnection Information, recherchez le point de terminaison du proxy cible et cliquez sur Modify ConfigurationModify Configuration dans la colonne ActionsActions.
-
Dans la boîte de dialogue qui s'affiche, définissez Read Weight AllocationRead Weight Allocation sur CustomCustom.
Une fois l'option définie sur CustomCustom, le poids de lecture de toute nouvelle instance en lecture seule analytique basée sur DuckDB ajoutée à cette instance principale est par défaut de 0 et doit être configuré manuellement.
-
Dans la section DuckDB Analytical Read-Only Instance Read Weight AllocationDuckDB Analytical Read-Only Instance Read Weight Allocation, définissez le poids de lecture pour chaque instance en lecture seule analytique basée sur DuckDB selon vos besoins.
Par exemple, supposons qu'une instance principale et ses trois instances en lecture seule analytiques basées sur DuckDB aient leurs poids de lecture définis respectivement sur 0, 100, 200 et 200. Cela signifie que l'instance principale ne traite pas les requêtes de lecture (les requêtes d'écriture lui sont toujours envoyées automatiquement) et que les trois instances en lecture seule traitent les requêtes de lecture selon un ratio de 1:2:2.
RemarqueLe poids de lecture peut être défini sur une valeur comprise entre 0 et 10 000.
Si une instance en lecture seule analytique basée sur DuckDB est supprimée, son poids est automatiquement retiré. Les poids des autres instances restent inchangés.
Les modifications apportées à ce paramètre prennent effet immédiatement et n'entraînent aucune interruption de service. Les connexions existantes ne sont pas interrompues. Les nouvelles connexions et les connexions existantes sont acheminées en fonction des nouveaux poids.
Configurer le seuil de coût d'exécution SQL
Lorsque vous activez le routage automatique des requêtes HTAP, le seuil de coût d'exécution SQL est par défaut de 500 000. Dans la plupart des cas, cette valeur par défaut suffit pour acheminer les requêtes de base de données :
Les requêtes dont le coût estimé est inférieur au seuil de coût d'exécution SQL sont acheminées vers une instance orientée ligne (l'instance principale ou une instance en lecture seule classique).
Les requêtes dont le coût estimé est supérieur au seuil de coût d'exécution SQL sont acheminées vers une instance columnstore (une instance en lecture seule analytique basée sur DuckDB).
Si vous devez définir un seuil personnalisé mieux adapté à vos besoins métier, procédez comme suit :
Estimez le coût d'exécution SQL en fonction de vos besoins métier.
-
Configurez le seuil de coût d'exécution SQL :
Connectez-vous à la console RDS. Dans le volet de navigation de gauche, cliquez sur InstancesInstances. Dans la barre de navigation supérieure, sélectionnez une région.
Sur la page InstancesInstances, cliquez sur l'ID de l'instance principale cible, identifiée par l'icône

.Dans le volet de navigation de gauche, cliquez sur Database ProxyDatabase Proxy.
Dans la section Connection InformationConnection Information, recherchez le point de terminaison du proxy cible et cliquez sur Modify ConfigurationModify Configuration dans la colonne ActionsActions.
Dans la boîte de dialogue, modifiez le SQL Execution Cost Threshold for HTAP Automatic Query RoutingSQL Execution Cost Threshold for HTAP Automatic Query Routing et cliquez sur OKOK.
Routage manuel avec un indice
Si les performances du routage automatique sont insuffisantes ou si l'estimation des coûts n'est pas disponible pour votre version de MySQL, ajoutez un indice à une instruction SQL pour forcer un itinéraire de requête spécifique. L'indice n'affecte que l'instruction SQL actuelle.
-
Forcer le routage vers une instance columnstore (instance en lecture seule analytique basée sur DuckDB)
/*force_ap_nodes*/ SELECT COUNT(*) FROM <target_table_name>; -
Forcer le routage vers une instance orientée ligne (instance principale ou instance en lecture seule classique)
SELECT /*+set_var(rds_cost_threshold_for_duckdb = 0)*/ COUNT(*) FROM <target_table_name>;
Documents et API associés
-
API associées
DescribeDBProxy : Interroge les détails d'un proxy de base de données.
DescribeDBProxyEndpoint : Interroge les informations relatives à un point de terminaison de proxy.
ModifyDBProxyEndpoint : Configure la politique d'accès d'un point de terminaison de proxy.
Annexe : Principes du routage automatique des requêtes HTAP
Le proxy de base de données reçoit une requête et la transfère à une instance orientée ligne, telle que l'instance principale ou une instance en lecture seule classique.
-
L'optimiseur de l'instance orientée ligne analyse la requête et estime si son coût d'exécution dépasse le seuil configuré.
Si le coût d'exécution estimé est inférieur au seuil de coût d'exécution SQL, la requête est exécutée sur une instance orientée ligne. Si plusieurs instances en lecture seule classiques existent, la requête est acheminée selon les règles d'équilibrage de charge.
Si le coût d'exécution estimé est supérieur au seuil de coût d'exécution SQL, la requête est exécutée sur une instance columnstore. Si plusieurs instances columnstore existent, la requête est acheminée selon les règles d'équilibrage de charge.