Tous les produits
Search
Centre de documentation

PolarDB:Limites

Dernière mise à jour :Aug 11, 2026

La fonctionnalité In-Memory Column Index (IMCI) accélère les requêtes de traitement analytique (AP) dans PolarDB for MySQL. Avant d'activer IMCI, vérifiez les limites suivantes pour garantir la compatibilité de votre environnement et de vos requêtes.

Limites générales

Contrainte Détails
Moteur de stockage InnoDB uniquement. Les index columnstore ne sont pas pris en charge pour les tables utilisant d'autres moteurs de stockage.
Tables temporaires Non prises en charge. IMCI n'accélère pas les requêtes sur les tables temporaires.
Colonnes virtuelles Prise en charge si deux conditions sont remplies : imci_enable_virtual_column est défini sur ON et order_key n'est pas spécifié lors de la création de l'index.
Colonnes virtuelles — Type Spatial Non prise en charge. Vous ne pouvez pas créer d'index columnstore sur une colonne virtuelle de type Spatial.
Multi-master Cluster (Limitless) Edition Définissez le paramètre de cluster loose_polar_enable_imci_with_mm sur ON, puis ajoutez un nœud global en lecture seule pour IMCI.
Remarque

Le paramètre imci_enable_virtual_column s'applique au niveau SESSION et ne peut pas être modifié depuis la console.

Limites des instructions SELECT

Les index columnstore accélèrent exclusivement les requêtes SELECT. Si une requête contient l'une des structures suivantes, l'index columnstore ne peut pas l'accélérer et l'exécution bascule vers le stockage ligne :

  • Lectures avec verrouillage : SELECT ... FOR UPDATE ou SELECT ... FOR SHARE

  • Fonction fenêtrée avec définition de cadre, par exemple ROWS UNBOUNDED PRECEDING dans la clause OVER() :

    SELECT
        time,
        subject,
        val,
        SUM(val) OVER (
            PARTITION BY subject
            ORDER BY time
            ROWS UNBOUNDED PRECEDING  -- Frame definition not supported by IMCI
        ) AS running_total
    FROM
        observations;
  • Sous-requête dans la clause GROUP BY, par exemple SELECT SUM(a) FROM t1 GROUP BY (SELECT ... FROM ...) as some_subquery

  • Sous-requête dans une expression ORDER BY, par exemple SELECT a FROM t1 ORDER BY (SELECT ... FROM ...) as some_subquery

  • Sous-requête corrélée dans la condition ON d'une jointure JOIN, par exemple WHERE t1.a in (SELECT t2.a FROM t2 INNER JOIN t3 on t2.a = t3.a AND t2.b > t1.b)

  • Sous-requête contenant une fonction fenêtrée où un élément corrélé apparaît dans la condition HAVING

  • Sous-requête contenant une clause UNION où un élément corrélé figure dans l'une des sous-requêtes du UNION

Limites relatives aux expressions et fonctions

Si une instruction SELECT inclut une expression ou une fonction non prise en charge, l'intégralité de la requête bascule vers une exécution via le stockage ligne.

Expressions de comparaison

Expression Prise en charge Notes
BETWEEN ... AND ... Oui Si b et c ont des types de données différents dans a BETWEEN b AND c, les résultats peuvent différer de ceux du stockage ligne.
NOT BETWEEN ... AND ... Oui Si b et c ont des types de données différents dans a NOT BETWEEN b AND c, les résultats peuvent différer de ceux du stockage ligne.
GREATEST() Oui Si les paramètres d'entrée combinent un type TIME et un type chaîne, les résultats peuvent différer de ceux du stockage ligne.
IN() Oui Si expr0, expr1, ... ont des types de données différents dans IN(expr0, expr1, ...), les résultats peuvent différer de ceux du stockage ligne.
LEAST() Oui Si les paramètres d'entrée combinent un type TIME et un type chaîne, les résultats peuvent différer de ceux du stockage ligne.
SOUNDS LIKE Non —

Expressions de chaîne

Expression Prise en charge Notes
MATCH Oui Les modes BOOLEAN MODE et NATURAL LANGUAGE MODE sont pris en charge.
TIMESTAMP() Oui Seule la forme à un paramètre est prise en charge. La forme à deux paramètres n'est pas prise en charge.
SOUNDEX() Non —
LOAD_FILE() Non —

Expressions et fonctions non prises en charge

Les index columnstore ne prennent pas en charge les expressions et fonctions suivantes.

Chiffrement et compression

AES_DECRYPT(), AES_ENCRYPT(), COMPRESS(), RANDOM_BYTES(), STATEMENT_DIGEST(), STATEMENT_DIGEST_TEXT(), UNCOMPRESS(), UNCOMPRESSED_LENGTH(), VALIDATE_PASSWORD_STRENGTH()

Fonctions JSON

JSON_ARRAY_INSERT(), JSON_CONTAINS_PATH(), JSON_INSERT(), JSON_MERGE(), JSON_MERGE_PATCH(), JSON_MERGE_PRESERVE(), JSON_REPLACE(), JSON_SCHEMA_VALID(), JSON_SCHEMA_VALIDATION_REPORT(), JSON_SEARCH(), JSON_SET(), JSON_STORAGE_FREE(), JSON_STORAGE_SIZE(), JSON_VALUE(), MEMBER OF()

Fonctions spatiales

ST_AsGeoJSON(), ST_Buffer(), ST_Buffer_Strategy(), ST_Centroid(), ST_Collect(), ST_ConvexHull(), ST_EndPoint(), ST_ExteriorRing(), ST_FrechetDistance(), ST_GeoHash(), ST_GeometryN(), ST_GeometryType(), ST_GeomFromGeoJSON(), ST_HausdorffDistance(), ST_InteriorRingN(), ST_Intersection(), ST_IsClosed(), ST_IsEmpty(), ST_IsSimple(), ST_IsValid(), ST_LatFromGeoHash(), ST_LineInterpolatePoint(), ST_LineInterpolatePoints(), ST_LongFromGeoHash(), ST_NumGeometries(), ST_NumInteriorRing(), ST_NumInteriorRings(), ST_NumPoints(), ST_PointAtDistance(), ST_PointFromGeoHash(), ST_PointN(), ST_StartPoint(), ST_SwapXY()