Armazenamento de instâncias de banco de dados do Amazon RDS - Amazon Relational Database Service

Armazenamento de instâncias de banco de dados do Amazon RDS

As instâncias de banco de dados do Amazon RDS for MySQL, MariaDB, PostgreSQL, Oracle e Microsoft SQL Server utilizam volumes do Amazon Elastic Block Store (Amazon EBS) para armazenamento em log e banco de dados. Dependendo da quantidade de armazenamento solicitada, o Amazon RDS cruza automaticamente múltiplos volumes de Amazon EBS para aprimorar a performance.

Tipos de armazenamento do Amazon RDS

O Amazon RDS oferece três tipos de armazenamento: SSD de uso geral (também conhecido como gp2), SSD de IOPS provisionadas (também conhecido como io1) e magnético (também conhecido como padrão). Eles diferem em características de performance e preço, o que significa que você pode adaptar o custo e a performance de armazenamento às necessidades da workload do banco de dados. É possível criar instâncias de banco de dados MySQL, MariaDB, Oracle e PostgreSQL do RDS com até 64 tebibytes (TiB) de armazenamento. Crie instâncias de banco de dados SQL Server RDS com até 16 TiB de armazenamento. Para essa quantidade de armazenamento, use os tipos de armazenamento SSD de IOPS provisionadas e SSD de uso geral.

A lista a seguir descreve resumidamente os três tipos de armazenamento:

  • SSD de uso geral – os volumes de SSD de uso geral oferecem armazenamento econômico ideal para uma ampla variedade de workloads. Esses volumes fornecem latências de milissegundo com único dígito e capacidade de intermitência a 3.000 IOPS por períodos de tempo prolongados. A performance de base para esses volumes é determinado pelo tamanho do volume.

    Para obter mais informações sobre o armazenamento SSD de uso geral, incluindo os intervalos de tamanho de armazenamento, consulte Armazenamento SSD de uso geral.

  • IOPS provisionadas – O armazenamento de IOPS provisionadas foi projetado para atender às necessidades de workloads intensivas de E/S, em especial workloads de banco de dados que exigem baixa latência de E/S e taxa de transferência de E/S consistente.

    Para obter mais informações sobre o armazenamento de IOPS provisionadas, incluindo os intervalos de tamanho de armazenamento, consulte Armazenamento SSD de IOPS provisionadas.

  • Magnético – o Amazon RDS também é compatível com o armazenamento magnético para retrocompatibilidade. Recomendamos que você use SSD de uso geral ou IOPS provisionadas para toda e qualquer nova necessidade de armazenamento. A quantidade máxima de armazenamento permitida para instâncias de banco de dados no armazenamento magnético é menor que a dos outros tipos de armazenamento. Para obter mais informações, consulte Armazenamento magnético.

Vários fatores podem afetar a performance dos volumes do Amazon EBS, como a configuração da instância, as características de E/S e a demanda da workload. Para obter mais informações sobre como aproveitar ao máximo os volumes de IOPS provisionadas, consulte Performance de volume do Amazon EBS.

Armazenamento SSD de uso geral

O armazenamento SSD de uso geral é econômico e aceitável para a maioria das workloads de banco de dados. Veja a seguir os intervalos de tamanho de armazenamento para instâncias de banco de dados de SSD de uso geral:

  • Instâncias de banco de dados MariaDB, MySQL, Oracle e PostgreSQL: 20 GiB–64 TiB

  • SQL Server edições Enterprise, Standard, Web e Express: 20 GiB–16 TiB

A performance de E/S de referência para o armazenamento SSD de uso geral é de 3 IOPS para cada GiB, com no mínimo 100 IOPS. Esse relacionamento significa que volumes maiores têm uma performance melhor. Por exemplo, a performance basal para um volume de 100 GiB é 300 IOPS. A performance basal para um volume de 1 TiB é de 3.000 IOPS. A performance máxima da linha de base para um volume gp2 (5,34 TiB e posterior) é de 16.000 IOPS.

Os volumes abaixo de 1 TiB em tamanho também têm a capacidade de intermitência até 3.000 IOPS durante períodos prolongados. O saldo de créditos E/S de instância determina a performance de intermitência. Para obter mais informações sobre os créditos de E/S da instância, consulte Créditos de E/S e performance de intermitência.

