

# Otimizar a consulta paralela no Aurora MySQL
<a name="aurora-mysql-parallel-query-optimizing"></a>

Para otimizar o cluster de banco de dados para consulta paralela, pense em quais clusters de banco de dados se beneficiariam da consulta paralela e se você deveria fazer a atualização para a consulta paralela. Depois, ajuste a workload e crie objetos de esquema para consulta paralela.

**Contents**
+ [Planejar um cluster de consulta paralela](#aurora-mysql-parallel-query-planning)
  + [Verificar se a versão do Aurora MySQL é compatível com a consulta paralela](#aurora-mysql-parallel-query-checking-compatibility)
+ [Considerações sobre atualização para consultas paralelas](#aurora-mysql-parallel-query-upgrade)
  + [Fazer upgrade de clusters de consulta paralela para o Aurora MySQL versão 3](#aurora-mysql-parallel-query-upgrade-pqv2)
  + [Fazer upgrade para o Aurora MySQL 2.09 e versões posteriores](#aurora-mysql-parallel-query-upgrade-2.09)
+ [Ajuste de performance da consulta paralela](#aurora-mysql-parallel-query-performance)
+ [Criar objetos de esquema que aproveitem a consulta paralela](#aurora-mysql-parallel-query-tables)

## Planejar um cluster de consulta paralela
<a name="aurora-mysql-parallel-query-planning"></a>

A ação de planejar um cluster de banco de dados com consulta paralela habilitada requer algumas escolhas. Isso inclui a realização de etapas de configuração (criar ou restaurar um cluster do Aurora MySQL completo) e a decisão da extensão da habilitação da consulta paralela no cluster de banco de dados.

Considere o seguinte como parte do planejamento:
+ Se você usar o Aurora MySQL que é compatível com o MySQL 5.7, deverá criar um cluster provisionado. Em seguida, habilite a consulta paralela utilizando o parâmetro `aurora_parallel_query`.

  Se você tiver um cluster do Aurora MySQL, não precisará criar outro cluster para usar a consulta paralela. É possível associar o cluster, ou instâncias de banco de dados específicas no cluster, a um grupo de parâmetros que tenha o parâmetro `aurora_parallel_query` habilitado. Ao fazer isso, é possível reduzir o tempo e o esforço para configurar os dados relevantes a serem usados com a consulta paralela.
+ Planeje todas as tabelas grandes que você precisa reorganizar para que possa usar a consulta paralela ao acessá-las. Talvez seja necessário criar versões de algumas tabelas grandes nas quais a consulta paralela é útil. Por exemplo, talvez seja necessário remover índices de pesquisa de texto completo. Para obter mais detalhes, consulte [Criar objetos de esquema que aproveitem a consulta paralela](#aurora-mysql-parallel-query-tables).

### Verificar se a versão do Aurora MySQL é compatível com a consulta paralela
<a name="aurora-mysql-parallel-query-checking-compatibility"></a>

Para verificar quais versões do Aurora MySQL são compatíveis com clusters de consulta paralela, use o comando `describe-db-engine-versions` da AWS CLI e verifique o valor do campo `SupportsParallelQuery`. O exemplo de código a seguir mostra como verificar quais combinações estão disponíveis para clusters de consulta paralela em uma região da AWS especificada. Especifique a string completa do parâmetro `--query` em uma única linha.

```
aws rds describe-db-engine-versions --region us-east-1 --engine aurora-mysql \
--query '*[]|[?SupportsParallelQuery == `true`].[EngineVersion]' --output text
```

Os comandos anteriores produzem uma saída semelhante à seguinte. A saída pode variar, dependendo de quais versões do Aurora MySQL estão disponíveis na região da AWS especificada.

```
5.7.mysql_aurora.2.11.1
5.7.mysql_aurora.2.11.2
5.7.mysql_aurora.2.11.3
5.7.mysql_aurora.2.11.4
5.7.mysql_aurora.2.11.5
5.7.mysql_aurora.2.11.6
5.7.mysql_aurora.2.12.0
5.7.mysql_aurora.2.12.1
5.7.mysql_aurora.2.12.2
5.7.mysql_aurora.2.12.3
5.7.mysql_aurora.2.12.4
8.0.mysql_aurora.3.04.0
8.0.mysql_aurora.3.04.1
8.0.mysql_aurora.3.04.2
8.0.mysql_aurora.3.04.3
8.0.mysql_aurora.3.05.2
8.0.mysql_aurora.3.06.0
8.0.mysql_aurora.3.06.1
8.0.mysql_aurora.3.07.0
8.0.mysql_aurora.3.07.1
```

 Após começar a usar a consulta paralela com um cluster, você pode monitorar a performance e remover obstáculos ao uso da consulta paralela. Para obter essas instruções, consulte [Ajuste de performance da consulta paralela](#aurora-mysql-parallel-query-performance). 

## Considerações sobre atualização para consultas paralelas
<a name="aurora-mysql-parallel-query-upgrade"></a>

 Dependendo das versões original e de destino ao fazer o upgrade de um cluster de consulta paralela, você pode perceber melhorias nos tipos de consultas que a consulta paralela é capaz de otimizar. Você também pode descobrir que não é necessário especificar um parâmetro de modo de mecanismo especial para a consulta paralela. As seções a seguir explicam as considerações ao fazer upgrade de um cluster com a consulta paralela habilitada. 

### Fazer upgrade de clusters de consulta paralela para o Aurora MySQL versão 3
<a name="aurora-mysql-parallel-query-upgrade-pqv2"></a>

 Várias instruções, cláusulas e tipos de dados SQL incluem suporte novo ou avançado para consulta paralela começando com o Aurora MySQL versão 3. Ao fazer upgrade de uma versão anterior à versão 3, verifique se consultas adicionais podem se beneficiar com otimizações de consultas paralelas. Para obter informações sobre essas melhorias de consulta paralela, consulte [Tipos de dados de coluna](aurora-mysql-parallel-query-sql.md#aurora-mysql-parallel-query-sql-datatypes),[Tabelas particionadas](aurora-mysql-parallel-query-sql.md#aurora-mysql-parallel-query-sql-partitioning) e [Funções agregadas, cláusulas GROUP BY e cláusulas HAVING.](aurora-mysql-parallel-query-sql.md#aurora-mysql-parallel-query-sql-aggregation). 

Se estiver fazendo upgrade de um cluster de consulta paralela do Aurora MySQL 2.08 ou versão inferior, informe-se também sobre as mudanças em como habilitar a consulta paralela. Para isso, leia [Fazer upgrade para o Aurora MySQL 2.09 e versões posteriores](#aurora-mysql-parallel-query-upgrade-2.09).

No Aurora MySQL versão 3, a otimização de junções de hash está habilitada por padrão. A opção de configuração `aurora_disable_hash_join` de versões anteriores não é utilizada.

### Fazer upgrade para o Aurora MySQL 2.09 e versões posteriores
<a name="aurora-mysql-parallel-query-upgrade-2.09"></a>

No Aurora MySQL versão 2.09 e posteriores, a consulta paralela funciona para clusters provisionados e não requer o parâmetro `parallelquery` do modo de mecanismo. Assim, você não precisa criar um cluster nem restaurar de um snapshot existente para usar a consulta paralela com essas versões. Você pode usar os procedimentos de atualização descritos em [Atualizando a versão secundária ou o nível de patch de um cluster de banco de dados de Aurora MySQL](AuroraMySQL.Updates.Patching.md) a fim de atualizar o cluster para essa versão. Você pode atualizar um cluster mais antigo, independentemente de se tratar de um cluster de consulta paralela ou de um cluster provisionado. Para reduzir o número de opções no menu **Engine version (Versão do mecanismo)** você pode selecionar **Show versions that support the parallel query feature (Mostrar versões que oferecem suporte ao recurso de consulta paralela)** para filtrar as entradas nesse menu. Depois, escolha o Aurora MySQL 2.09 ou posteriores.

Depois de fazer upgrade de um cluster de consulta paralela anterior para o Aurora MySQL 2.09 ou versão posterior, habilite a consulta paralela no cluster atualizado. A consulta paralela é desativada por padrão nessas versões e o procedimento para habilitá-la é diferente. A otimização de junções de hash também está desabilitada por padrão e deve ser habilitada separadamente. Por isso, certifique-se de habilitar essas configurações novamente após o upgrade. Para obter instruções sobre como fazer isso, consulte [Ativar e desativar a consulta paralela no Aurora MySQL](aurora-mysql-parallel-query-enabling.md) e [Habilitar a junção de hash para clusters de consulta paralela](aurora-mysql-parallel-query-enabling.md#aurora-mysql-parallel-query-enabling-hash-join).

Em particular, você habilita consulta paralela utilizando os parâmetros de configuração `aurora_parallel_query=ON` e `aurora_disable_hash_join=OFF` em vez de `aurora_pq_supported` e `aurora_pq`. Os parâmetros `aurora_pq_supported` e `aurora_pq` é compatível com atualizações nas versões mais recentes do Aurora MySQL.

 No cluster atualizado, o atributo `EngineMode` tem o valor `provisioned` em vez de `parallelquery`. Para verificar se a consulta paralela está disponível para uma versão de mecanismo especificada, agora você confere o valor do campo `SupportsParallelQuery` na saída do comando `describe-db-engine-versions` da AWS CLI. Em versões anteriores do Aurora MySQL, você verificou a presença de `parallelquery` na lista `SupportedEngineModes`. 

Depois de fazer upgrade para o Aurora MySQL 2.09 ou versão posterior, você poderá aproveitar os recursos a seguir. Esses recursos não estão disponíveis para clusters de consulta paralela que executam versões mais antigas do Aurora MySQL.
+ Performance Insights. Para ter mais informações, consulte [Monitorar a carga de banco de dados com o Performance Insights no Amazon Aurora](USER_PerfInsights.md).
+ Retroceder. Para ter mais informações, consulte [Retroceder um cluster de banco de dados Aurora](AuroraMySQL.Managing.Backtrack.md).
+ Interromper e iniciar o cluster. Para ter mais informações, consulte [Interromper e iniciar um cluster de banco de dados do Amazon Aurora](aurora-cluster-stop-start.md).

## Ajuste de performance da consulta paralela
<a name="aurora-mysql-parallel-query-performance"></a>

 Para gerenciar a performance de uma workload com consulta paralela, verifique se a consulta paralela é usada em consultas em que a otimização é mais útil. 

 Para isso, você pode fazer o seguinte: 
+  As tabelas maiores devem ser compatíveis com a consulta paralela. Você pode alterar as propriedades da tabela ou recriar algumas tabelas para que as consultas delas possam aproveitar a otimização da consulta paralela. Para saber como, consulte [Criar objetos de esquema que aproveitem a consulta paralela](#aurora-mysql-parallel-query-tables). 
+  Monitore quais são as consultas que usam a consulta paralela. Para saber como, consulte [Monitorar a consulta paralela do Aurora MySQL](aurora-mysql-parallel-query-monitoring.md). 
+  Verifique se a consulta paralela está sendo usada para as consultas mais intensas e de longa execução e com o nível certo de simultaneidade para a workload. Para saber como, consulte [Verificar quais declarações usam consulta paralela para Aurora MySQL](aurora-mysql-parallel-query-verifying.md). 
+  Adapte seu código SQL para permitir que a consulta paralela seja aplicada às consultas esperadas. Para saber como, consulte [Constructos do SQL para consulta paralela no Aurora MySQL](aurora-mysql-parallel-query-sql.md). 

## Criar objetos de esquema que aproveitem a consulta paralela
<a name="aurora-mysql-parallel-query-tables"></a>

 Antes de criar ou modificar tabelas que você planeja usar para consulta paralela, conheça os requisitos descritos em [Pré-requisitos](aurora-mysql-parallel-query.md#aurora-mysql-parallel-query-prereqs) e [Limitações](aurora-mysql-parallel-query.md#aurora-mysql-parallel-query-limitations). 

 Como a consulta paralela exige que as tabelas usem a configuração `ROW_FORMAT=Compact` ou `ROW_FORMAT=Dynamic`, verifique as definições de configurações do Aurora para saber se houve alguma alteração na opção de configuração `INNODB_FILE_FORMAT`. Execute a instrução `SHOW TABLE STATUS` para confirmar o formato da linha de todas as tabelas do banco de dados. 

 Antes de alterar seu esquema para permitir que a consulta paralela funcione com mais tabelas, não deixe de fazer testes. Os testes devem confirmar se a consulta paralela resulta em um aumento líquido na performance dessas tabelas. Além disso, certifique-se de que os requisitos do esquema para a consulta paralela são compatíveis com as suas metas. 

 Por exemplo, antes de mudar de `ROW_FORMAT=Compressed` para `ROW_FORMAT=Compact` ou `ROW_FORMAT=Dynamic`, teste a performance das cargas de trabalho das tabelas originais e novas. Considere também outros efeitos possíveis, como o aumento do volume de dados. 