Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Modify WRITESET-related parameters

Última atualização: Sep 24, 2026

Na replicação primária-secundária, o mecanismo padrão COMMIT_ORDER determina a reaplicação paralela com base na possibilidade de efetuar commit em paralelo das transações na instância RDS primária. Isso limita o paralelismo de reaplicação à concorrência da instância primária. O WRITESET remove essa limitação ao detectar conflitos de transação no nível da linha, o que reduz o atraso de replicação entre as instâncias RDS primária e secundária.

Como o WRITESET funciona

Quando o COMMIT_ORDER está em uso, duas transações só podem ser reaplicadas em paralelo se for possível efetuar o commit delas em paralelo na instância RDS primária.

O WRITESET verifica se as linhas de dados modificadas por cada transação entram em conflito com as linhas modificadas por outras transações. Se não houver conflitos, as transações serão reaplicadas em paralelo na instância RDS secundária, independentemente de como o commit foi efetuado na instância RDS primária.

Versões compatíveis

É necessário que a instância RDS execute uma das seguintes versões do MySQL:

Versão do MySQL

Versão secundária mínima do mecanismo

MySQL 5.7

20211231

MySQL 8.0

20210930

Ative o WRITESET

Para obter instruções, consulte Modifique os parâmetros da instância e defina os três parâmetros a seguir.

transaction_write_set_extraction = XXHASH64
binlog_transaction_dependency_tracking = WRITESET
binlog_transaction_dependency_history_size = 500000
Nota

O parâmetro binlog_transaction_dependency_history_size define o número máximo de linhas de dados armazenadas na memória para detecção de conflitos. Um valor maior rastreia mais linhas de dados e melhora o paralelismo.

Dependências de parâmetros

Aviso

Os parâmetros binlog_transaction_dependency_tracking e transaction_write_set_extraction afetam-se mutuamente. Use as combinações válidas listadas abaixo. Combinações inválidas são bloqueadas.

binlog_transaction_dependency_tracking

transaction_write_set_extraction

COMMIT_ORDER

OFF ou XXHASH64

WRITESET ou WRITESET_SESSION

XXHASH64

Referência de parâmetros

binlog_transaction_dependency_tracking

Determina como as transações registradas nos logs binários são reaplicadas em paralelo na instância RDS secundária.

A reaplicação paralela multithread exige que replica_parallel_workers ou slave_parallel_workers seja maior que 0.

Atributo

Valor

Padrão

WRITESET

Valores válidos

COMMIT_ORDER, WRITESET, WRITESET_SESSION

Versões compatíveis

MySQL 5.7 (versão secundária do mecanismo 20211231 e posterior), MySQL 8.0 (versão secundária do mecanismo 20210930 e posterior)

Valor

Descrição

COMMIT_ORDER

Determina as dependências com base na ordem de commit. Duas transações podem ser reaplicadas em paralelo na instância RDS secundária se for possível efetuar o commit delas em paralelo na instância RDS primária. Esse modo é afetado pelas configurações de paralelismo na instância RDS primária.

WRITESET

Determina as dependências no nível da linha. Duas transações são reaplicadas em paralelo se não modificarem a mesma linha de dados de uma tabela com chave primária ou chave única. Esse modo não é afetado pelas configurações de paralelismo na instância RDS primária.

WRITESET_SESSION

As transações dentro da mesma sessão são reaplicadas sequencialmente. As transações de sessões diferentes seguem as mesmas regras do WRITESET.

transaction_write_set_extraction

Especifica o algoritmo de hash usado para calcular o valor de hash de uma linha de dados. O valor de hash determina se transações diferentes modificam a mesma linha de dados.

Atributo

Valor

Padrão

XXHASH64

Valores válidos

OFF, XXHASH64

Versões compatíveis

MySQL 5.7 (versão secundária do mecanismo 20211231 e posterior), MySQL 8.0 (versão secundária do mecanismo 20210930 e posterior)

Valor

Descrição

OFF

Não calcula o valor de hash das linhas de dados. O WRITESET deve ser desativado quando esse valor for definido.

XXHASH64

Calcula o valor de hash das linhas de dados usando um algoritmo de hash de 64 bits.

binlog_transaction_dependency_history_size

Especifica o número máximo de linhas de dados armazenadas na memória para detecção de conflitos.

Atributo

Valor

Valor recomendado

500000

Efeito

Um valor maior rastreia mais linhas de dados e permite maior paralelismo.

Quando o WRITESET se torna inválido

Em determinados cenários, o WRITESET reverte para o COMMIT_ORDER para detecção de conflitos de transação. Essa reversão não degrada o desempenho da reaplicação paralela na instância RDS secundária.

O WRITESET se torna inválido quando:

  • Execução de operações DDL

  • Commit de transações grandes

  • Modificação de tabelas com chaves estrangeiras

  • Existência de tabelas sem chave primária

Se houver atraso de replicação entre as instâncias RDS secundária e somente leitura, ative o WRITESET para reduzi-lo.

Referências