Muitas workloads nunca esgotam o saldo de intermitência, tornando o SSD de uso geral uma opção de armazenamento ideal para workloads. No entanto, algumas workloads podem esgotar o saldo de créditos de armazenamento de intermitência de 3.000 IOPS, portanto você deve planejar sua capacidade de armazenamento para atender às necessidades das workloads.

Para volumes gp2 com mais de 1 TiB, a performance de linha de base é maior que a performance de intermitência. Para esses volumes, a intermitência é irrelevante porque a performance da linha de base é melhor que a performance de intermitência de 3.000 IOPS.

nota

As instâncias de banco de dados que usam o armazenamento SSD de uso geral podem sofrer latência muito mais longa após a criação da réplica de leitura, conversão Multi-AZ e restauração de snapshot de banco de dados do que as instâncias que usam o armazenamento de IOPS provisionadas. Se você precisar de uma instância de banco de dados com latência mínima após essas operações, recomendamos o uso de armazenamento de IOPS provisionadas.

Créditos de E/S e performance de intermitência

A performance de armazenamento do SSD de uso geral é regido pelo tamanho do volume, que determina o nível de performance base do volume e a velocidade com que ele acumula créditos de E/S. Os volumes maiores apresentam níveis mais altos de performance base e acumulam créditos de E/S mais rápido. Os créditos de E/S representam a largura de banda disponível que seu armazenamento SSD de uso geral pode usar para liberar grandes quantidades de E/S quando for necessário mais do que o nível básico de performance. Quanto mais créditos de E/S seu armazenamento tiver para E/S, mais tempo ele poderá ter além de seu nível básico de performance e melhor será a performance quando a workload exigir mais performance.

Ao usar o armazenamento SSD de uso geral, a instância de banco de dados recebe um saldo de créditos de E/S inicial de 5,4 milhões de créditos de E/S. Esse saldo de créditos inicial é suficiente para manter uma performance de intermitência de 3.000 IOPS durante 30 minutos. Esse saldo é projetado para fornecer um ciclo de inicialização inicial rápido para volumes de inicialização e fornecer uma boa experiência de bootstrapping para outros aplicativos. Os volumes ganham créditos de E/S na taxa de performance basal de 3 IOPS para cada GiB de tamanho do volume. Por exemplo, um volume de SSD de 100 GiB tem uma performance basal de 300 IOPS.

Quando seu armazenamento exigir mais que o nível de E/S de performance de base, ele usará créditos de E/S no saldo de créditos para atingir o nível de performance desejado. Tal intermitência alcança um máximo de 3.000 IOPS. O armazenamento maior que 1.000 GiB tem uma performance base que é igual ou superior à performance de intermitência máxima. Quando seu armazenamento usar menos créditos de E/S do que ganha em um segundo, os créditos não utilizados de E/S serão adicionados ao saldo de crédito de E/S. O saldo de créditos de E/S máximo para uma instância de banco de dados usando armazenamento SSD de uso geral é igual ao saldo de créditos inicial (5,4 milhões de créditos de E/S).

Digamos que o armazenamento usa todo o saldo de créditos de E/S. Se esse for o caso, a performance máxima permanecerá no nível de performance de base até que a demanda de E/S desça abaixo do nível de base e os créditos de E/S não utilizados sejam adicionados ao saldo de crédito de E/S. (O nível de performance de base é a taxa na qual seu armazenamento ganha créditos de E/S.) Quanto maior o armazenamento, maior a performance de base e mais rapidamente o saldo de créditos de E/S é reabastecido.

nota

As conversões de armazenamento entre armazenamento magnético e armazenamento SSD de uso geral podem esgotar o saldo de créditos de E/S, resultando em tempos de conversão mais longos. Para obter mais informações sobre a escalabilidade de armazenamento, consulte Trabalhar com armazenamento para instâncias de banco de dados do Amazon RDS.

A duração da intermitência de seu armazenamento depende do tamanho do armazenamento, do IOPS de intermitência necessário e do saldo de créditos de E/S quando a intermitência inicia. Essa relação é mostrada na equação abaixo.

(Credit balance) Burst duration =  -------------------------------------- (Burst IOPS) - 3*(Storage size in GiB)

Talvez você perceba que a performance de armazenamento normalmente está limitada ao nível base devido a um saldo de créditos de E/S vazio. Se esse for o caso, considere alocar mais armazenamento SSD de uso geral com um nível de performance de base maior. Como alternativa, você pode mudar para o armazenamento de IOPS provisionadas para workloads que exigem performance de IOPS sustentada.

