PolarDB for MySQL expone dos grupos de elementos de configuración para la función de consulta paralela elástica: los parámetros de clúster que se establecen en la consola de PolarDB y las variables de estado a nivel de sesión que se consultan durante la ejecución.
Parámetros de consulta paralela
Todos los parámetros de clúster en la consola de PolarDB usan el prefijo loose_ para mantener la compatibilidad con el archivo de configuración de MySQL. Cuando modifique parámetros en la consola de PolarDB, seleccione aquellos que incluyen el prefijo loose_.
A continuación se muestran los parámetros que controlan el comportamiento de la consulta paralela elástica. Estos abarcan el grado de paralelismo (DOP) de consultas individuales, el presupuesto total de workers, el comportamiento de la cola y los umbrales de costo y cantidad de filas que activan la ejecución paralela.
|
Parámetro |
Ámbito |
Descripción |
|
|
Global, sesión |
El DOP máximo para una sola consulta. Establece el límite superior en la cantidad de parallel workers para dicha consulta. Valores válidos: 0–1024. Valor predeterminado: |
|
|
Global |
La cantidad máxima de parallel workers en todas las consultas. Las consultas que superan este límite se envían a la cola. Valores válidos: 1–10,000. Valor predeterminado: el doble de la cantidad de núcleos de CPU. |
|
|
Global |
La suma máxima de valores de DOP permitida en la cola en un momento dado. Las consultas que superan este límite recurren a la ejecución secuencial. Valores válidos: 0–10,000. Valor predeterminado: |
|
|
Global, sesión |
El tiempo máximo que una consulta puede esperar en la cola. Las consultas que superan este límite recurren a la ejecución secuencial. Valores válidos: 0–18,446,744,073,709,551,615. Valor predeterminado: |
|
|
Global |
La directiva de selección de DOP para consultas individuales. Valores válidos: |
|
|
Sesión |
La cantidad mínima de filas que una consulta debe examinar antes de que el optimizador considere la ejecución paralela. Valores válidos: 0–18,446,744,073,709,551,615. Valor predeterminado: |
|
|
Sesión |
El costo mínimo de ejecución secuencial antes de que el optimizador considere la ejecución paralela. Valores válidos: 0–18,446,744,073,709,551,615. Valor predeterminado: |
|
|
Sesión |
La cantidad mínima de filas examinadas de una tabla involucrada en una instrucción de consulta antes de que el optimizador considere la consulta paralela elástica multinodo. Valores válidos: 0–18,446,744,073,709,551,615. Valor predeterminado: |
|
|
Sesión |
El costo mínimo de ejecución secuencial antes de que el optimizador considere la consulta paralela elástica multinodo. Valores válidos: 0–18,446,744,073,709,551,615. Valor predeterminado: |
Notas sobre los parámetros
loose_max_parallel_degree
El optimizador de PolarDB puede ejecutar la consulta principal y las subconsultas mediante planes de ejecución paralela independientes. Cuando se usan planes separados, la cantidad total de workers corresponde a la suma de los workers de la consulta principal y de todas las subconsultas. En este caso, no se limita por loose_max_parallel_degree por cada subconsulta. Si se utiliza el mismo plan, la cantidad total de workers no puede superar loose_max_parallel_degree.
La configuración de la consola y loose_max_parallel_degree interactúan de la siguiente manera:
Si la consulta paralela elástica está habilitada en la consola de PolarDB y también se configuró
loose_max_parallel_degree, prevalece la configuración de la consola. Habilite la consulta paralela elástica en la consola de PolarDB para la mayoría de los escenarios.Si la consulta paralela elástica no está habilitada en la consola de PolarDB, pero
loose_max_parallel_degreetiene un valor mayor que0, la función se habilita automáticamente.
loose_max_parallel_workers
En un clúster serverless, el valor de loose_max_parallel_workers se ajusta automáticamente conforme escalan las especificaciones de los nodos. Para conocer los detalles de la directiva de colas, consulte Parameters that define the queuing policies of parallel queries.
loose_parallel_degree_policy
|
Valor |
Comportamiento |
|
|
El DOP siempre se establece en |
|
|
El optimizador habilita o deshabilita la consulta paralela elástica según la carga de la base de datos (incluida la utilización de la CPU) y selecciona el DOP con base en el costo de la consulta. |
|
|
Los nodos de solo lectura determinan si se habilita la consulta paralela elástica según la carga de la base de datos y seleccionan el DOP con base en el costo de la consulta. El nodo principal no ejecuta consultas paralelas elásticas. |
loose_records_threshold_for_parallelism
Si la mayoría de sus consultas son sencillas y manejan volúmenes pequeños de datos, establezca este umbral como mínimo en 2000 para evitar que la ejecución paralela se active de forma innecesaria.
Configuraciones recomendadas
Utilice las siguientes recomendaciones como punto de partida para la configuración de su clúster:
|
Objetivo |
Recomendación |
|
Habilitar la consulta paralela |
Establezca |
|
Limitar el consumo de parallel workers |
Reduzca |
|
Evitar paralelismo innecesario en cargas OLTP |
Aumente |
|
Restringir la consulta paralela a nodos de solo lectura |
Use |
|
Ajustar la consulta paralela multinodo |
Deje |
Variables de consulta paralela
Use estas variables de estado para supervisar la consulta paralela elástica durante la ejecución y diagnosticar por qué no se activa la ejecución paralela en ciertas consultas. Consúltelas con SHOW GLOBAL STATUS o SHOW SESSION STATUS.
|
Variable |
Ámbito |
Descripción |
|
|
Global, sesión |
La cantidad total de parallel workers creados desde que inició la sesión. |
|
|
Global, sesión |
La cantidad total de registros recopilados por los parallel workers. |
|
|
Global, sesión |
La cantidad de consultas que recurrieron a la ejecución secuencial porque se alcanzó el límite total de parallel workers ( |
|
|
Global, sesión |
La cantidad de consultas que recurrieron a la ejecución secuencial porque el tiempo de espera en la cola superó |
|
|
Global |
La cantidad de parallel workers que se están ejecutando actualmente. |
Si PQ_refused_over_total_workers o PQ_refused_over_max_queuing_time aumenta, significa que las consultas paralelas se están limitando debido a la contención de recursos. Aumente loose_max_parallel_workers o loose_pq_max_queuing_time para reducir los casos en los que se recurre a la ejecución secuencial.