Reportez-vous à la section Démarrage rapide pour configurer votre cluster afin de prendre en charge les charges de travail HTAP (Hybrid Transactional/Analytical Processing), ou à la section Utilisation avancée pour personnaliser IMCI selon vos besoins métier spécifiques.
Démarrage rapide
Étape 1 : Ajouter un nœud IMCI en lecture seule
Connectez-vous à la console PolarDB. Dans le volet de navigation de gauche, cliquez sur Cluster List. Sélectionnez la région de votre cluster et localisez-le. Dans la colonne Actions, cliquez sur Add/Remove Node pour ajouter un nœud IMCI en lecture seule.
Si vous avez déjà ajouté un nœud IMCI en lecture seule lors de l'achat du cluster, ignorez cette étape.
Votre cluster doit respecter les prérequis de version pour IMCI. Pour plus d'informations, consultez la rubrique relative au nœud IMCI en lecture seule.
Étape 2 : Configurer le routage des requêtes
Selon vos besoins métier, optez pour un routage automatique ou manuel des requêtes afin d'utiliser IMCI.
Routage automatique des requêtes : si vos charges de travail OLTP (Online Transactional Processing) et OLAP (Online Analytical Processing) accèdent à la base de données depuis la même application, routez automatiquement les requêtes en lecture vers des nœuds IMCI en lecture seule ou vers des nœuds de stockage ligne en lecture seule. Ce choix s'appuie sur le coût d'exécution estimé, déterminé par le nombre de lignes analysées.
Routage manuel des requêtes : si vos charges de travail OLTP et OLAP accèdent à la base de données depuis des applications distinctes, configurez des endpoints de cluster différents pour chacune d'elles. Acheminez ensuite les requêtes vers les stockages ligne et colonne en assignant des nœuds IMCI en lecture seule et des nœuds de stockage ligne en lecture seule aux nœuds de service associés à ces endpoints.
Routage automatique des requêtes
Sur la page des détails du cluster, accédez à la section Database Connections. Pour l'Cluster Endpoint, définissez l'option Row Store/Column Store Automatic Routing sur Enable.
Les modifications apportées auService Nodene s'appliquent qu'aux nouvelles connexions. Reconnectez-vous au cluster après avoir effectué la modification.
Si vous vous connectez au cluster via DMS, notez que DMS utilise par défaut l'Primary address. Vous devez utiliser manuellement l'endpoint de cluster pour vous connecter au cluster PolarDB.
Le seuil de coût d'exécution estimé par défaut pour le routage automatique des requêtes est de 50 000 lignes analysées. Vous pouvez ajuster ce paramètre en fonction de vos besoins métier.
Routage manuel des requêtes
Sur la page des détails du cluster, accédez à la section Database Connections et créez un endpoint personnalisé. Assurez-vous que le Service Node inclut uniquement des read-only IMCI nodes.
Étape 3 : Ajouter un index IMCI
Ajoutez des index IMCI à vos tables manuellement ou automatiquement, selon vos besoins métier.
Pour qu'une requête soit accélérée par IMCI, toutes les colonnes référencées dans l'instruction SQL doivent être entièrement couvertes par un index IMCI.
Manuel
IMCI propose un ensemble complet d'instructions DDL pour ajouter ou supprimer des index IMCI sur les tables métier. Choisissez l'option adaptée à vos besoins :
|
Syntaxe DDL |
Exemple |
|
|
|
|
|
Ajouter ou supprimer des index IMCI par lots au niveau de la base de données ou de la table |
|
Lorsque vous ajoutez un index IMCI, vous pouvez conserver les commentaires existants. Exemple :
ALTER TABLE <table_name> COMMENT 'COLUMNAR=1 <original comment>';.Par défaut, lorsque vous ajoutez des index IMCI par lots au niveau de la base de données ou de la table, le commentaire de la table est mis à jour avec
'COLUMNAR=1 <original comment>'.
Automatique
La fonctionnalité AutoIndex permet de créer automatiquement des index IMCI en se basant sur vos requêtes lentes, améliorant ainsi considérablement leur vitesse d'exécution. Cela élimine la nécessité de comprendre et d'optimiser chaque requête lente individuellement. À mesure que la charge de travail de l'application évolue, AutoIndex surveille et ajuste continuellement la stratégie IMCI afin de garantir des performances optimales pour votre cluster PolarDB.
Pour bénéficier des avantages de cette fonctionnalité, il suffit d'Enable AutoIndex sur la page des détails du cluster PolarDB :
Dans la section Configuration, repérez AutoIndex (qui est Disabled par défaut) et cliquez sur Enable à droite.
(Facultatif) Étape 4 : Vérifier la progression de la construction de l'index IMCI
Après avoir ajouté manuellement un index IMCI, vérifiez sa progression de construction. Attendez la fin de la construction pour bénéficier de l'accélération des requêtes.
SELECT * FROM INFORMATION_SCHEMA.IMCI_ASYNC_DDL_STATS;
Exemple : vérifiez si la valeur de la colonne STATUS est Safe to read pour confirmer que l'index IMCI est entièrement construit.
+-------------+------------+---------------------+---------------------+---------------------+--------------+------------------+-----------------+-------------+-------------+-------------+------------+--------------+-----------+-------------------+-----------------+
| SCHEMA_NAME | TABLE_NAME | CREATED_AT | STARTED_AT | FINISHED_AT | STATUS | APPROXIMATE_ROWS | SCANNED_ROWS | SCAN_SECOND | SORT_ROUNDS | SORT_SECOND | BUILD_ROWS | BUILD_SECOND | AVG_SPEED | SPEED_LAST_SECOND | ESTIMATE_SECOND |
+-------------+------------+---------------------+---------------------+---------------------+--------------+------------------+-----------------+-------------+-------------+-------------+------------+--------------+-----------+-------------------+-----------------+
| tpch | lineitem | 2024-10-21 13:44:02 | 2024-10-21 13:44:02 | 2024-10-21 13:50:11 | Safe to read | 590446240 | 600037902(100%) | 369 | 0 | 0 | 0(0%) | 0 | 1625058 | 0 | 0 |
+-------------+------------+---------------------+---------------------+---------------------+--------------+------------------+-----------------+-------------+-------------+-------------+------------+--------------+-----------+-------------------+-----------------+
1 row in set, 1 warning (0.00 sec)
(Facultatif) Étape 5 : Vérifier l'utilisation de l'index IMCI
Un plan d'exécution IMCI s'affiche sous forme d'arborescence horizontale, dont le format diffère nettement de celui d'un plan d'exécution pour le stockage ligne. Utilisez l'instruction EXPLAIN pour afficher le plan d'exécution et déterminer si une instruction SQL peut être accélérée par IMCI. Les exemples suivants illustrent cette différence :
Plan d'exécution IMCI
+----+----------------------------+----------+--------+--------+-----------------------------------------------------------------------------+
| ID | Operator | Name | E-Rows | E-Cost | Extra Info |
+----+----------------------------+----------+--------+--------+-----------------------------------------------------------------------------+
| 1 | Select Statement | | | | IMCI Execution Plan (max_dop = 4, max_query_mem = 858993459) |
| 2 | └─Sort | | | | Sort Key: revenue DESC,o_orderdate ASC |
| 3 | └─Hash Groupby | | | | Group Key: (lineitem.L_ORDERKEY, orders.O_ORDERDATE, orders.O_SHIPPRIORITY) |
| 4 | └─Hash Join | | | | Join Cond: orders.O_ORDERKEY = lineitem.L_ORDERKEY |
| 5 | ├─Hash Join | | | | Join Cond: customer.C_CUSTKEY = orders.O_CUSTKEY |
| 6 | │ ├─Table Scan | customer | | | Cond: (C_MKTSEGMENT = "BUILDING") |
| 7 | │ └─Table Scan | orders | | | Cond: (O_ORDERDATE < 03/24/1995) |
| 8 | └─Table Scan | lineitem | | | Cond: (L_SHIPDATE > 03/24/1995) |
+----+----------------------------+----------+--------+--------+-----------------------------------------------------------------------------+
8 rows in set (0.01 sec)
Plan d'exécution du stockage ligne
+----+-------------+----------+------------+------+--------------------+------------+---------+-----------------------------+--------+----------+----------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+--------------------+------------+---------+-----------------------------+--------+----------+----------------------------------------------+
| 1 | SIMPLE | customer | NULL | ALL | PRIMARY | NULL | NULL | NULL | 147630 | 10.00 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | orders | NULL | ref | PRIMARY,ORDERS_FK1 | ORDERS_FK1 | 4 | tpch100g.customer.C_CUSTKEY | 14 | 33.33 | Using where |
| 1 | SIMPLE | lineitem | NULL | ref | PRIMARY | PRIMARY | 4 | tpch100g.orders.O_ORDERKEY | 4 | 33.33 | Using where |
+----+-------------+----------+------------+------+--------------------+------------+---------+-----------------------------+--------+----------+----------------------------------------------+
3 rows in set, 1 warning (0.00 sec)
Outils d'aide
Lorsque vous utilisez IMCI pour interroger des instructions SQL complexes, vérifiez si certaines colonnes de l'instruction SQL ne sont pas couvertes par un index IMCI. Si vous identifiez des colonnes non couvertes, obtenez les instructions DDL permettant de créer un index IMCI pour l'instruction SQL concernée, ou récupérez par lot les instructions DDL pour créer des index IMCI pour une charge de travail spécifique. Après avoir exécuté les instructions DDL, assurez-vous que toutes les colonnes référencées dans l'instruction SQL sont couvertes par un index IMCI afin d'activer l'accélération des requêtes.
PolarDB fournit les procédures stockées intégrées suivantes :
Vérifier si certaines colonnes d'une instruction SQL ne sont pas couvertes par un index IMCI :
dbms_imci.check_columnar_index('<query_string>');.Obtenir les instructions DDL pour créer un index IMCI :
dbms_imci.columnar_advise('<query_string>');etdbms_imci.columnar_advise_by_columns('<query_string>');.Récupérer par lot les instructions DDL pour créer des index IMCI :
dbms_imci.columnar_advise_begin();,dbms_imci.columnar_advise_show();etdbms_imci.columnar_advise_end();.
FAQ
La requête n'utilise pas IMCI
Pour plus d'informations, consultez la FAQ IMCI.
Utilisation avancée
Consultez les rubriques suivantes pour optimiser votre utilisation d'IMCI.
|
Fonctionnalité avancée |
Description |
|
IMCI organise les données en groupes de lignes. Dans chaque groupe, différentes colonnes sont regroupées en blocs de données colonne. Ces blocs sont construits en parallèle selon l'ordre de la clé primaire des données ligne d'origine, ce qui entraîne un état global non trié. Configurez une clé de tri pour réorganiser les blocs de données colonne et améliorer les performances des requêtes. |
|
|
IMCI intègre un ensemble de fonctionnalités telles que JSON colonne, colonnes virtuelles, DDL instantané et extension du nombre de colonnes pour gérer l'analyse de données structurées et semi-structurées à grande échelle. |
|
|
La fonctionnalité ETL (Extract, Transform, Load) vous permet d'utiliser IMCI sur un nœud en lecture-écriture (RW). Les requêtes |
|
|
La fonctionnalité Serverless met automatiquement à l'échelle les ressources à la hausse et à la baisse en fonction de votre charge de travail. Elle augmente la capacité pendant les heures de pointe pour gérer les pics de charge, et la réduit pendant les heures creuses pour diminuer les coûts. |
|
|
Accélérer les requêtes sur les tables larges avec Hybrid Plan |
Un Hybrid Plan utilise à la fois des index colonne et ligne dans la même requête. Hybrid Plan peut améliorer considérablement les performances des requêtes sur les tables larges. Dans le plan d'exécution, les parties bénéficiant des index colonne sont exécutées sur IMCI et produisent des résultats intermédiaires contenant uniquement les clés primaires. Ensuite, les colonnes requises sont récupérées et renvoyées en utilisant les clés primaires avec l'index primaire InnoDB. |
|
Accélérer l'analyse de volumes massifs de données avec MPP multi-nœuds |
Pour les requêtes complexes sur de vastes volumes de données, un seul nœud IMCI en lecture seule peut ne pas répondre aux exigences de performance. Utilisez le traitement parallèle multi-nœuds (MPP) pour accélérer les requêtes. |
Pour aller plus loin
Pour en savoir plus sur les principes sous-jacents à IMCI, consultez les documents suivants :
Article scientifique sur l'index colonne en mémoire (IMCI) de PolarDB, publié lors de SIGMOD 2023