La función In-Memory Column Index (IMCI) acelera las consultas de procesamiento analítico (AP) en PolarDB for MySQL. Revise a continuación los límites antes de habilitar IMCI para asegurarse de que su entorno y sus consultas sean compatibles.
Límites generales
|
Restricción |
Detalles |
|
Motor de almacenamiento |
Solo InnoDB. Los índices columnstore no son compatibles con tablas que usan otros motores de almacenamiento. |
|
Tablas temporales |
No compatible. IMCI no puede acelerar consultas sobre tablas temporales. |
|
Columnas virtuales |
Compatible cuando se cumplen ambas condiciones: |
|
Columnas virtuales: tipo Spatial |
No compatible. No es posible crear un índice columnstore en una columna virtual de tipo Spatial. |
|
Multi-master Cluster (Limitless) Edition |
Establezca el parámetro del clúster |
imci_enable_virtual_column es un parámetro de nivel SESSION y no se puede modificar en la consola.
Límites de la instrucción SELECT
Los índices columnstore solo aceleran las consultas SELECT. Si una consulta contiene alguna de las estructuras siguientes, el índice columnstore no podrá acelerarla y la ejecución volverá al almacenamiento por filas (row store):
Lecturas con bloqueo:
SELECT ... FOR UPDATEoSELECT ... FOR SHARE-
Una función de ventana con definición de marco; por ejemplo,
ROWS UNBOUNDED PRECEDINGen la cláusulaOVER():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; Una subconsulta en la cláusula
GROUP BY; por ejemplo,SELECT SUM(a) FROM t1 GROUP BY (SELECT ... FROM ...) as some_subqueryUna subconsulta en una expresión
ORDER BY; por ejemplo,SELECT a FROM t1 ORDER BY (SELECT ... FROM ...) as some_subqueryUna subconsulta correlacionada en la condición
ONde unJOIN; por ejemplo,WHERE t1.a in (SELECT t2.a FROM t2 INNER JOIN t3 on t2.a = t3.a AND t2.b > t1.b)Una subconsulta que contiene una función de ventana, donde aparece un elemento correlacionado en la condición
HAVINGUna subconsulta que contiene un
UNION, donde aparece un elemento correlacionado en una de las subconsultas delUNION
Límites de expresiones y funciones
Si una instrucción SELECT incluye alguna expresión o función no compatible, toda la consulta vuelve a ejecutarse con el almacenamiento por filas.
Expresiones de comparación
|
Expresión |
Compatible |
Notas |
|
|
Sí |
Si |
|
|
Sí |
Si |
|
|
Sí |
Si los parámetros de entrada incluyen tanto un tipo |
|
|
Sí |
Si |
|
|
Sí |
Si los parámetros de entrada incluyen tanto un tipo |
|
|
No |
— |
Expresiones de cadena
|
Expresión |
Compatible |
Notas |
|
|
Sí |
BOOLEAN MODE y NATURAL LANGUAGE MODE son compatibles. |
|
|
Sí |
Solo es compatible la forma con un parámetro. La forma con dos parámetros no es compatible. |
|
|
No |
— |
|
|
No |
— |
Expresiones y funciones no compatibles
A continuación se muestran las expresiones y funciones que no son compatibles con los índices columnstore.
Cifrado y compresión
AES_DECRYPT(), AES_ENCRYPT(), COMPRESS(), RANDOM_BYTES(), STATEMENT_DIGEST(), STATEMENT_DIGEST_TEXT(), UNCOMPRESS(), UNCOMPRESSED_LENGTH(), VALIDATE_PASSWORD_STRENGTH()
Funciones 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()
Funciones espaciales
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()