Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Modify WRITESET-related parameters

Dernière mise à jour :Sep 24, 2026

Dans le cadre de la réplication primaire-secondaire, le mécanisme par défaut COMMIT_ORDER détermine la relecture parallèle en fonction de la possibilité d'exécuter des validations (commit) parallèles sur l'instance RDS principale. Cette approche limite le parallélisme de relecture à la concurrence de l'instance principale. WRITESET supprime cette limitation en détectant les conflits de transactions au niveau des lignes, ce qui réduit le délai de réplication entre les instances RDS principales et secondaires.

Fonctionnement de WRITESET

Lorsque COMMIT_ORDER est utilisé, deux transactions ne peuvent être relues en parallèle que si elles peuvent être validées simultanément sur l'instance RDS principale.

WRITESET vérifie si les lignes de données modifiées par chaque transaction entrent en conflit avec celles modifiées par d'autres transactions. En l'absence de conflits, les transactions sont relues en parallèle sur l'instance RDS secondaire, indépendamment de leur mode de validation sur l'instance RDS principale.

Versions prises en charge

L'instance RDS doit exécuter l'une des versions MySQL suivantes :

Version MySQL

Version mineure minimale du moteur

MySQL 5.7

20211231

MySQL 8.0

20210930

Activez WRITESET

Définissez les trois paramètres suivants. Pour obtenir des instructions, consultez la rubrique Modifier les paramètres de l'instance.

transaction_write_set_extraction = XXHASH64
binlog_transaction_dependency_tracking = WRITESET
binlog_transaction_dependency_history_size = 500000
Remarque

Le paramètre binlog_transaction_dependency_history_size définit le nombre maximal de lignes de données stockées en mémoire pour la détection des conflits. Une valeur plus élevée permet de suivre davantage de lignes de données et améliore le parallélisme.

Dépendances des paramètres

Avertissement

Les paramètres binlog_transaction_dependency_tracking et transaction_write_set_extraction s'influencent mutuellement. Utilisez uniquement les combinaisons valides répertoriées ci-dessous. Les combinaisons invalides sont bloquées.

binlog_transaction_dependency_tracking

transaction_write_set_extraction

COMMIT_ORDER

OFF ou XXHASH64

WRITESET ou WRITESET_SESSION

XXHASH64

Référence des paramètres

binlog_transaction_dependency_tracking

Détermine la manière dont les transactions enregistrées dans les journaux binaires sont relues en parallèle sur l'instance RDS secondaire.

La relecture parallèle multithread nécessite que les paramètres replica_parallel_workers ou slave_parallel_workers soient supérieurs à 0.

Attribut

Valeur

Par défaut

WRITESET

Valeurs valides

COMMIT_ORDER, WRITESET, WRITESET_SESSION

Versions prises en charge

MySQL 5.7 (version mineure du moteur 20211231 et ultérieure), MySQL 8.0 (version mineure du moteur 20210930 et ultérieure)

Valeur

Description

COMMIT_ORDER

Détermine les dépendances en fonction de l'ordre de validation. Deux transactions peuvent être relues en parallèle sur l'instance RDS secondaire si elles peuvent être validées simultanément sur l'instance RDS principale. Ce mode est influencé par les paramètres de parallélisme de l'instance RDS principale.

WRITESET

Détermine les dépendances au niveau des lignes. Deux transactions sont relues en parallèle si elles ne modifient pas la même ligne de données d'une table disposant d'une clé primaire ou unique. Ce mode n'est pas affecté par les paramètres de parallélisme de l'instance RDS principale.

WRITESET_SESSION

Les transactions au sein d'une même session sont relues de manière séquentielle. Les transactions provenant de sessions différentes suivent les mêmes règles que WRITESET.

transaction_write_set_extraction

Spécifie l'algorithme de hachage utilisé pour calculer la valeur de hachage d'une ligne de données. La valeur de hachage permet de déterminer si différentes transactions modifient la même ligne de données.

Attribut

Valeur

Par défaut

XXHASH64

Valeurs valides

OFF, XXHASH64

Versions prises en charge

MySQL 5.7 (version mineure du moteur 20211231 et ultérieure), MySQL 8.0 (version mineure du moteur 20210930 et ultérieure)

Valeur

Description

OFF

Ne calcule pas la valeur de hachage des lignes de données. Le paramètre WRITESET doit être désactivé lorsque cette valeur est définie.

XXHASH64

Calcule la valeur de hachage des lignes de données à l'aide d'un algorithme de hachage 64 bits.

binlog_transaction_dependency_history_size

Spécifie le nombre maximal de lignes de données stockées en mémoire pour la détection des conflits.

Attribut

Valeur

Valeur recommandée

500000

Effet

Une valeur plus élevée permet de suivre davantage de lignes de données et autorise un parallélisme accru.

Cas d'invalidité de WRITESET

Dans certains scénarios, WRITESET revient au mode COMMIT_ORDER pour la détection des conflits de transactions. Ce basculement ne dégrade pas les performances de relecture parallèle sur l'instance RDS secondaire.

WRITESET devient invalide dans les situations suivantes :

  • Exécution d'opérations DDL

  • Validation de transactions volumineuses

  • Modification de tables comportant des clés étrangères

  • Présence de tables sans clé primaire

Si vous constatez un délai de réplication entre vos instances RDS secondaires et en lecture seule, activez WRITESET pour le réduire.

Références