sql >> Base de Datos >  >> RDS >> Mysql

Cómo mejorar el rendimiento de MySQL AWS 2X sobre Amazon RDS al mismo costo

AWS es el proveedor de nube n.º 1 para el alojamiento de bases de datos de código abierto y la nube de referencia para las implementaciones de MySQL. A medida que las organizaciones continúan migrando a la nube, es importante estar al frente de los problemas de rendimiento, como la alta latencia, el bajo rendimiento y el retraso en la replicación con mayores distancias entre sus usuarios y la infraestructura de la nube. Si bien muchos usuarios de AWS utilizan de forma predeterminada su solución de base de datos administrada, Amazon RDS, existen alternativas disponibles que pueden mejorar su rendimiento de MySQL en AWS a través de opciones de personalización avanzadas y compatibilidad ilimitada con el tipo de instancia EC2. ScaleGrid ofrece una alternativa convincente al alojamiento de MySQL en AWS que ofrece un mejor rendimiento, más control y no depende del proveedor de la nube y tiene el mismo precio que Amazon RDS. En esta publicación, comparamos el rendimiento de MySQL Amazon RDS con MySQL Hosting en ScaleGrid en instancias de alto rendimiento de AWS.

TLDR

La implementación de alto rendimiento de MySQL en AWS de ScaleGrid puede proporcionar entre 2 y 3 veces el rendimiento a la mitad de la latencia de Amazon RDS para MySQL con la ventaja adicional de tener 2 réplicas de lectura en comparación con 1 en RDS.

MySQL en la prueba de rendimiento de AWS

Cuadrícula de escala Amazon RDS
Tipo de instancia AWS High Performance XLarge (consulte los detalles del sistema a continuación) Instancia de base de datos r4.xlarge (Multi-AZ)
Tipo de implementación Conjunto maestro-esclavo de 3 nodos con replicación semisincrónica Implementación Multi-AZ con 1 réplica de lectura
Disco SSD SSD local y uso general:2 TB Propósito general:2 TB
Coste mensual (USD) $1,798 $1,789

Amazon RDS Costos Precio Cantidad Total Notas
Multi-AZ
Instancia de base de datos (hr) $0.48 730 $350,40 db.r4.xlarge
Instancia de base de datos (hr) $0.48 730 $350,40 db.r4.xlarge
Almacenamiento (GB) $0.115 2000 $230.00 Propósito general:2TB (Single-AZ)
Leer réplica
Instancia de base de datos (hr) $0.48 730 $350,40 db.r4.xlarge (Single-AZ)
Almacenamiento (GB) $0.115 2000 $230.00 Propósito general:2TB (Single-AZ)
Otros costos
Almacenamiento de copia de seguridad (GB) $0.095 1000 $95,00 Libere hasta el 100 % del almacenamiento de la base de datos
Transferencia de datos (a Internet) $0.09 0 $0.00 Gratis hasta 1GB/mes
Transferencia de datos (a regiones) $0.01 2000 $20.00 Este de EE. UU. (Norte de Virginia)
Soporte $162.62 1 $162.62 10 % del costo mensual
Total $1,788.82

Como puede ver en la tabla anterior, el precio de MySQL RDS está dentro de los $10 USD de la solución de hospedaje MySQL completamente administrada y con todo incluido de ScaleGrid.

¿Qué son los conjuntos de réplicas de alto rendimiento de ScaleGrid?

El conjunto de réplicas ScaleGrid MySQL en AWS de alto rendimiento utiliza un híbrido de SSD local y disco EBS para lograr un alto rendimiento y una alta confiabilidad. Una configuración típica se implementa mediante un conjunto de réplicas de 3 nodos:

  • El maestro y el esclavo-1 usan discos SSD locales.
  • Slave-2 usa un disco EBS (puede ser de uso general o un disco IOPS provisionado).

