Otimize o Cloud SQL for MySQL: Ganhe até 3x mais performance

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:

  1. Edição Enterprise (ee)
  2. Edição Enterprise Plus (ee+) sem optimized writes (para comparação)
  3. 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.

Fundamentos de Engenharia de Dados: Projete e Construa Sistemas de Dados Robustos
Recomendado pelo autor

Fundamentos de Engenharia de Dados: Projete e Construa Sistemas de Dados Robustos
* Link de afiliado — o preço pode variar. Ao comprar, você apoia este blog sem custo extra.

SQL Para Análise de Dados: Técnicas Avançadas Para Transformar Dados em Insights
Recomendado pelo autor

SQL Para Análise de Dados: Técnicas Avançadas Para Transformar Dados em Insights
* Link de afiliado — o preço pode variar. Ao comprar, você apoia este blog sem custo extra.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *