Melhorar a performance das gravações com gravações otimizadas pelo RDS para MySQL - Amazon Relational Database Service

Melhorar a performance das gravações com gravações otimizadas pelo RDS para MySQL

Você pode melhorar a performance das transações de gravação com as gravações otimizadas pelo Amazon RDS para MySQL. Quando seu banco de dados do RDS para MySQL utiliza gravações otimizadas pelo RDS, ele pode atingir um throughput de transações de gravação até duas vezes maior.

Visão geral das gravações otimizadas do RDS

Quando você ativa as gravações otimizadas pelo Amazon RDS, seus bancos de dados do RDS para MySQL gravam apenas uma vez ao liberar dados em um armazenamento durável sem a necessidade do buffer de gravação dupla. Os bancos de dados continuam fornecendo proteções de propriedade ACID para transações de banco de dados confiáveis, além de desempenho aprimorado.

Bancos de dados relacionais, como o MySQL, fornecem as propriedades ACID de atomicidade, consistência, isolamento e durabilidade para transações de banco de dados confiáveis. Para ajudar a fornecer essas propriedades, o MySQL utiliza uma área de armazenamento de dados denominada buffer de gravação dupla que evita erros parciais de gravação de página. Esses erros ocorrem quando há uma falha de hardware enquanto o banco de dados está atualizando uma página, como no caso de uma queda de energia. Um banco de dados MySQL pode detectar gravações parciais de páginas e recuperá-las com uma cópia da página no buffer de gravação dupla. Embora essa técnica ofereça proteção, ela também ocasiona operações extras de gravação. Para ter mais informações sobre o buffer de gravação dupla do MySQL, consulte Doublewrite Buffer (Buffer de gravação dupla) na documentação do MySQL.

Com as gravações otimizadas pelo RDS ativadas, os bancos de dados do RDS para MySQL gravam apenas uma vez ao liberar dados em um armazenamento durável sem a necessidade do buffer de gravação dupla. As gravações otimizadas pelo RDS são úteis se você executa workloads de uso intenso de gravação em seus bancos de dados do RDS para MySQL. Exemplos de bancos de dados com workloads de uso intenso de gravação incluem os compatíveis com pagamentos digitais, negociação financeira e aplicações de jogos.

Esses bancos de dados são executados em classes de instância de banco de dados que utilizam o AWS Nitro System. Devido à configuração de hardware nesses sistemas, o banco de dados pode gravar páginas de 16 KiB diretamente nos arquivos de dados de forma confiável e durável em uma única etapa. O sistema AWS Nitro possibilita gravações otimizadas pelo RDS.

Você pode definir o novo parâmetro de banco de dados rds.optimized_writes para controlar o recurso de gravações otimizadas pelo RDS para bancos de dados do RDS para MySQL. Acesse esse parâmetro nos grupos de parâmetros de banco de dados do RDS para MySQL versão 8.0. Defina o parâmetro com os seguintes valores:

  • AUTO: ative as gravações otimizadas pelo RDS se o banco de dados for compatível com o recurso. Desative as gravações otimizadas pelo RDS se o banco de dados não for compatível com o recurso. Essa é a configuração padrão.

  • OFF: desative as gravações otimizadas pelo RDS mesmo se o banco de dados for compatível com o recurso.

Se você tem um banco de dados existente com uma versão de mecanismo, classe de instância de banco de dados e/ou formato de sistema de arquivos que não suporta gravações otimizadas para RDS, você pode ativar o recurso criando uma implantação azul/verde. Para obter mais informações, consulte Habilitando gravações otimizadas para RDS em um banco de dados existente.

Se você migrar um banco de dados do RDS para MySQL configurado para usar gravações otimizadas pelo RDS para uma classe de instância de banco de dados que não oferece suporte ao recurso, o RDS desativará automaticamente as gravações otimizadas pelo RDS para o banco de dados.

Quando as gravações otimizadas pelo RDS estão desativadas, o banco de dados utiliza o buffer de gravação dupla do MySQL.

