Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como melhorar o desempenho do MySQL AWS 2x em relação ao Amazon RDS com o mesmo custo

A AWS é o provedor de nuvem nº 1 para hospedagem de banco de dados de código aberto e a nuvem principal para implantações do MySQL. À medida que as organizações continuam migrando para a nuvem, é importante se antecipar aos problemas de desempenho, como alta latência, baixa taxa de transferência e atraso de replicação com distâncias maiores entre seus usuários e a infraestrutura de nuvem. Embora muitos usuários da AWS optem por sua solução de banco de dados gerenciado, o Amazon RDS, existem alternativas disponíveis que podem melhorar o desempenho do MySQL na AWS por meio de opções avançadas de personalização e suporte ilimitado ao tipo de instância EC2. O ScaleGrid oferece uma alternativa atraente para hospedar o MySQL na AWS que oferece melhor desempenho, mais controle e sem dependência de fornecedor de nuvem e o mesmo preço do Amazon RDS. Nesta postagem, comparamos o desempenho do MySQL Amazon RDS vs. MySQL Hosting no ScaleGrid em instâncias de alto desempenho da AWS.

TLDR

A implantação do MySQL no AWS High Performance do ScaleGrid pode fornecer 2x-3x a taxa de transferência com metade da latência do Amazon RDS for MySQL com a vantagem adicional de ter 2 réplicas de leitura em comparação com 1 em RDS.

MySQL no teste de desempenho da AWS

ScaleGrid Amazon RDS
Tipo de instância AWS High Performance XLarge (veja os detalhes do sistema abaixo) Instância de banco de dados r4.xlarge (Multi-AZ)
Tipo de implantação 3 Node Master-Slave Set com replicação semisíncrona Implantação multi-AZ com 1 réplica de leitura
Disco SSD SSD local e uso geral – 2 TB Uso geral – 2TB
Custo Mensal (USD) $1.798 $1.789


Amazon RDS Custos Preço Quantidade Total Notas
Multi-AZ
instância de banco de dados (hr) $0,48 730 $350,40 db.r4.xlarge
instância de banco de dados (hr) $0,48 730 $350,40 db.r4.xlarge
Armazenamento (GB) $0,115 2000 $230.00 Uso geral - 2 TB (AZ único)
Ler réplica
instância de banco de dados (hr) $0,48 730 $350,40 db.r4.xlarge (Single-AZ)
Armazenamento (GB) $0,115 2000 $230.00 Uso geral - 2 TB (AZ único)
Outros custos
Armazenamento de backup (GB) $0,095 1000 $95,00 Libere até 100% do armazenamento de banco de dados
Transferência de dados (saída para a Internet) $0,09 0 $0.00 Livre até 1GB/mês
Transferência de dados (para regiões) $0.01 2000 $20,00 Leste dos EUA (Norte da Virgínia)
Suporte $162,62 1 $162,62 10% do custo mensal
Total $1.788,82

Como você pode ver na tabela acima, o preço do MySQL RDS está dentro de US$ 10 da solução de hospedagem MySQL totalmente gerenciada e abrangente do ScaleGrid.

O que são os conjuntos de réplicas de alto desempenho do ScaleGrid?

O conjunto de réplicas ScaleGrid MySQL no AWS High Performance usa um híbrido de SSD local e disco EBS para obter alto desempenho e alta confiabilidade. Uma configuração típica é implantada usando um conjunto de réplicas de 3 nós:

  • O Master e o Slave-1 usam discos SSD locais.
  • Slave-2 usa um disco EBS (pode ser de uso geral ou um disco IOPS provisionado).


O que isso significa? Como o Master e o Slave-1 estão sendo executados no SSD local, você obtém o melhor desempenho de disco possível de suas máquinas AWS. Não há mais EBS baseado em rede, apenas SSD local extremamente rápido. Lê e grava no seu primário e até lê do Slave-1 funcionará na velocidade do SSD. O Slave-2 usa um disco de dados do EBS e você pode configurar a quantidade de IOPS necessária para seu cluster. Essa configuração oferece total segurança para seus dados, mesmo no caso de você perder os discos SSD locais.

O conjunto de réplicas MySQL AWS High Performance XLarge do ScaleGrid usa instâncias i3.xlarge (30,5 GB de RAM) com SSD local para Master e Slave-1 e um i3.2xlarge (61 GB RAM) para Slave-2.

Configuração do MySQL

Uma configuração similar do MySQL é usada nas implantações do ScaleGrid e do RDS:

Configuration Valor
versão 5.7.25 edição da comunidade
innodb_buffer_pool_size 25G
innodb_log_file_size 1G
innodb_flush_log_at_trx_commit 1
sync_binlog 1
innodb_io_capacity 3000
innodb_io_capacity_max 6000
slave_parallel_workers 30
slave_parallel_type LOGICAL_CLOCK

Configuração do benchmark de desempenho do MySQL

Configuração Detalhes
Ferramenta Sysbench versão 1.0.17
Host 1 r4.xlarge localizado no mesmo datacenter da AWS que o MySQL Master
# Tabelas 100
# linhas por tabela 5.000.000
Script de geração de carga de trabalho oltp_read_write.lua


Cenários e resultados do teste de desempenho do MySQL

Para garantir que fornecemos resultados informativos para todos os tipos de carga de trabalho do MySQL AWS, dividimos nossos testes nesses três cenários para que você possa avaliar com base na intensidade da carga de trabalho de leitura/gravação:

  1. Carga de trabalho de leitura intensiva: 80% de leituras e 20% de gravações
  2. Carga de trabalho balanceada: 50% de leituras e 50% de gravações
  3. Carga de trabalho intensiva de gravação: 20% de leituras e 80% de gravações

Cada cenário é executado com um número variável de threads de cliente sysbench que variam de 50 a 400, e cada teste é executado por uma duração de 10 minutos. Medimos a taxa de transferência em termos de consultas por segundo (QPS) e latência do percentil 95 e garantimos que o atraso máximo de replicação nos escravos não ultrapasse 30s. Para alguns dos testes na implantação do ScaleGrid, a configuração do MySQL binlog_group_commit_sync_delay é ajustada para que o atraso da replicação do escravo não ultrapasse 30s. Essa técnica é chamada de “desacelerar o mestre para acelerar os escravos” e é explicada no blog de J-F Gagne.
Como melhorar o desempenho do #MySQL AWS 2X em relação ao Amazon RDS com o mesmo custoClique para Tweet

Cenário-1:Carga de trabalho intensiva em leitura com 80% de leituras e 20% de gravações


Como podemos ver nos testes de carga de trabalho de leitura intensiva, as instâncias MySQL de alto desempenho do ScaleGrid na AWS são capazes de lidar consistentemente com cerca de 27.800 QPS em qualquer lugar de 50 a 400 fios. Isso representa um aumento de quase 200% em relação ao desempenho do MySQL RDS, cuja média é de apenas 9.411 QPS na mesma faixa de threads.


ScaleGrid também mantém uma latência 53% menor, em média, em todos os testes de desempenho do MySQL AWS. A latência do Amazon RDS e do ScaleGrid aumenta constantemente à medida que o número de encadeamentos aumenta, onde o ScaleGrid atinge o máximo de 383 ms para 400 encadeamentos enquanto o Amazon RDS está em 831 ms no mesmo nível.

Cenário-2:carga de trabalho balanceada com 50% de leituras e 50% de gravações


Em nossos testes de desempenho de carga de trabalho balanceada, a implantação do MySQL High Performance do ScaleGrid na AWS supera novamente com uma média de 20.605 QPS em threads que variam de 50 a 400. Amazon RDS apenas 8.296 em média para a mesma contagem de encadeamentos, resultando em uma melhoria de 148% com ScaleGrid.


A latência do ScaleGrid e do Amazon RDS diminuiu significativamente nos testes de carga de trabalho balanceada em comparação com os testes de leitura intensiva abordados acima. O Amazon RDS teve uma latência média de 258 ms nos testes de carga de trabalho balanceada, onde o ScaleGrid teve uma média de apenas 125 ms, alcançando uma redução de mais de 52% na latência em relação ao MySQL no Amazon RDS.

Cenário-3:Carga de trabalho intensiva de gravação com 20% de leituras e 80% de gravações


Em nosso cenário final de carga de trabalho MySQL AWS com uso intensivo de gravação, o ScaleGrid alcançou um desempenho de taxa de transferência significativamente maior com uma média de 17.007 QPS no intervalo de 50 a 400 threads. Essa é uma melhoria de 123% em relação ao Amazon RDS, que alcançou apenas 7.638 QPS no mesmo número de threads.


Os testes de latência do percentil 95 também produziram latência significativamente menor para ScaleGrid em uma média de 114ms em 50 a 400 threads. O Amazon RDS alcançou uma média de 247 ms em seus testes de latência, resultando em uma redução média de 54% na latência ao implantar o MySQL de alto desempenho do ScaleGrid nos serviços da AWS no Amazon RDS.

Análise

Como observamos nos resultados do teste, as cargas de trabalho com uso intenso de leitura resultaram em maior taxa de transferência e latência em cargas de trabalho equilibradas e cargas de trabalho com uso intenso de gravação, independentemente de como O MySQL foi implantado na AWS:

MySQL on AWS Throughput Performance Test Averages> ScaleGrid Amazon RDS Melhoria do ScaleGrid
Taxa de transferência intensiva de leitura 27.795 9.411 195,4%
Balancear taxa de transferência de carga de trabalho 20.605 8.296 148,4%
Taxa de transferência intensiva de gravação 17.007 7.638 122,7%


Médias de teste de desempenho de latência do MySQL na AWS> ScaleGrid Amazon RDS Melhoria do ScaleGrid
Latência de leitura intensiva 206ms 439ms -53,0%
Latência de carga de trabalho balanceada 125ms 258ms -51,6%
Latência de gravação intensiva 114ms 247ms -53,8%

Explicação dos resultados

  • Vemos que a implantação do ScaleGrid MySQL na AWS forneceu uma taxa de transferência quase 3x melhor para a carga de trabalho de leitura intensiva em comparação com a implantação do RDS.
  • À medida que a carga de gravação aumentava, embora a taxa de transferência absoluta diminuísse, o ScaleGrid ainda oferecia um desempenho de taxa de transferência cerca de 2,5 vezes melhor.
  • Para cargas de trabalho com uso intenso de gravação, descobrimos que o atraso de replicação começou a ocorrer para o escravo do EBS na implantação do ScaleGrid. Como nosso objetivo era manter o atraso de replicação do escravo dentro de 30s para nossas execuções, introduzimos binlog_group_commit_sync_delay para garantir que o escravo pudesse obter uma melhor execução paralela. Isso controlou o atraso e resultou em uma taxa de transferência absoluta menor na implantação do ScaleGrid, mas ainda pudemos ver uma taxa de transferência 2,2 vezes melhor em comparação com a implantação do RDS.
  • Para todos os cenários de carga de trabalho balanceada, de leitura e de gravação intensiva, o ScaleGrid ofereceu características de latência 0,5X mais baixas em comparação com o RDS.

A implantação de 'Alto Desempenho' do ScaleGrid pode fornecer 2x-3x a taxa de transferência com metade da latência do RDS com a vantagem adicional de ter 2 réplicas de leitura em comparação com 1 em RDS. Para saber mais sobre as vantagens de hospedagem MySQL do ScaleGrid sobre o Amazon RDS for MySQL, confira nossa página Comparar provedores MySQL ou inicie uma avaliação gratuita de 30 dias para explorar a plataforma DBaaS totalmente gerenciada.