Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Binlog parallel flush

Última atualização: Jun 26, 2026

Para melhorar o desempenho, o AliSQL inclui a otimização Binlog Parallel Flush para a fase de commit do log binário. Ativar essa otimização pode melhorar significativamente o desempenho de gravação da sua instância.

Pré-requisitos

  • A instância executa uma das seguintes versões do banco de dados:

    • MySQL 8.4

    • MySQL 8.0 com versão secundária do mecanismo 20230930 ou posterior.

      Nota

      Na página Basic Information, procure o botão Upgrade Minor Engine Version na seção Configuration Information. Se esse botão estiver visível, clique em e visualize a versão atual. Caso contrário, sua instância já está na versão mais recente. Para mais informações, consulte Upgrade Minor Engine Version.

  • Não defina o parâmetro sync_binlog da instância como 1.

Contexto

13ca93f432f146db197ded0b18b3023042978ae3ee7812bef3267aa4ca532dedQzpcVXNlcnNccWl5aW5ndGFuXEFwcERhdGFcUm9hbWluZ1xpRGluZ1RhbGtcNDI5ODE1NTU5N192MlxJbWFnZUZpbGVzXDE3MTEwMTA5NTg1MTRfMjVEODNBODItRjNCMi00OGYxLUE1RDMtNzkzNkU5REIxNjQ5LnBuZw==.png

No MySQL, cada transação deve gravar no log binário durante a fase de commit. Esse é um processo serial: uma transação só pode gravar no log binário após a conclusão da transação anterior, conforme mostrado na figura anterior.

Esse processo também consome muito tempo. Antes de gravar no log binário, todos os eventos armazenados no cache do log binário devem ser analisados, as somas de verificação (checksums) e as posições do log devem ser preenchidas, e um evento GTID deve ser gerado. Somente então esses eventos podem ser gravados no arquivo de log binário. Esse processo serial e demorado cria um gargalo significativo para o desempenho de gravação da instância. Para resolver esse gargalo, o AliSQL inclui a otimização Binlog Parallel Flush.

Detalhes da otimização

Buffer do log binário

7d62745838385a745eefff4a18d6f6ae712c7f429c11d5456c9288e66c0685d9QzpcVXNlcnNccWl5aW5ndGFuXEFwcERhdGFcUm9hbWluZ1xpRGluZ1RhbGtcNDI5ODE1NTU5N192MlxJbWFnZUZpbGVzXDE3MTEwMTEwNTY5ODBfRkE0RTZEOEYtMTg0NC00NzFiLTg0RTYtRjIxQTYyNjk4OEQwLnBuZw==.png

O AliSQL aprimora a lógica padrão ao introduzir um buffer de log binário. Após a alocação das posições, várias threads podem gravar eventos do log binário no buffer do log binário em paralelo. Em seguida, uma thread de backend grava o conteúdo do buffer do log binário no arquivo de log binário. Esse design permite que etapas anteriormente seriais — como análise, preenchimento de valores de checksum e posição do log, e geração de eventos GTID — sejam executadas em paralelo. Isso alivia significativamente o gargalo de desempenho ao gravar logs binários durante os commits de transações.

Commit de grupo paralelo

No MySQL, as transações gravam no log binário e no redo log em grupos durante a fase de commit. Essa técnica, conhecida como group commit, mescla operações de E/S para melhorar o desempenho. Essa otimização mantém o conceito de group commit e o integra ao recurso Binlog Parallel Flush, conforme ilustrado na figura a seguir.

49080702daa3a9709047732fbb09ebe2c40954015a22dc572926f5f706cdec34QzpcVXNlcnNccWl5aW5ndGFuXEFwcERhdGFcUm9hbWluZ1xpRGluZ1RhbGtcNDI5ODE1NTU5N192MlxJbWFnZUZpbGVzXDE3MTEwMTEzMzE1ODZfRUVEQUNGMkEtMTE4RS00YmU4LUE0RDItQjZGRDg2NjEzMDE0LnBuZw==.png

Com a otimização Binlog Parallel Flush, cada transação aloca serialmente um GTID e espaço no buffer do log binário. Posteriormente, vários grupos podem gravar no buffer do log binário em paralelo. Após a persistência do redo log e a conclusão da gravação no log binário pela thread de backend, o sistema faz o commit de todo o grupo de transações.

Persistência do log binário

f8acb0a238e8f535995bc410175c5b167240ab1ee31b97091d438c41812720b7QzpcVXNlcnNccWl5aW5ndGFuXEFwcERhdGFcUm9hbWluZ1xpRGluZ1RhbGtcNDI5ODE1NTU5N192MlxJbWFnZUZpbGVzXDE3MTEwMTExMTgzOTBfOUMxQTkzNjktRTczNi00ZjIwLUFGNzktRUFCNERBOENBNDcwLnBuZw==.png Com a otimização Binlog Parallel Flush, uma thread de backend persiste periodicamente o arquivo de log binário. Por padrão, isso ocorre uma vez por segundo.

Parâmetros

loose_binlog_parallel_flush

Essa variável global do sistema ativa ou desativa o recurso Binlog Parallel Flush. Valores válidos: on ou off. As alterações nesse parâmetro entram em vigor imediatamente, sem a necessidade de reiniciar a instância.

Impacto no desempenho

Ambiente de teste

O teste comparou o desempenho em quatro especificações diferentes de instâncias do ApsaraDB RDS for MySQL, conforme detalhado na tabela a seguir.

Produto

Versão

vCPU e memória

Tipo de armazenamento

Tamanho do armazenamento

ApsaraDB RDS for MySQL

8.0 (versão secundária do mecanismo 20230930)

16 vCPUs 32 GB

ESSD PL1

1000 GB

16 vCPUs 32 GB

SSD

1000 GB

64 vCPUs 128 GB

ESSD PL1

1000 GB

64 vCPUs 128 GB

SSD

1000 GB

Configurações de parâmetros

A instância de teste usa um modelo de parâmetros de alto desempenho; defina dois parâmetros relacionados ao desempenho como sync_binlog = 1000 e innodB_flush_log_at_trx_commit = 2.

Script de teste

O teste de desempenho usou o script oltp_update_non_index do SysBench. O conjunto de dados de teste consistiu em 100 tabelas, cada uma com 100.000 linhas.

Resultados do teste

Os resultados do teste são mostrados na figura a seguir. Em cargas de trabalho de alta concorrência, o recurso Binlog Parallel Flush oferece uma melhoria significativa de desempenho em comparação com a implementação padrão do MySQL. O ganho de desempenho de pico fica entre 10% e 30%.

5387087b82ed9e5a496a96425aee3abbe3cd103f9e53f63b92eae933526933a3QzpcVXNlcnNccWl5aW5ndGFuXEFwcERhdGFcUm9hbWluZ1xpRGluZ1RhbGtcNDI5ODE1NTU5N192MlxJbWFnZUZpbGVzXDE3MTA0ODMyODY1NTlfOTdCMkI0NTktNTYzMi00ZmU2LUJEMTMtOEQwMjg5QTYwQTVCLnBuZw==.png