¿Qué significa esto? Dado que Master y Slave-1 se ejecutan en SSD local, obtiene el mejor rendimiento de disco posible de sus máquinas de AWS. No más EBS basado en red, solo SSD local increíblemente rápido. Lee y escribe en su principal, e incluso las lecturas de Slave-1 funcionarán a la velocidad de SSD. Slave-2 usa un disco de datos EBS y puede configurar la cantidad de IOPS requerida para su clúster. Esta configuración brinda total seguridad para sus datos, incluso en caso de que pierda los discos SSD locales.

El conjunto de réplicas XLarge de alto rendimiento MySQL AWS de ScaleGrid utiliza instancias i3.xlarge (30,5 GB de RAM) con SSD local para Master y Slave-1, y un i3.2xlarge (61 GB RAM) instancia para Slave-2.

Configuración MySQL

Se utiliza una configuración de MySQL similar en las implementaciones de ScaleGrid y RDS:

Configuración Valor
versión 5.7.25 edición comunitaria
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
trabajadores_paralelos_esclavos 30
slave_parallel_type RELOJ_LOGICO

Configuración comparativa de rendimiento de MySQL

Configuración Detalles
Herramienta Sysbench versión 1.0.17
Host 1 r4.xlarge ubicado en el mismo centro de datos de AWS que el MySQL maestro
# Tablas 100
# filas por tabla 5,000,000
Script de generación de carga de trabajo oltp_read_write.lua

Escenarios y resultados de pruebas de rendimiento de MySQL

Para asegurarnos de proporcionar resultados informativos para todos los tipos de cargas de trabajo de MySQL AWS, hemos dividido nuestras pruebas en estos tres escenarios para que pueda evaluar en función de la intensidad de su carga de trabajo de lectura/escritura:

  1. Carga de trabajo de lectura intensiva: 80 % de lectura y 20 % de escritura
  2. Carga de trabajo equilibrada: 50 % de lecturas y 50 % de escrituras
  3. Carga de trabajo de escritura intensiva: 20 % de lectura y 80 % de escritura

Cada escenario se ejecuta con un número variable de subprocesos de cliente de sysbench que van de 50 a 400, y cada prueba se ejecuta durante 10 minutos. Medimos el rendimiento en términos de consultas por segundo (QPS) y la latencia del percentil 95, y nos aseguramos de que el retraso máximo de replicación en los esclavos no supere los 30 s. Para algunas de las pruebas en la implementación de ScaleGrid, la configuración de MySQL binlog_group_commit_sync_delay se ajusta para que el retraso de la replicación del esclavo no supere los 30 s. Esta técnica se conoce como "ralentizar al maestro para acelerar a los esclavos" y se explica en el blog de J-F Gagne.

Cómo mejorar el rendimiento de #MySQL AWS 2X sobre Amazon RDS al mismo costoHaga clic para twittear

Escenario 1:carga de trabajo de lectura intensiva con un 80 % de lecturas y un 20 % de escrituras

Como podemos ver en las pruebas de carga de trabajo de lectura intensiva, las instancias de MySQL de alto rendimiento de ScaleGrid en AWS pueden manejar alrededor de 27 800 QPS de forma constante, desde 50 hasta 400 hilos. Este es un aumento de casi el 200 % con respecto al rendimiento de MySQL RDS, que promedia solo 9411 QPS en el mismo rango de subprocesos.

ScaleGrid también mantiene una latencia un 53 % más baja en promedio durante todas las pruebas de rendimiento de MySQL AWS. Tanto la latencia de Amazon RDS como la de ScaleGrid aumentan constantemente a medida que crece la cantidad de subprocesos, donde ScaleGrid alcanza un máximo de 383 ms para 400 subprocesos, mientras que Amazon RDS está en 831 ms en el mismo nivel.

Escenario 2:carga de trabajo equilibrada con un 50 % de lecturas y un 50 % de escrituras

En nuestras pruebas de rendimiento de cargas de trabajo equilibradas, la implementación de alto rendimiento de MySQL de ScaleGrid en AWS vuelve a tener un rendimiento superior con un promedio de 20 605 QPS en subprocesos que van de 50 a 400. Amazon RDS solo promedió 8296 para el mismo número de subprocesos, lo que resultó en una mejora del 148 % con ScaleGrid.