Para determinar se um banco de dados do RDS para MySQL está usando gravações otimizadas pelo RDS, visualize o valor atual do parâmetro innodb_doublewrite para o banco de dados. Se o banco de dados estiver usando gravações otimizadas pelo RDS, esse parâmetro será definido como FALSE (0).

Utilizar gravações otimizadas pelo RDS

Você pode ativar as gravações otimizadas pelo RDS ao criar um banco de dados do RDS para MySQL com o console do RDS, a AWS CLI o ou a API do RDS. As gravações otimizadas pelo RDS são ativadas automaticamente quando as duas condições a seguir se aplicam durante a criação do banco de dados:

  • Você especifica uma versão de mecanismo de banco de dados e uma classe de instância de banco de dados compatíveis com as gravações otimizadas pelo RDS.

    • As gravações otimizadas pelo RDS são compatíveis com a versão 8.0.30 e posteriores do RDS para MySQL. Para obter informações sobre as versões do RDS para MySQL, consulte MySQL em versões do Amazon RDS.

    • As gravações otimizadas pelo RDS são compatíveis com bancos de dados do RDS para MySQL que usam as seguintes classes de instância de banco de dados:

      • db.m7g

      • db.m6g

      • db.m6gd

      • db.m6i

      • db.m5

      • db.m5d

      • db.r7g

      • db.r6g

      • db.r6gd

      • db.r6i

      • db.r5

      • db.r5b

      • db.r5d

      • db.x2idn

      • db.x2iedn

      Para obter informações sobre classes de instância de banco de dados, consulte Classes de instância de banco de dados .

      A disponibilidade da classe de instância de banco de dados difere em Regiões da AWS. Para determinar se uma classe de instância de banco de dados é compatível com uma Região da AWS específica, consulte Determinar o suporte para classes de instância de bancos de dados nas Regiões da AWS.

      Para atualizar seu banco de dados para uma classe de instância de banco de dados compatível com as gravações otimizadas do RDS, você pode criar uma implantação azul/verde. Para obter mais informações, consulte Habilitando gravações otimizadas para RDS em um banco de dados existente.

  • No grupo de parâmetros associado ao banco de dados, o parâmetro rds.optimized_writes é definido como AUTO. Nos grupos de parâmetros padrão, esse parâmetro é sempre definido como AUTO.

Se você quiser usar uma versão do mecanismo de banco de dados e uma classe de instância de banco de dados que sejam compatíveis com gravações otimizadas pelo RDS, mas não quer usar esse recurso, especifique um grupo de parâmetros personalizado ao criar o banco de dados. Nesse grupo de parâmetros, defina o parâmetro rds.optimized_writes como OFF. Se você quiser que o banco de dados use gravações otimizadas pelo RDS posteriormente, você pode definir o parâmetro AUTO para ativá-lo. Para obter informações sobre como criar grupos de parâmetros personalizados e definir parâmetros, consulte Trabalhar com grupos de parâmetros.

Para obter informações sobre como criar uma instância de banco de dados, consulte Criar uma instância de banco de dados do Amazon RDS.

Ao usar o console do RDS para criar um banco de dados do RDS para MySQL, você pode filtrar as versões do mecanismo de banco de dados e as classes de instância de banco de dados compatíveis com gravações otimizadas pelo RDS. Depois de ativar os filtros, é possível selecionar entre as versões disponíveis do mecanismo de banco de dados e classes de instância de banco de dados.

Para selecionar uma versão do mecanismo de banco de dados que seja compatível com gravações otimizadas pelo RDS, filtre as versões do mecanismo de banco de dados do RDS para MySQL compatíveis com o recurso em Engine version (Versão do mecanismo) e, depois, selecione uma versão.

Filtro de versão do mecanismo de banco de dados para gravações otimizadas pelo RDS

Na seção Instance configuration (Configuração da instância), filtre as classes de instância de banco de dados que são compatíveis com gravações otimizadas pelo RDS e selecione uma classe de instância de banco de dados.

Filtro de classe de instância de banco de dados para gravações otimizadas pelo RDS.

