O recurso In-Memory Column Index (IMCI) acelera consultas de processamento analítico (AP) no PolarDB for MySQL. Antes de ativar o IMCI, revise os limites abaixo para garantir a compatibilidade do seu ambiente e das suas consultas.
Limites gerais
|
Restrição |
Detalhes |
|
Mecanismo de armazenamento |
Apenas InnoDB. Índices columnstore não são suportados em tabelas que utilizam outros mecanismos de armazenamento. |
|
Tabelas temporárias |
Sem suporte. O IMCI não acelera consultas em tabelas temporárias. |
|
Colunas virtuais |
Suportado quando ambas as condições são atendidas: |
|
Colunas virtuais — Tipo Spatial |
Sem suporte. Não é possível criar um índice columnstore em uma coluna virtual do tipo Spatial. |
|
Multi-master Cluster (Limitless) Edition |
Defina o parâmetro de cluster |
O parâmetro imci_enable_virtual_column opera no nível de SESSION e não pode ser modificado no console.
Limites da instrução SELECT
Os índices columnstore aceleram exclusivamente consultas SELECT. Caso a consulta contenha qualquer uma das estruturas a seguir, o índice columnstore não conseguirá acelerá-la e a execução retornará ao row store:
Leituras com bloqueio:
SELECT ... FOR UPDATEouSELECT ... FOR SHARE-
Função de janela com definição de frame — por exemplo,
ROWS UNBOUNDED PRECEDINGna 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; Subconsulta na cláusula
GROUP BY— por exemplo,SELECT SUM(a) FROM t1 GROUP BY (SELECT ... FROM ...) as some_subquerySubconsulta em uma expressão
ORDER BY— por exemplo,SELECT a FROM t1 ORDER BY (SELECT ... FROM ...) as some_subquerySubconsulta correlacionada na condição
ONde umJOIN— por exemplo,WHERE t1.a in (SELECT t2.a FROM t2 INNER JOIN t3 on t2.a = t3.a AND t2.b > t1.b)Subconsulta contendo uma função de janela, onde um item correlacionado aparece na condição
HAVINGSubconsulta contendo
UNION, onde um item correlacionado aparece em uma das subconsultas doUNION
Limites de expressões e funções
Se uma instrução SELECT incluir qualquer expressão ou função sem suporte, toda a consulta retornará à execução via row store.
Expressões de comparação
|
Expressão |
Suporte |
Observações |
|
|
Sim |
Se |
|
|
Sim |
Se |
|
|
Sim |
Os resultados podem divergir da execução via row store caso os parâmetros de entrada incluam simultaneamente um tipo |
|
|
Sim |
Se |
|
|
Sim |
Os resultados podem divergir da execução via row store caso os parâmetros de entrada incluam simultaneamente um tipo |
|
|
Não |
— |
Expressões de string
|
Expressão |
Suporte |
Observações |
|
|
Sim |
Há suporte para BOOLEAN MODE e NATURAL LANGUAGE MODE. |
|
|
Sim |
Apenas a forma com parâmetro único é suportada. A forma com dois parâmetros não possui suporte. |
|
|
Não |
— |
|
|
Não |
— |
Expressões e funções sem suporte
Os índices columnstore não oferecem suporte às seguintes expressões e funções.
Criptografia e compressão
AES_DECRYPT(), AES_ENCRYPT(), COMPRESS(), RANDOM_BYTES(), STATEMENT_DIGEST(), STATEMENT_DIGEST_TEXT(), UNCOMPRESS(), UNCOMPRESSED_LENGTH(), VALIDATE_PASSWORD_STRENGTH()
Funções 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()
Funções espaciais
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()