Melhorar a performance das consultas para o RDS para PostgreSQL com leituras otimizadas pelo Amazon RDS - Amazon Relational Database Service

Melhorar a performance das consultas para o RDS para PostgreSQL com leituras otimizadas pelo Amazon RDS

É possível acelerar o processamento de consultas para o RDS para PostgreSQL com leituras otimizadas pelo Amazon RDS. Uma instância de banco de dados ou um cluster de banco de dados multi-AZ do RDS para PostgreSQL que utiliza o recurso Leituras otimizadas pelo RDS pode alcançar um processamento de consultas até 50% mais rápido em comparação com uma instância ou um cluster não usa o recurso.

Visão geral das leituras otimizadas pelo RDS no PostgreSQL

As leituras otimizadas estão disponíveis por padrão no RDS para PostgreSQL versões 15.2 e posterior, 14.7 e posterior e 13.10 e posterior.

Quando você usa uma instância de banco de dados ou um cluster de banco de dados multi-AZ do RDS para PostgreSQL com o recurso Leituras otimizadas pelo RDS ativado, a instância ou o cluster alcança uma performance de consulta até 50% mais rápida por meio do armazenamento em bloco de unidade de estado sólido (SSD) local baseado em memória não volátil (NVMe). Você pode acelerar o processamento de consultas colocando as tabelas temporárias geradas pelo PostgreSQL no armazenamento local, o que reduz o tráfego para o Elastic Block Storage (EBS) pela rede.

No PostgreSQL, objetos temporários são atribuídos a um namespace temporário que é descartado automaticamente no final da sessão. O namespace temporário durante a eliminação remove todos os objetos que dependem da sessão, como objetos qualificados pelo esquema, por exemplo, tabelas, funções, operadores ou até mesmo extensões.

No RDS para PostgreSQL, o parâmetro temp_tablespaces é configurado para essa área de trabalho temporária em que os objetos temporários são armazenados.

As consultas a seguir retornam o nome do espaço de tabela e sua localização.

postgres=> show temp_tablespaces; temp_tablespaces --------------------- rds_temp_tablespace (1 row)

O rds_temp_tablespace é um espaço de tabela configurado pelo RDS que aponta para o armazenamento local NVMe. Você sempre pode voltar para o armazenamento do Amazon EBS modificando esse parâmetro no Parameter group usando o AWS Management Console para apontar para qualquer espaço de tabela diferente de rds_temp_tablespace. Para ter mais informações, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados. Você também pode usar o comando SET para modificar o valor do parâmetro temp_tablespaces para pg_default no nível da sessão usando o comando SET. A modificação do parâmetro redireciona a área de trabalho temporária para o Amazon EBS. Voltar para o Amazon EBS ajuda quando o armazenamento local de sua instância ou cluster do RDS não é suficiente para realizar uma operação SQL específica.

postgres=> SET temp_tablespaces TO 'pg_default'; SET
postgres=> show temp_tablespaces; temp_tablespaces ------------------ pg_default

Casos de uso para leituras otimizadas do RDS

Veja a seguir alguns casos de uso que podem se beneficiar das leituras otimizadas:

  • Consultas analíticas que incluem expressões de tabela comuns (CTEs), tabelas derivadas e operações de agrupamento.

  • Réplicas de leitura que lidam com as consultas não otimizadas de uma aplicação.

  • Consultas de relatórios dinâmicos ou sob demanda com operações complexas, como GROUP BY e ORDER BY, que nem sempre podem usar índices apropriados.

  • Outras workloads que usam tabelas temporárias internas.

  • Operações CREATE INDEX ou REINDEX de classificação.

Práticas recomendadas para leituras otimizadas do RDS

Use as práticas recomendadas a seguir para leituras otimizadas do RDS:

  • Adicione uma lógica de repetição para consultas somente leitura caso elas falhem devido ao armazenamento de instância estar cheio durante a execução.

  • Monitore o espaço de armazenamento disponível no armazenamento de instâncias com a métrica do CloudWatch FreeLocalStorage. Se o armazenamento de instância estiver atingindo seu limite devido à workload na instância de banco de dados ou no cluster de banco de dados multi-AZ, modifique a instância ou o cluster para usar uma classe de instância de banco de dados maior.

Utilizar leituras otimizadas do RDS

Quando você provisiona uma instância de banco de dados do RDS para PostgreSQL com uma das classes de instância de banco de dados baseada em NVMe em uma implantação de instância de banco de dados single-AZ, uma implantação de instância de banco de dados multi-AZ ou uma implantação de cluster de banco de dados multi-AZ, a instância de banco de dados utiliza automaticamente o recurso Leituras otimizadas pelo RDS.

Para ter mais informações sobre a implantação multi-AZ, consulte Configurar e gerenciar uma implantação multi-AZ.

Para ativar as leituras otimizadas do RDS, execute um destes procedimentos:

  • Crie uma instância de banco de dados ou um cluster de banco de dados multi-AZ do RDS para PostgreSQL utilizando uma das classes de instância de banco de dados NVMe. Para obter mais informações, consulte Criar uma instância de banco de dados do Amazon RDS.

  • Modifique uma instância de banco de dados ou um cluster de banco de dados multi-AZ existente do RDS para PostgreSQL para utilizar uma das classes de instância de banco de dados baseada em NVMe. Para obter mais informações, consulte Modificar uma instância de banco de dados do Amazon RDS.

O recurso Leituras otimizadas pelo RDS está disponível em todas as Regiões da AWS onde há suporte para uma ou mais dessas classes de instância de banco de dados com SSD NVMe local. Para obter mais informações, consulte Classes de instância de banco de dados .

Para voltar para uma instância do RDS sem otimização de leituras, modifique a classe de instância de banco de dados de sua instância ou cluster do RDS para a classe de instância semelhante que só é compatível com o armazenamento do EBS para suas workloads de banco de dados. Por exemplo, se a classe de instância de banco de dados atual for db.r6gd.4xlarge, selecione db.r6g.4xlarge para voltar. Para ter mais informações, consulte Modificar uma instância de banco de dados do Amazon RDS.

Monitorar instâncias de banco de dados que utilizam leituras otimizadas do RDS

Você pode monitorar instâncias de banco de dados que usam leituras otimizadas pelo RDS com as seguintes métricas do CloudWatch:

  • FreeLocalStorage

  • ReadIOPSLocalStorage

  • ReadLatencyLocalStorage

  • ReadThroughputLocalStorage

  • WriteIOPSLocalStorage

  • WriteLatencyLocalStorage

  • WriteThroughputLocalStorage

Essas métricas fornecem dados sobre armazenamento de instâncias, IOPS e throughput. Para ter mais informações sobre essas métricas, consulte Métricas específicas da instância do Amazon CloudWatch para Amazon RDS.

Para monitorar o uso atual de seu armazenamento local, faça login em seu banco de dados usando a seguinte consulta:

SELECT spcname AS "Name", pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_size(oid)) AS "size" FROM pg_catalog.pg_tablespace WHERE spcname IN ('rds_temp_tablespace');

Para ter mais informações sobre os arquivos temporários e o uso, consulte Gerenciar arquivos temporários com o PostgreSQL.

Limitações das leituras otimizadas pelo RDS no PostgreSQL

A limitação a seguir se aplica ao recurso Leituras otimizadas pelo RDS no PostgreSQL:

  • As transações podem falhar quando o armazenamento de instância está cheio.