Depois de fazer essas seleções, você pode selecionar outras configurações que atendam aos seus requisitos e concluir a criação do banco de dados do RDS para MySQL com o console.

Para criar uma instância de banco de dados utilizando o comando AWS CLI, utilize o comando create-db-instance. Os valores --engine-version e --db-instance-class devem ser compatíveis com gravações otimizadas pelo RDS. Além disso, verifique se o grupo de parâmetros associado a uma instância de banco de dados tem o parâmetro rds.optimized_writes definido como AUTO. O exemplo associa o grupo de parâmetros padrão à instância de banco de dados.

exemplo Criar uma instância de banco de dados que utilize gravações otimizadas pelo RDS

Para Linux, macOS ou Unix:

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --engine mysql \ --engine-version 8.0.30 \ --db-instance-class db.r5b.large \ --manage-master-user-password \ --master-username admin \ --allocated-storage 200

Para Windows:

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --engine mysql ^ --engine-version 8.0.30 ^ --db-instance-class db.r5b.large ^ --manage-master-user-password ^ --master-username admin ^ --allocated-storage 200

Você pode criar uma instância de banco de dados utilizando a operação CreateDBInstance. Ao utilizar essa operação, os valores EngineVersion e DBInstanceClass devem ser compatíveis com gravações otimizadas pelo RDS. Além disso, verifique se o grupo de parâmetros associado a uma instância de banco de dados tem o parâmetro rds.optimized_writes definido como AUTO.

Habilitando gravações otimizadas para RDS em um banco de dados existente

Para modificar um banco de dados existente do RDS para MySQL para ativar as gravações otimizadas do RDS, o banco de dados deve ter sido criado com uma versão do mecanismo de banco de dados e uma classe de instância de banco de dados compatíveis. Além disso, o banco de dados deve ter sido criado após o lançamento do RDS Optimized Writes em 27 de novembro de 2022, pois a configuração necessária do sistema de arquivos subjacente é incompatível com a dos bancos de dados criados antes do lançamento. Se essas condições forem atendidas, você poderá ativar as gravações otimizadas para RDS definindo o rds.optimized_writes parâmetro como. AUTO

Se seu banco de dados não foi criado com uma versão de mecanismo, classe de instância ou configuração de sistema de arquivos compatível, você pode usar o RDS Blue/Green Deployments para migrar para uma configuração compatível. Ao criar a implantação azul/verde, faça o seguinte:

  • Selecione Habilitação de gravações otimizadas no banco de dados verde e, em seguida, especifique uma versão do mecanismo e uma classe de instância de banco de dados compatíveis com as gravações otimizadas do RDS. Para obter uma lista das versões dos mecanismos compatíveis, consulte Utilizar gravações otimizadas pelo RDS.

  • Em Armazenamento, escolha Atualizar a configuração do sistema de arquivos de armazenamento. Essa opção atualiza o banco de dados para uma configuração de sistema de arquivos subjacente compatível.

Ao criar a implantação azul/verde, se o rds.optimized_writes parâmetro estiver definido paraAUTO, as gravações otimizadas do RDS serão ativadas automaticamente no ambiente verde. Você pode então fazer a transição azul/verde, o que promove o ambiente verde para o novo ambiente de produção.

Para obter mais informações, consulte Criar uma implantação azul/verde.

Limitações das gravações otimizadas pelo RDS

Ao restaurar um banco de dados do RDS para MySQL a partir de um snapshot, você só pode ativar as gravações otimizadas pelo RDS no banco de dados se todas as condições a seguir se aplicarem:

  • O snapshot foi criado a partir de um banco de dados compatível com gravações otimizadas pelo RDS.

  • O snapshot foi criado por meio de um banco de dados criado após o lançamento de gravações otimizadas pelo RDS.

  • O snapshot foi restaurado a partir de um banco de dados compatível com gravações otimizadas pelo RDS.

  • O banco de dados restaurado é associado a um grupo de parâmetros que tenha o parâmetro rds.optimized_writes definido como AUTO.