
Otimize o Cloud SQL for MySQL: Ganhe até 3x mais performance
Otimizar instâncias MySQL para cargas de trabalho intensivas em escrita sempre foi um desafio. Pensando nisso, o Cloud SQL for MySQL na edição Enterprise Plus introduziu os optimized writes, um conjunto de recursos automatizados que ajustam a configuração do MySQL em tempo real, com base nas métricas da carga de trabalho e da infraestrutura. Essa inovação visa reduzir a latência de escrita e aumentar o throughput sem a necessidade de intervenção manual.
A funcionalidade optimized writes está habilitada por padrão em todas as instâncias da edição Enterprise Plus. Este artigo explora as otimizações subjacentes e apresenta um benchmark reproduzível para medir os ganhos de performance.
O Poder dos Otimized Writes no Cloud SQL for MySQL
Os optimized writes englobam cinco otimizações distintas que ajustam automaticamente parâmetros, flags e o manuseio de dados do MySQL. O objetivo é otimizar o desempenho de escrita de acordo com as necessidades específicas da instância e da carga de trabalho.
| Recurso | Funcionalidade |
|---|---|
| Adaptive purge | O Cloud SQL ajusta dinamicamente os `innodb_purge_threads` para priorizar as cargas de trabalho do usuário sobre as operações de manutenção de rotina do banco de dados. |
| Adaptive I/O limits | Ajusta dinamicamente parâmetros de I/O, como `innodb_io_capacity` e `innodb_io_capacity_max`. Isso responde diretamente às flutuações na demanda da carga de trabalho, prevenindo gargalos de I/O durante picos de tráfego. |
| Scalable sharded I/O | Implementa o sharding de I/O, distribuindo a carga por múltiplos mutexes para aumentar o throughput de I/O e suportar cargas de trabalho mais exigentes. |
| Faster REDO recovery | Otimiza o manuseio de dados temporários e o flushing acelerado de páginas sujas, reduzindo os tempos de recuperação e permitindo o uso de logs redo maiores. |
| Adaptive buffer pool warmup | Utiliza a capacidade de I/O de disco disponível para acelerar o aquecimento do cache de dados, agendando leituras de página. Isso resulta em um aquecimento mais rápido do cache após reinícios da instância e menor variação de performance. |
Com os optimized writes, o Cloud SQL for MySQL Enterprise Plus oferece **até 3x mais throughput de escrita** em comparação com a edição Enterprise, ao mesmo tempo que reduz significativamente a latência. Essas otimizações são especialmente benéficas para cargas de trabalho OLTP intensivas em escrita. Para cenários predominantemente de leitura, a edição Enterprise Plus também oferece um cache de dados em SSD, proporcionando **até 3x mais throughput de leitura**.
Testando o Aumento de Performance
Para verificar o impacto dos optimized writes em seu ambiente, você pode utilizar a ferramenta de benchmark sysbench. Siga os passos a seguir e ajuste os parâmetros de configuração das máquinas para realizar testes alinhados às suas cargas de trabalho típicas.
Passo 1: Criação de Instâncias de Banco de Dados
Para comparar a performance, crie três tipos de instâncias:
- Edição Enterprise (ee)
- Edição Enterprise Plus (ee+) sem optimized writes (para comparação)
- Edição Enterprise Plus (ee+) com optimized writes
O comando `gcloud` abaixo demonstra a criação dessas instâncias, com flags de banco de dados configuradas para otimização de performance.
# Configurações básicas para maior escalabilidade.
#------------------------------------------------------
# ee
gcloud sql instances create ee --database-version="MYSQL_8_0_37" --availability-type=zonal --edition=ENTERPRISE --cpu=64 --memory=416GB --storage-size=3000 --storage-type=SSD --zone="us-central1-c" --network=projects/${PROJECT}/global/networks/default --no-assign-ip --enable-google-private-path --no-enable-bin-log --database-flags="max_prepared_stmt_count=1000000,innodb_adaptive_hash_index=off,innodb_flush_neighbors=0,table_open_cache=200000"
#------------------------------------------------------
# ee+ sem optimized writes
# Nota: esta configuração é para fins de comparação e não é recomendada.
# O tamanho maior do log redo causaria tempo de recuperação maior, por isso retorna ao tamanho original (antes da introdução do optimized write).
gcloud sql instances create eeplusow0 --database-version="MYSQL_8_0_37" --availability-type=zonal --edition=ENTERPRISE_PLUS --tier=db-perf-optimized-N-64 --storage-size=3000 --storage-type=SSD --zone="us-central1-c" --network=projects/${PROJECT}/global/networks/default --no-assign-ip --enable-google-private-path --no-enable-bin-log --database-flags="max_prepared_stmt_count=1000000,innodb_adaptive_hash_index=off,innodb_flush_neighbors=0,table_open_cache=200000,innodb_cloudsql_optimized_write=off,innodb_log_file_size=1073741824"
#------------------------------------------------------
# ee+ com optimized writes
gcloud sql instances create eeplusow1 --database-version="MYSQL_8_0_37" --availability-type=zonal --edition=ENTERPRISE_PLUS --tier=db-perf-optimized-N-64 --storage-size=3000 --storage-type=SSD --zone="us-central1-c" --network=projects/${PROJECT}/global/networks/default --no-assign-ip --enable-google-private-path --no-enable-bin-log --database-flags="max_prepared_stmt_count=1000000,innodb_adaptive_hash_index=off,innodb_flush_neighbors=0,table_open_cache=200000"
A seguir, detalharemos os próximos passos para executar o benchmark e analisar os resultados, demonstrando o potencial dos optimized writes do Cloud SQL for MySQL Enterprise Plus.
Deixe um comentário