La latencia de ScaleGrid y Amazon RDS disminuyó significativamente en las pruebas de carga de trabajo equilibrada en comparación con las pruebas de lectura intensiva cubiertas anteriormente. Amazon RDS promedió 258 ms de latencia en las pruebas de carga de trabajo balanceada, donde ScaleGrid solo promedió 125 ms logrando una reducción de más del 52 % en la latencia sobre MySQL en Amazon RDS.

Escenario 3:carga de trabajo de escritura intensiva con un 20 % de lecturas y un 80 % de escrituras

En nuestro escenario final de carga de trabajo MySQL AWS de escritura intensiva, ScaleGrid logró un rendimiento significativamente mayor con un promedio de 17 007 QPS en el rango de 50 a 400 subprocesos. Esta es una mejora del 123 % con respecto a Amazon RDS, que solo logró 7638 QPS en la misma cantidad de subprocesos.

Las pruebas de latencia del percentil 95 también produjeron una latencia significativamente más baja para ScaleGrid con un promedio de 114 ms en 50 a 400 subprocesos. Amazon RDS logró un promedio de 247 ms en sus pruebas de latencia, lo que resultó en una reducción promedio del 54 % en la latencia al implementar MySQL de alto rendimiento de ScaleGrid en los servicios de AWS en Amazon RDS.

Análisis

Como observamos en los resultados de las pruebas, las cargas de trabajo de lectura intensiva dieron como resultado un rendimiento y una latencia más altos que las cargas de trabajo equilibradas y las cargas de trabajo de escritura intensiva, independientemente de cómo MySQL se implementó en AWS:

Promedios de prueba de rendimiento de rendimiento de MySQL en AWS ScaleGrid Amazon RDS Mejora de ScaleGrid
Rendimiento intensivo de lectura 27,795 9411 195,4 %
Equilibrar el rendimiento de la carga de trabajo 20,605 8,296 148,4 %
Rendimiento intensivo de escritura 17,007 7638 122,7 %

Promedios de prueba de rendimiento de latencia de MySQL en AWS ScaleGrid Amazon RDS Mejora de ScaleGrid
Latencia de lectura intensiva 206ms 439ms -53,0 %
Latencia de carga de trabajo equilibrada 125ms 258ms -51,6 %
Latencia de escritura intensiva 114ms 247ms -53,8 %

Explicación de los resultados

  • Vemos que ScaleGrid MySQL en la implementación de AWS proporcionó un rendimiento cerca de 3 veces mejor para la carga de trabajo de lectura intensiva en comparación con la implementación de RDS.
  • A medida que aumentaba la carga de escritura, aunque el rendimiento absoluto disminuía, ScaleGrid aún proporcionaba un rendimiento de rendimiento casi 2,5 veces mayor.
  • Para las cargas de trabajo de escritura intensiva, descubrimos que el retraso en la replicación comenzó a afectar al esclavo de EBS en la implementación de ScaleGrid. Dado que nuestro objetivo era mantener el retraso de replicación del esclavo dentro de los 30 segundos para nuestras ejecuciones, presentamos binlog_group_commit_sync_delay para garantizar que el esclavo pudiera lograr una mejor ejecución en paralelo. Esto controló el retraso y dio como resultado un rendimiento absoluto menor en la implementación de ScaleGrid, pero aún pudimos ver un rendimiento 2,2 veces mejor en comparación con la implementación de RDS.
  • Para todos los escenarios de cargas de trabajo equilibradas, de lectura y escritura intensivas, ScaleGrid ofreció características de latencia 0,5 veces más bajas en comparación con RDS.

La implementación de 'alto rendimiento' de ScaleGrid puede proporcionar 2x-3x el rendimiento a la mitad de la latencia de RDS con la ventaja adicional de tener 2 réplicas de lectura en comparación con 1 en RDS. Para obtener más información sobre las ventajas de alojamiento de MySQL de ScaleGrid sobre Amazon RDS para MySQL, consulte nuestra página Comparar proveedores de MySQL o inicie una prueba gratuita de 30 días para explorar la plataforma DBaaS completamente administrada.