Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Use transaction splitting

Dernière mise à jour :Aug 19, 2026

Lorsque la validation automatique est désactivée (par exemple, via SET autocommit=0), le proxy de base de données achemine toutes les requêtes, y compris les lectures, vers l'instance principale, ce qui concentre la charge sur celle-ci. Le fractionnement des transactions décharge automatiquement les requêtes de lecture effectuées avant la première écriture d'une transaction vers les instances en lecture seule, sans nécessiter de modifications du code de l'application ou de la configuration.

Prérequis

Avant de commencer, assurez-vous d'avoir :

Fonctionnement

Par défaut, le proxy de base de données envoie toutes les requêtes d'une transaction à l'instance principale afin de préserver l'exactitude des données. Lorsque la validation automatique est désactivée, chaque requête s'exécute au sein d'une transaction implicite, ce qui concentre toute la charge sur l'instance principale.

image.png

Le fractionnement des transactions modifie ce comportement : le proxy démarre une transaction sur l'instance principale uniquement lorsqu'une opération d'écriture se produit. Toutes les requêtes de lecture précédant la première écriture sont acheminées vers les instances en lecture seule via un équilibreur de charge. Si le niveau d'isolation par défaut READ COMMITTED est utilisé et que le mode de validation automatique des transactions est désactivé, le système ne démarre une transaction que pour les opérations d'écriture.

Remarque

La prise en charge des transactions explicites (démarrées avec BEGIN TRANSACTION ou START TRANSACTION) dépend de la date de création de votre instance :

  • Créée le 31 juillet 2024 ou après : les transactions explicites et implicites peuvent être fractionnées.

  • Créée avant le 31 juillet 2024 : seules les transactions implicites peuvent être fractionnées.

Règles de routage

Acheminé vers les instances en lecture seule :

  • Instructions SELECT exécutées avant la première écriture dans une transaction

Acheminé vers l'instance principale :

  • La première requête d'écriture dans une transaction (c'est à ce moment que la transaction démarre sur l'instance principale)

  • Toutes les requêtes suivantes dans une transaction d'écriture ouverte (SELECT, UPDATE, INSERT, DELETE, COMMIT)

Le tableau suivant illustre la séquence de routage pour une transaction typique avec la validation automatique désactivée et une transaction démarrée implicitement :

Instruction SQL Acheminé vers Remarques
SELECT Instance RDS en lecture seule Requête de lecture avant la première écriture
SELECT Instance RDS en lecture seule Requête de lecture avant la première écriture
UPDATE, INSERT ou DELETE Instance RDS principale Première écriture — la transaction démarre ici
SELECT Instance RDS principale Requête de lecture après la première écriture
UPDATE, INSERT ou DELETE Instance RDS principale Requête d'écriture
SELECT Instance RDS principale Requête de lecture après la première écriture
COMMIT Instance RDS principale Validation de la transaction

Activer ou désactiver le fractionnement des transactions

Important

Le fractionnement des transactions ne garantit pas la cohérence globale. Vérifiez que votre charge de travail peut tolérer ce compromis avant d'activer la fonctionnalité.

  1. Accédez à la page Instances. Dans la barre de navigation supérieure, sélectionnez la région où réside votre instance RDS, puis cliquez sur l'ID de l'instance.

  2. Dans le volet de navigation de gauche, cliquez sur Database Proxy.

  3. Dans la section Connection Information, repérez le point de terminaison du proxy à modifier et cliquez sur Modify Configuration dans la colonne Actions.

  4. Dans la boîte de dialogue, cliquez sur Enable ou Disable à côté de Transaction Splitting.

Remarque

Le nouveau paramètre s'applique uniquement aux nouvelles connexions.

Référence API

Opération Description
DescribeDBProxy Interroge les détails du proxy de base de données
DescribeDBProxyEndpoint Interroge les informations sur le point de terminaison du proxy de base de données
ModifyDBProxyEndpoint Modifie les paramètres du point de terminaison du proxy de base de données