RDS for Aurora vs RDS for MySQL
Comparando dois tipos de serviços de
bancos de dados relacionais oferecidos
pela AWS.
Introdução
Nessa apresentação irei focar em apenas duas das engines
oferecidas pelo RDS (Mysql 5.6 e AWS Aurora). As duas
opções são bastante semelhantes e diferem principalmente
no quesito performance.
Segundo dados publicados pela AWS, a engine Aurora
(proprietária) pode chegar a ser 5 vezes mais rápida que a
engine MySQL (open-source) em alguns cenários.
RDS?
AWS Relational Database Service (RDS) é um serviço de
banco de dados relacionais totalmente gerenciável e que
oferece uma gama de opções de engines SQL (MySQL,
MSSQL, AWS Aurora e etc).
De acordo com a pagina oficial, RDS é um serviço web que
facilita a configuração, operação e crescimento de sistemas
gerenciadores de banco de dados em núvem.
Workload
Para poder comparar a performance de ambas as soluções
oferecidas pela AWS defini uma carga de trabalho que
deveria ser idêntica para os dois cenários.
As baterias não tinham como objetivo causar a exaustão dos
serviços.
Workload generator
AWS EC2
• Instance class: m3.xlarge
• AZ: us-east-1a (mesma região e zona que ambos os RDSs)
• 4 vCPU, 13 ECU e 15 GB memória RAM
Jmeter
• JDBC
• MySQL Driver
• Class name: com.mysql.jdbc.driver
Workload profile
2 queries SQL
• INSERT (número inteiro randômico em uma coluna de uma tabela)
• SELECT (em uma coluna de uma tabela, retorna um número inteiro)
100 Threads concorrentes
• Threads concorrentes é diferente de threads simultâneas
• 200 iterações por thread
• 2 queries por iteração
AWS RDS
AWS RDS
• Instance class: db.r3.large
• AZ: us-east-1a
• Single AZ (replicação desligada)
• 2 vCPU, 6.5 ECU e 15 GB memória RAM
• Performance de rede: moderada
• Storage: 20gb General Purpose SSD
• IOPS: desativado
Resultados
Ambas as cargas de trabalho geraram juntas uma população
de 80000 linhas ao final das 2 baterias.
Cada uma das baterias gerou uma amostragem de 40000
linhas (100 threads * 200 iterações * 2 queries) sendo que
cada linha corresponde a uma requisição (hit) feita ao serviço.
Dados analisados
3 números foram levados em consideração nessa apresentação.
• Response time over time
Gráfico de dispersão
Linhas de 90th e 95th percentile
• Hits Per Second
Histograma - intervalo de 1 s
• Response Time Distribution
Histograma - intervalo de 100 ms
Linhas de 90th e 95th percentile
Response time over time – RDS for Aurora
Response time over time – RDS for MySQL 5.6
Hits Per Second – RDS for Aurora
Hits Per Second – RDS for MySQL 5.6
Response Time Distribution – RDS for Aurora
Response Time Distribution – RDS for MySQL 5.6
Autores
Giovani Dardani
gdardani@mr2tech.com
Twitter: @gdardani
Roberto Gaiser
rgaiser@mr2tech.com
Twitter: @rgaiser

RDS: Aurora vs MySQL engines

  • 2.
    RDS for Auroravs RDS for MySQL Comparando dois tipos de serviços de bancos de dados relacionais oferecidos pela AWS.
  • 3.
    Introdução Nessa apresentação ireifocar em apenas duas das engines oferecidas pelo RDS (Mysql 5.6 e AWS Aurora). As duas opções são bastante semelhantes e diferem principalmente no quesito performance. Segundo dados publicados pela AWS, a engine Aurora (proprietária) pode chegar a ser 5 vezes mais rápida que a engine MySQL (open-source) em alguns cenários.
  • 4.
    RDS? AWS Relational DatabaseService (RDS) é um serviço de banco de dados relacionais totalmente gerenciável e que oferece uma gama de opções de engines SQL (MySQL, MSSQL, AWS Aurora e etc). De acordo com a pagina oficial, RDS é um serviço web que facilita a configuração, operação e crescimento de sistemas gerenciadores de banco de dados em núvem.
  • 5.
    Workload Para poder comparara performance de ambas as soluções oferecidas pela AWS defini uma carga de trabalho que deveria ser idêntica para os dois cenários. As baterias não tinham como objetivo causar a exaustão dos serviços.
  • 6.
    Workload generator AWS EC2 •Instance class: m3.xlarge • AZ: us-east-1a (mesma região e zona que ambos os RDSs) • 4 vCPU, 13 ECU e 15 GB memória RAM Jmeter • JDBC • MySQL Driver • Class name: com.mysql.jdbc.driver
  • 7.
    Workload profile 2 queriesSQL • INSERT (número inteiro randômico em uma coluna de uma tabela) • SELECT (em uma coluna de uma tabela, retorna um número inteiro) 100 Threads concorrentes • Threads concorrentes é diferente de threads simultâneas • 200 iterações por thread • 2 queries por iteração
  • 8.
    AWS RDS AWS RDS •Instance class: db.r3.large • AZ: us-east-1a • Single AZ (replicação desligada) • 2 vCPU, 6.5 ECU e 15 GB memória RAM • Performance de rede: moderada • Storage: 20gb General Purpose SSD • IOPS: desativado
  • 9.
    Resultados Ambas as cargasde trabalho geraram juntas uma população de 80000 linhas ao final das 2 baterias. Cada uma das baterias gerou uma amostragem de 40000 linhas (100 threads * 200 iterações * 2 queries) sendo que cada linha corresponde a uma requisição (hit) feita ao serviço.
  • 10.
    Dados analisados 3 númerosforam levados em consideração nessa apresentação. • Response time over time Gráfico de dispersão Linhas de 90th e 95th percentile • Hits Per Second Histograma - intervalo de 1 s • Response Time Distribution Histograma - intervalo de 100 ms Linhas de 90th e 95th percentile
  • 11.
    Response time overtime – RDS for Aurora
  • 12.
    Response time overtime – RDS for MySQL 5.6
  • 13.
    Hits Per Second– RDS for Aurora
  • 14.
    Hits Per Second– RDS for MySQL 5.6
  • 15.
    Response Time Distribution– RDS for Aurora
  • 16.
    Response Time Distribution– RDS for MySQL 5.6
  • 17.