Para as workloads com requisitos de E/S em condição estável, o provisionamento de menos de 100 GiB de armazenamento SSD de uso geral pode resultar em latências mais altas se você esgotar o saldo de créditos de E/S.

nota

Geralmente, a maioria das workloads nunca ultrapassa o saldo de créditos de E/S.

Para obter uma descrição mais detalhada de como a performance basal e o saldo de créditos de E/S afetam a performance, consulte Conceitos básicos da intermitência com relação à performance com o Amazon RDS e o GP2.

Armazenamento SSD de IOPS provisionadas

Para um aplicativo de produção que exija performance de E/S rápida e consistente, recomendamos o armazenamento de IOPS provisionadas (operações de entrada/saída por segundo). O armazenamento de IOPS provisionadas é um tipo de armazenamento que oferece performance previsível e latência consistentemente baixa. O armazenamento de IOPS provisionadas é otimizado para workloads de processamento de transações online (OLTP) que apresentam requisitos de performance consistentes. As IOPS provisionadas ajudam a ajustar a performance dessas workloads.

nota

A workload do banco de dados pode não conseguir alcançar 100% das IOPS provisionadas. Para obter mais informações, consulte Fatores que afetam a performance de armazenamento.

Ao criar uma instância de banco de dados, você especifica a taxa de IOPS e o tamanho do volume. O Amazon RDS fornecerá essa taxa de IOPS para a instância de banco de dados até você alterá-la.

  • A proporção de IOPS com relação ao armazenamento alocado (em GiB) deve ser de 1 a 50 no RDS for SQL Server e de 0,5 a 50 em outros mecanismos de banco de dados RDS.

  • Se você estiver usando autoescalabilidade de armazenamento, as mesmas taxas entre IOPS e limite máximo de armazenamento (em GiB) também se aplicarão.

    Para obter mais informações sobre autoescalabilidade automática de armazenamento, consulte Gerenciar a capacidade automaticamente com a escalabilidade automática de armazenamento do Amazon RDS.

A tabela a seguir mostra o intervalo de IOPS provisionadas e o intervalo de tamanho do armazenamento para cada mecanismo de banco de dados.

Mecanismo do banco de dados Intervalo de IOPS provisionadas Intervalo de armazenamento
MariaDB 1.000–80.000 IOPS 100 GiB–64 TiB
SQL Server 1.000–64.000 IOPS 20 GiB – 16 TiB
MySQL 1.000–80.000 IOPS 100 GiB–64 TiB
Oracle 1.000–256.000 IOPS 100 GiB–64 TiB
PostgreSQL 1.000–80.000 IOPS 100 GiB–64 TiB
nota

Para o SQL Server, o máximo de 64.000 IOPS é garantido apenas em instâncias baseadas no Nitro que estão nos tipos de instância m5, m5d, r5, r5b, r5d e z1d. Outras famílias de instâncias garantem performance de até 32.000 IOPS.

Para o Oracle, é possível provisionar o máximo de 256.000 IOPS somente no tipo de instância r5b.

Para o PostgreSQL, as IOPS máximas nas classes de instância db.m5.8xlarge, db.m5.16xlarge, db.r5.8xlarge e db.r5.16xlarge são 40.000.

Importante

Dependendo da classe de instância que você está usando, você pode ver uma performance de IOPS menor do que o máximo que o RDS permite provisionar. Para obter informações específicas sobre a performance de IOPS para classes de instância de banco de dados, consulte Instâncias otimizadas para Amazon EBS. Recomendamos que você determine as IOPS máximas para a classe de instância antes de definir um valor de IOPS provisionadas para sua instância de banco de dados.

Combinação de armazenamento de IOPS provisionadas com implantações Multi-AZ ou réplicas de leitura

Para casos de uso de OLTP de produção, recomendamos o uso de implantações Multi-AZ para tolerância a falhas aprimorada com armazenamento de IOPS provisionadas para performance rápida e previsível.

