Ative o WRITESET para detectar conflitos de transação no nível de linha. Esse recurso melhora a reprodução paralela em instâncias RDS secundárias e reduz o atraso de replicação.
Como o WRITESET funciona
No modo padrão COMMIT_ORDER, o paralelismo de commit da instância primária limita a reprodução paralela na instância secundária.
O WRITESET detecta conflitos no nível de linha. Transações que modificam linhas diferentes são reproduzidas em paralelo na instância secundária, independentemente da ordem de commit na instância primária.
Versões compatíveis
A instância RDS deve executar uma das seguintes versões do MySQL:
|
Versão do MySQL |
Versão mínima do mecanismo secundário |
|
MySQL 5.7 |
20211231 |
|
MySQL 8.0 |
20210930 |
Ative o WRITESET
Defina estes três parâmetros por meio de Modifique parâmetros da instância.
transaction_write_set_extraction = XXHASH64
binlog_transaction_dependency_tracking = WRITESET
binlog_transaction_dependency_history_size = 500000
O parâmetro binlog_transaction_dependency_history_size controla quantas linhas são rastreadas na memória para detecção de conflitos. Valores mais altos melhoram o paralelismo.
Dependências entre parâmetros
Os parâmetros binlog_transaction_dependency_tracking e transaction_write_set_extraction são interdependentes. Apenas as combinações abaixo são válidas.
|
binlog_transaction_dependency_tracking |
transaction_write_set_extraction |
|
|
|
|
|
|
Referência de parâmetros
binlog_transaction_dependency_tracking
Controla como as transações do log binário são reproduzidas em paralelo na instância secundária.
A reprodução paralela multithread exige que replica_parallel_workers ou slave_parallel_workers seja maior que 0.
|
Atributo |
Valor |
|
Padrão |
|
|
Valores válidos |
|
|
Versões compatíveis |
MySQL 5.7 (versão do mecanismo secundário 20211231 e posterior), MySQL 8.0 (versão do mecanismo secundário 20210930 e posterior) |
|
Valor |
Descrição |
|
|
Utiliza a ordem de commit para determinar dependências. Duas transações são reproduzidas em paralelo na instância secundária apenas se forem confirmadas em paralelo na instância primária. A concorrência da instância primária limita o paralelismo. |
|
|
Detecta conflitos no nível de linha. Transações que modificam linhas diferentes em tabelas com chave primária ou única são reproduzidas em paralelo, independentemente da concorrência da instância primária. |
|
|
Transações dentro da mesma sessão são reproduzidas serialmente. Transações de sessões diferentes seguem as mesmas regras do modo |
transaction_write_set_extraction
Especifica o algoritmo de hash usado para calcular valores de hash no nível de linha na detecção de conflitos.
|
Atributo |
Valor |
|
Padrão |
|
|
Valores válidos |
|
|
Versões compatíveis |
MySQL 5.7 (versão do mecanismo secundário 20211231 e posterior), MySQL 8.0 (versão do mecanismo secundário 20210930 e posterior) |
|
Valor |
Descrição |
|
|
Desativa o cálculo de hash de linha. O modo |
|
|
Emprega um algoritmo de hash de 64 bits para calcular os valores de hash das linhas. |
binlog_transaction_dependency_history_size
Define o número máximo de linhas de dados armazenadas na memória para detecção de conflitos.
|
Atributo |
Valor |
|
Valor recomendado |
|
|
Efeito |
Um valor maior rastreia mais linhas de dados e permite maior paralelismo. |
Quando o WRITESET se torna inválido
Em certos cenários, o WRITESET reverte para COMMIT_ORDER. Isso não degrada o desempenho da reprodução paralela.
O WRITESET torna-se inválido quando:
Operações DDL são executadas
Transações grandes são confirmadas
Tabelas com chaves estrangeiras são modificadas
Existem tabelas sem chaves primárias
Ative o WRITESET para reduzir o atraso de replicação em instâncias secundárias e somente leitura.
Referências
Usar o recurso de diagnóstico de parâmetros para obter recomendações de otimização.
-
Documentação oficial do MySQL: