Saiba como ativar, configurar e controlar o ePQ no PolarDB for MySQL, incluindo limiares de execução paralela, sintaxe de hints e limites conhecidos.
Antes de começar
-
Verifique se o seu cluster oferece suporte à consulta paralela elástica.
-
Consulta paralela elástica de nó único:
Mecanismo de banco de dados: 8.0.1 com versão de revisão 8.0.1.0.5 ou posterior.
Edição do banco de dados: Enterprise Edition .
-
Consulta paralela elástica de nó único:
Mecanismo de banco de dados: 8.0.2 com versão de revisão 8.0.2.1.4.1 ou posterior.
Edição do banco de dados: Enterprise Edition.
-
Consulta paralela elástica de vários nós:
Mecanismo de banco de dados: 8.0.2 com versão de revisão 8.0.2.2.6 ou posterior.
Edição do banco de dados: Enterprise Edition.
-
Revise Limits and compatibility issues antes de ativar a consulta paralela.
Os nós somente leitura e RW oferecem suporte à consulta paralela, mas ela vem desativada por padrão nos nós RW. Para ativá-la nesses nós, Adaptively adjust the degree of parallelism.
Ativar ou desativar a consulta paralela
Ativar
Acesse o . Na página Basic Information do cluster, localize a seção Database Connection. Selecione o endpoint desejado e clique em Configure. Na caixa de diálogo Edit Endpoint Configuration, enable a consulta paralela e configure o Degree of Parallelism.
Configurações recomendadas e observações:
O Degree of Parallelism define o número máximo de threads de trabalho que uma única consulta pode usar em um nó de computação. O total de threads por consulta equivale ao Degree of Parallelism multiplicado pelo número de nós.
Aumente o grau de paralelismo gradualmente. Não ultrapasse um quarto dos núcleos de CPU. Comece com 2. Após um dia, aumente o valor se a carga da CPU permanecer baixa; interrompa o aumento caso ela suba.
A ativação da consulta paralela entra em vigor apenas para novas conexões.
-
As configurações do console e os parâmetros do cluster interagem da seguinte forma:
O parâmetro
loose_max_parallel_degreeaplica-se a todos os nós e conexões do cluster, mas os ajustes feitos no console aplicam-se apenas ao endpoint configurado.Se tanto a configuração do console quanto o parâmetro
loose_max_parallel_degreeestiverem definidos, a configuração do console terá precedência. Use o console para ativar a parallel query.Caso a parallel query não esteja ativada no console, mas o parâmetro
loose_max_parallel_degreeesteja definido acima de 0, a consulta paralela de nó único será ativada por padrão.
NotaO parâmetro
loose_max_parallel_degreedefine o número máximo de threads de trabalho para a execução paralela de uma única consulta. Parameter description.
Desativar
Acesse o . Na página Basic Information do cluster, localize a seção Database Connection. Selecione o endpoint desejado e clique em Configure. Na caixa de diálogo Edit Endpoint Configuration, disable a consulta paralela.
Observação:
A desativação da consulta paralela entra em vigor apenas para novas conexões.
-
Após desativar a consulta paralela no console, verifique se o parâmetro
loose_max_parallel_degreetambém está definido como 0.NotaO parâmetro
loose_max_parallel_degreedefine o número máximo de threads de trabalho para a execução paralela de uma única consulta. Parameter description.
Configurar a consulta paralela
O PolarDB oferece diversas políticas de controle para consulta paralela, resumidas abaixo. A lista completa está disponível em Configure parallel resource control policies.
|
Tipo |
Descrição |
|
Limiares de execução paralela do otimizador |
O PolarDB fornece dois limiares. O otimizador considera um plano paralelo quando uma consulta excede qualquer um deles.
|
|
Limiares de dimensionamento paralelo de vários nós |
O PolarDB fornece dois limiares para dimensionamento paralelo de vários nós. O sistema escala horizontalmente quando qualquer um deles é excedido.
|
Controlar a consulta paralela com hints
Os hints controlam a execução paralela no nível da instrução, permitindo substituir o comportamento padrão, definir o grau de paralelismo e especificar quais tabelas devem ser paralelizadas. Por exemplo, use um hint para acelerar uma consulta lenta específica. A sintaxe completa está documentada em Parallel query hint syntax.
Limites e problemas de compatibilidade
Limites
A execução paralela do PolarDB apresenta as seguintes limitações:
Consultas em tabelas que não são
InnoDBnão podem ser executadas em paralelo.Consultas que utilizam índice full-text não podem ser executadas em paralelo.
Expressões que contêm
Proceduresarmazenadas devem ser executadas no nó líder.Se uma tabela for verificada usando
Index Merge, a varredura da tabela não poderá ser paralelizada.Instruções de consulta dentro de transações com nível de isolamento serializable não podem ser executadas em paralelo.
Se o nível de isolamento for
Repeatable-read, a parte de consulta das instruçõesINSERT ... SELECT/REPLACE ... SELECTdentro de uma transação não poderá ser executada em paralelo.
Compatibilidade
-
A quantidade de mensagens de erro pode mudar
Para uma consulta que retorna um erro durante a execução sequencial, o número total de mensagens de erro pode diferir durante a execução paralela.
-
Problemas de precisão
A execução paralela pode armazenar mais resultados intermediários de ponto flutuante, causando pequenas diferenças de precisão na saída final.
-
Pacote de rede ou resultado intermediário excede max_allowed_packet****
A execução paralela pode gerar resultados intermediários maiores. Se o tamanho de um pacote de rede ou resultado intermediário exceder
max_allowed_packet, poderá ocorrer um erro. Aumente o parâmetromax_allowed_packetpara resolver isso. Set cluster parameters and node parameters. -
Diferenças na ordem do conjunto de resultados
Uma instrução
SELECT ... LIMIT nsem cláusulaORDER BYpode retornar linhas em ordem diferente durante a execução paralela, pois vários workers concluem suas tarefas em velocidades distintas. -
A contagem de bloqueios de linha pode aumentar
Durante a execução paralela de
SELECT ... FROM ... FOR SHARE, o InnoDB bloqueia todas as linhas acessadas. A contagem de bloqueios de linha pode ser maior do que na execução sequencial.