Também é possível usar o armazenamento SSD de IOPS provisionadas com réplicas de leitura para MySQL, MariaDB ou PostgreSQL. O tipo de armazenamento para uma réplica de leitura é independente daquele da instância de banco de dados primária. Por exemplo, você pode usar o SSD de uso geral para réplicas de leitura com uma instância do banco de dados primária que usa armazenamento SSD de IOPS provisionadas para reduzir custos. No entanto, a performance da réplica de leitura nesse caso pode ser diferente daquela de uma configuração em que a instância de banco de dados primária e as réplicas de leitura usam o armazenamento SSD de IOPS provisionadas.

Custos do armazenamento de IOPS provisionadas

Com o armazenamento de IOPS provisionadas, você é cobrado pelos recursos provisionados se usá-los ou não durante um certo mês.

Para obter mais informações sobre a definição de preço, consulte Definição de preço do Amazon RDS.

Obter a melhor performance do armazenamento SSD de IOPS provisionadas do Amazon RDS

Se a sua workload for limitado à E/S, usar o armazenamento SSD de IOPS provisionadas pode aumentar o número de solicitações de E/S que o sistema pode processar simultaneamente. O aumento da simultaneidade permite a diminuição da latência pois as solicitações de E/S passam menos tempo em uma fila. A latência menor permite compromissos de banco de dados mais rápidos, o que melhora o tempo de resposta e permite uma maior taxa de transferência de banco de dados.

O armazenamento SSD de IOPS provisionadas permitem reservar a capacidade de E/S especificando o IOPS. No entanto, como qualquer outro atributo de capacidade do sistema, a taxa de transferência máxima sob carga será restringida pelo recurso que for consumido primeiro. Esse recurso pode ser largura de banda da rede, CPU, memória ou recursos internos do banco de dados.

Armazenamento magnético

O Amazon RDS também suporta armazenamento magnético para retrocompatibilidade. Recomendamos que você use SSD de uso geral ou SSD de IOPS provisionadas para toda e qualquer nova necessidade de armazenamento. A seguir estão algumas limitações para o armazenamento magnético:

  • Não permite escalar o armazenamento ao usar o mecanismo de banco de dados do SQL Server.

  • Não é compatível com a escalabilidade automática de armazenamento.

  • Não é compatível com os volumes elásticos.

  • Limitado a um tamanho máximo de 3 TiB.

  • Limitado a um máximo de 1.000 IOPS.

Monitoramento da performance de armazenamento

O Amazon RDS fornece várias métricas que você pode usar para avaliar a performance da sua instância de banco de dados. Você pode visualizar as métricas na página de resumo da sua instância no Console de gerenciamento do Amazon RDS. Você também pode usar o Amazon CloudWatch para monitorar essas métricas. Para obter mais informações, consulte Visualizar métricas no console do Amazon RDS. O Monitoramento aprimorado fornece métricas de E/S mais detalhadas; para obter mais informações, consulte Monitorar métricas do SO com o monitoramento avançado.

As métricas a seguir são úteis para monitorar o armazenamento da sua instância de banco de dados:

  • IOPS – o número de operações de E/S concluídas por segundo. Essa métrica é relatada como as IOPS médias para um determinado intervalo de tempo. O Amazon RDS relata as IOPS de leitura e gravação separadamente em intervalos de um minuto. A IOPS total é a soma da IOPS de leitura e gravação. Os valores típicos da IOPS variam de zero a dezenas de milhares por segundo.

  • Latência – o tempo decorrido entre o envio de uma solicitação de E/S e a sua conclusão. Essa métrica é relatada como a latência média para um determinado intervalo de tempo. O Amazon RDS relata a latência de leitura e gravação separadamente em intervalos de um minuto. Os valores típicos de latência estão em milissegundos (ms).

  • Taxa de transferência – o número de bytes por segundo transferidos para ou a partir do disco. Essa métrica é relatada como a taxa de transferência média para um determinado intervalo de tempo. O Amazon RDS relata o volume de leitura e gravação separadamente em intervalos de um minuto usando unidades de megabytes por segundo (MB/s). Os valores típicos da taxa de transferência variam de zero à largura de banda máxima do canal de E/S.

  • Comprimento da fila – o número de solicitações de E/S na fila aguardando por ser atendidas. Essas são solicitações de E/S que foram enviadas pelo aplicativo, mas não foram enviadas ao dispositivo porque o mesmo está ocupado atendendo a outras solicitações de E/S. O tempo gasto esperando na fila é um componente de latência e tempo de serviço (não disponível como uma métrica). Essa métrica é relatada como o comprimento da fila médio para um determinado intervalo de tempo. O Amazon RDS relata o comprimento da fila em intervalos de um minuto. Os valores típicos de comprimento da fila variam de zero a várias centenas.

