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 comoquery_mem). O valor padrão dequery_memvaria de acordo com o tamanho da instância. Assim, uma instância maior disponibiliza automaticamente mais memória para cada consulta. Quando uma consulta excedequery_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 dequery_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
AuroraAnalyticsMemoryUsageindica que a pressão geral sobre a memória está crescendo. Mude para uma classe de instância maior ou reduzaquery_mempara reservar espaço para a concorrência. -
O aumento de
AuroraAnalyticsDiskSpillSizeindica que consultas individuais estão excedendoquery_meme transferindo dados para o armazenamento local. Mude para uma classe maior ou aumentequery_mempara disponibilizar mais espaço para cada consulta. -
A queda de
AuroraAnalyticsCacheHitRatioindica 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.