Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-12-14 GMT+08:00

Restricciones

Actualmente, hay algunas restricciones en las consultas paralelas, pero se resolverán gradualmente en el futuro.

Sentencias no admitidas

Las consultas paralelas no son adecuadas para:

  • Sentencias Non-SELECT
  • Funciones de ventana
  • Activadores
  • Prepared Statements
  • Índices espaciales
  • Tablas de sistema, tablas temporales y tablas no InnoDB
  • Índices de texto completo
  • Procedimientos almacenados
  • Subconsultas que no se pueden convertir en semijoin
  • Sentencias SQL que no cumplen las reglas only_full_group_by
  • Sentencia Index Merge
  • Consultas de bloqueo, como nivel de aislamiento de SERIALIZABLE, FOR UPDATE, o SHARE LOCK
  • Consultas recursivas
  • With rollup
  • Sentencias con la palabra clave HIGH_PRIORITY
  • No se devuelve ninguna línea de datos en el resultado de la ejecución. (El plan de ejecución muestra: Zero limit, Impossible WHERE, Impossible HAVING, No matching min/max row, Select tables optimized away, Impossible HAVING noticed after reading const tables, o no matching row in const table)
  • Columnas con tipo ZEROFILL. Sus valores de columna se pueden optimizar a constantes.
  • Generated columns, BLOB, TEXT, JSON, y GEOMETRY
  • Funciones de Spatial (como SP_WITHIN_FUNC)
  • Cláusulas DISTINCT en funciones Aggregate, como SUM (DISTINCT), AVG (DISTINCT), y COUNT(DISTINCT)
  • GROUP_CONCAT
  • JSON_ARRAYAGG/JSON_OBJECTAGG
  • Funciones definidas por el usuario
  • STD/STDDEV/STDDEV_POP
  • VARIANCE/VAR_POP/VAR_SAMP
  • BIT_AND, BIT_OR and BIT_XOR
  • set_user_var
  • Funciones RAND con parámetros
  • json_* (como json_length y json_type)
  • st_distance
  • get_lock
  • is_free_lock, is_used_lock, release_lock, and release_all_locks
  • sleep
  • xml_str
  • weight_string
  • REF functions (VIEW_REF, OUTER_REF, AGGREGATE_REF)
  • SHA, SHA1, SHA2, and MD5
  • row_count
  • round
  • Funciones relacionadas con el usuario (como user, current_user, session_user, system_user)

Incompatible con los resultados de ejecución en serie

Los resultados de ejecución de las consultas paralelas pueden ser incompatibles con los de las consultas en serie.

  • Número de errores o alarmas

    Si se muestra un mensaje de error o alarma durante las consultas en serie, el mensaje de error o alarma se mostrará en cada subproceso de trabajo durante las consultas en paralelo. Como resultado, aumenta el número total de mensajes de error o alarma.

  • Precisión

    Durante las consultas paralelas, si hay un tipo de función en una sentencia SELECT, se generarán procedimientos almacenados adicionales en los resultados intermedios. Como resultado, en comparación con las consultas en serie, la precisión de la parte de coma flotante en consultas paralelas puede ser diferente, y el resultado final puede ser ligeramente diferente.

  • Truncamiento

    Durante las consultas paralelas, si hay un tipo de función en una sentencia SELECT, se generarán procedimientos almacenados adicionales en los resultados intermedios. En este proceso, el resultado del cálculo de la función necesita ser almacenado en caché, y el truncamiento de datos puede ocurrir (generalmente debido a la conversión de tipo de datos, por ejemplo, que cubre un valor de coma flotante a una cadena de caracteres). Como resultado, el resultado final es diferente de las consultas en serie.

  • Secuencia de conjuntos de resultados

    Debido a que las tareas son ejecutadas por varios subprocesos de trabajo durante consultas paralelas, la secuencia del conjunto de resultados devuelto puede no ser coherente con la de las consultas en serie. En el caso de una consulta con LIMIT, es más probable que se produzca este problema. Si los campos de GROUP BY son caracteres invisibles, la secuencia del conjunto de resultados devuelto también es diferente.

  • Conjuntos de resultado de UNION ALL

    UNION ALL ignora los operadores de ordenación. La secuencia del conjunto de resultados devuelto en ejecución paralela puede ser diferente de la de la ejecución no paralela. En el caso de una consulta con LIMIT, los conjuntos de resultados son diferentes.