Os valores de IOPS medidos são independentes do tamanho da operação de E/S individual. Isso significa que ao medir a performance de E/S, você deve observar a taxa de transferência da instância, não apenas o número de operações de E/S.

Fatores que afetam a performance de armazenamento

As atividades do sistema, a workload do banco de dados e a classe da instância de banco de dados podem afetar a performance de armazenamento.

Atividades do sistema

As seguintes atividades relacionadas ao sistema consomem capacidade de E/S e podem reduzir a performance da instância de banco de dados em andamento:

  • Criação da espera Multi-AZ

  • Criação de réplica de leitura

  • Alteração dos tipos de armazenamento

workload do banco de dados

Em alguns casos o design do banco de dados ou da aplicação resulta em problemas de simultaneidade, travamento ou outras formas de contenção do banco de dados. Nesses casos, talvez não seja possível usar toda a largura de banda provisionada diretamente. Além disso, você pode encontrar as seguintes situações relacionadas à workload:

  • O limite da taxa de transferência do tipo de instância subjacente é acessado.

  • A profundidade da fila é consistente menor que 1 pois o aplicativo não está conduzindo operações de E/S suficientes.

  • Você vivencia contenção de consulta no banco de dados mesmo que haja capacidade de E/S não usada.

Em alguns casos, não há um recurso de sistema que esteja dentro ou próximo de um limite, e a adição de threads não aumenta a taxa de transação do banco de dados. Nesses casos, o gargalo é mais provável a contenção no banco de dados. As formas mais comuns são bloqueio de linha e contenção de bloqueio de página de índice, mas há muitas outras possibilidades. Se essa for a sua situação, procure a orientação de um especialista em ajuste de performance de banco de dados.

DB instance class

Para obter a máxima performance da instância de banco de dados Amazon RDS, selecione um tipo de instância da geração atual com largura de banda suficiente para oferecer suporte ao seu tipo de armazenamento. Por exemplo, você pode escolher instâncias otimizadas para Amazon EBS e instâncias com conectividade de rede de 10 gigabit.

Importante

Dependendo da classe de instância que você está usando, poderá observar uma performance de IOPS menor do que o máximo que o RDS permite provisionar. Para obter informações específicas sobre a performance de IOPS para classes de instância de banco de dados, consulte Instâncias otimizadas para Amazon EBS. Recomendamos que você determine as IOPS máximas para a classe de instância antes de definir um valor de IOPS provisionadas para sua instância de banco de dados.

Recomendamos usar a geração mais recente das instâncias para obter a melhor performance. As instâncias de banco de dados de geração anteriores também podem ter um armazenamento máximo menor.

Alguns sistemas de arquivos mais antigos de 32 bits podem ter capacidades de armazenamento mais baixas. Para determinar a capacidade de armazenamento da sua instância de banco de dados, use o comando describe-valid-db-instance-modifications da AWS CLI.

A tabela a seguir mostra o armazenamento máximo para o qual cada classe de instância de banco de dados pode ser expandida em cada mecanismo de banco de dados.

  • MariaDB: 64 TiB

  • Microsoft SQL Server: 16 TiB

  • MySQL: 64 TiB

  • Oracle: 64 TiB

  • PostgreSQL: 64 TiB

A tabela a seguir mostra algumas exceções. Todas as instâncias de banco de dados RDS for Microsoft SQL Server têm um armazenamento máximo de 16 TiB. Portanto, não há entradas para o SQL Server.

Classe de instância MariaDB MySQL Oracle PostgreSQL
db.m3: classes de instância padrão da geração anterior
db.m3.2xlarge N/D 6 N/D 6
db.m3.xlarge N/D 6 N/D 6
db.m3.large N/D 6 N/D 6
db.m3.medium N/D 32 N/D 32
db.t3: classes de instância expansível de última geração
db.t3.medium 16 16 32 32
db.t3.small 16 16 32 16
db.t3.micro 16 16 32 16
db.t2: classes de instância expansível da geração atual
db.t2.medium 32 32 N/D 32
db.t2.small 16 16 N/D 16
db.t2.micro 16 16 N/D 16

Para obter mais detalhes sobre todas as classes de instâncias compatíveis, consulte Instâncias de banco de dados de gerações anteriores.