O PolarDB for MySQL oferece dois conjuntos de configurações para o recurso de consulta paralela elástica: parâmetros de cluster definidos no console do PolarDB e variáveis de status no nível de sessão consultadas em tempo de execução.
Parâmetros de consulta paralela
Todos os parâmetros de cluster no console do PolarDB usam o prefixo loose_ para garantir compatibilidade com o arquivo de configuração do MySQL. Ao modificar parâmetros no console do PolarDB, selecione aqueles que incluem o prefixo loose_.
Os parâmetros a seguir controlam o comportamento da consulta paralela elástica. Eles abrangem o grau de paralelismo (DOP) para consultas individuais, o orçamento total de workers, o comportamento da fila e os limiares de contagem de linhas e custo que acionam a execução paralela.
|
Parâmetro |
Escopo |
Descrição |
|
|
Global, sessão |
DOP máximo para uma única consulta. Defina o limite superior de workers paralelos para essa operação. Valores válidos: 0–1024. Padrão: |
|
|
Global |
Número máximo de workers paralelos permitidos em todas as consultas simultaneamente. Consultas que excederem esse limite serão enfileiradas. Valores válidos: 1–10.000. Padrão: o dobro do número de núcleos de CPU. |
|
|
Global |
Soma máxima dos valores de DOP permitidos na fila em um determinado momento. Consultas que ultrapassarem esse limite retornarão à execução sequencial. Valores válidos: 0–10.000. Padrão: |
|
|
Global, sessão |
Tempo máximo que uma consulta pode aguardar na fila. Se esse limite for excedido, a consulta voltará para execução sequencial. Valores válidos: 0–18.446.744.073.709.551.615. Padrão: |
|
|
Global |
Política de seleção de DOP para consultas individuais. Valores válidos: |
|
|
Sessão |
Número mínimo de linhas que uma consulta deve examinar antes de o otimizador considerar a execução paralela. Valores válidos: 0–18.446.744.073.709.551.615. Padrão: |
|
|
Sessão |
Custo mínimo de execução sequencial necessário para que o otimizador avalie a execução paralela. Valores válidos: 0–18.446.744.073.709.551.615. Padrão: |
|
|
Sessão |
Número mínimo de linhas examinadas em uma tabela envolvida na instrução de consulta para que o otimizador considere a consulta paralela elástica multinó. Valores válidos: 0–18.446.744.073.709.551.615. Padrão: |
|
|
Sessão |
Custo mínimo de execução sequencial para que o otimizador considere a consulta paralela elástica multinó. Valores válidos: 0–18.446.744.073.709.551.615. Padrão: |
Observações sobre os parâmetros
loose_max_parallel_degree
O otimizador do PolarDB pode executar a consulta principal e as subconsultas usando planos de execução paralela separados. Quando se utilizam planos distintos, a contagem total de workers corresponde à soma dos workers da consulta principal e de todas as subconsultas, sem restrição ao valor de loose_max_parallel_degree por subconsulta. Já quando o mesmo plano é utilizado, o total de workers não pode exceder loose_max_parallel_degree.
A configuração do console e o parâmetro loose_max_parallel_degree interagem da seguinte forma:
Se a consulta paralela elástica estiver ativada no console do PolarDB e
loose_max_parallel_degreetambém estiver definido, a configuração do console prevalece. Para a maioria dos cenários, ative a consulta paralela elástica diretamente no console do PolarDB.Caso a consulta paralela elástica não esteja ativada no console do PolarDB, mas
loose_max_parallel_degreetenha um valor superior a0, o recurso será ativado automaticamente.
loose_max_parallel_workers
Em um cluster serverless, o valor de loose_max_parallel_workers é ajustado automaticamente conforme as especificações dos nós são dimensionadas. Para obter detalhes sobre a política de filas, consulte Parâmetros que definem as políticas de fila das consultas paralelas.
loose_parallel_degree_policy
|
Valor |
Comportamento |
|
|
O DOP é sempre definido como |
|
|
O otimizador ativa ou desativa a consulta paralela elástica com base na carga do banco de dados (incluindo a utilização da CPU) e selecione o DOP de acordo com o custo da consulta. |
|
|
Os nós somente leitura decidem se devem ativar a consulta paralela elástica com base na carga do banco de dados e escolhem o DOP segundo o custo da consulta. O nó primário não executa consultas paralelas elásticas. |
loose_records_threshold_for_parallelism
Se a maior parte das suas consultas for simples e envolver pequenos volumes de dados, defina este limiar para pelo menos 2000 a fim de evitar o acionamento desnecessário da execução paralela.
Configurações recomendadas
Utilize as orientações abaixo como ponto de partida para a configuração do seu cluster:
|
Objetivo |
Recomendação |
|
Ativar consulta paralela |
Defina |
|
Limitar o consumo de workers paralelos |
Reduza o valor de |
|
Evitar paralelismo desnecessário em cargas OLTP |
Aumente |
|
Restringir consultas paralelas a nós somente leitura |
Mantenha |
|
Ajustar consulta paralela multinó |
Deixe |
Variáveis de consulta paralela
Use estas variáveis de status para monitorar a consulta paralela elástica em tempo de execução e diagnosticar motivos pelos quais a execução paralela pode não ser acionada para determinadas consultas. Consulte-as por meio de SHOW GLOBAL STATUS ou SHOW SESSION STATUS.
|
Variável |
Escopo |
Descrição |
|
|
Global, sessão |
Quantidade total de workers paralelos criados desde o início da sessão. |
|
|
Global, sessão |
Número total de registros coletados pelos workers paralelos. |
|
|
Global, sessão |
Contagem de consultas que reverteram para execução sequencial porque o limite total de workers paralelos ( |
|
|
Global, sessão |
Volume de consultas que retornaram à execução sequencial devido à espera na fila ter excedido |
|
|
Global |
Quantidade de workers paralelos em execução no momento. |
Se PQ_refused_over_total_workers ou PQ_refused_over_max_queuing_time estiver aumentando, significa que as consultas paralelas estão sendo limitadas devido à contenção de recursos. Nesse caso, aumente loose_max_parallel_workers ou loose_pq_max_queuing_time para reduzir a reversão para execução sequencial.