View a markdown version of this page

Escolha da classe de instância de banco de dados adequada - Amazon Aurora

Escolha da classe de instância de banco de dados adequada

A classe de instância adequada depende de como as consultas a tabelas estrangeiras usam memória, armazenamento e CPU. Consulte detalhes sobre cada um desses recursos em Gerenciamento de recursos.

  • Memória: uma consulta a uma tabela estrangeira mantém os dados de trabalho, como classificações, agregações e tabelas de hash para junções, na memória, dentro do limite definido pela configuração aurora_analytics.query_mem (abreviada como query_mem). O valor padrão de query_mem varia de acordo com o tamanho da instância. Assim, uma instância maior disponibiliza automaticamente mais memória para cada consulta. Quando uma consulta excede query_mem, os dados são transferidos para o armazenamento local, que é mais lento. Para obter mais informações, consulte Ajuste de query_mem para a workload.

  • Concorrência: cada consulta simultânea a uma tabela estrangeira aloca memória de até query_mem, mas o uso real depende da consulta, e consultas simples podem usar muito menos. Ao dimensionar a instância para atender à concorrência, reserve capacidade para o pico de uso de memória, em vez de presumir que todas as consultas usam o valor total de query_mem. Para obter mais informações, consulte Ajuste de escala da simultaneidade.

  • Cache e transferência para o armazenamento: o cache em disco dos dados do Amazon S3 e os arquivos temporários para os quais as consultas transferem dados quando excedem a memória usam o armazenamento local da instância. O armazenamento NVMe local, disponível em instâncias da classe d, como db.r8gd, é mais rápido que o Amazon EBS para ambas as finalidades. Por isso, escolha uma classe com armazenamento NVMe local para workloads de produção que consultam tabelas estrangeiras.

  • Isolamento de workloads: as consultas a tabelas estrangeiras compartilham os recursos de CPU e memória da instância com o restante do tráfego. Para workloads que consultam tabelas estrangeiras intensivamente, execute essas consultas em uma instância de leitura dedicada. Para obter mais informações, consulte Uso de uma instância leitora dedicada para analytics.

Comece com uma classe que atenda às necessidades da workload e faça ajustes com base nos seguintes sinais.

  • O aumento de AuroraAnalyticsMemoryUsage indica que a pressão geral sobre a memória está crescendo. Mude para uma classe de instância maior ou reduza query_mem para reservar espaço para a concorrência.

  • O aumento de AuroraAnalyticsDiskSpillSize indica que consultas individuais estão excedendo query_mem e transferindo dados para o armazenamento local. Mude para uma classe maior ou aumente query_mem para disponibilizar mais espaço para cada consulta.

  • A queda de AuroraAnalyticsCacheHitRatio indica que uma quantidade maior dos dados de trabalho está sendo lida novamente do Amazon S3. Uma classe de instância maior armazena mais desses dados em cache localmente.

  • O uso elevado de CPU durante consultas a tabelas estrangeiras indica que as consultas precisam de mais vCPUs.

Para processar mais consultas simultâneas, aumente a escala verticalmente para ampliar a margem de memória disponível ou adicione uma instância de leitura para distribuir a carga.

Consulte essas métricas e saiba como monitorá-las em Monitoramento e solução de problemas.

Quando usar instâncias que utilizam apenas EBS

Instâncias sem armazenamento NVMe local, como db.r8g e db.r8i, usam o Amazon EBS para o cache. Use-as nos casos a seguir.

  • Workloads em que o custo é mais importante que o desempenho.

  • Consultas leves ou ocasionais a tabelas estrangeiras.

  • Ambientes de desenvolvimento e teste.