Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Transaction splitting

Dernière mise à jour :Aug 08, 2026

Le fractionnement des transactions décharge les requêtes de lecture effectuées au sein de transactions non validées automatiquement (non auto-committed) de l'instance principale vers les instances en lecture seule, sans nécessiter de modification du code de l'application. Lorsque toutes les requêtes sont exécutées dans des transactions avec la validation automatique désactivée, l'instance principale traite chaque requête, même si les lectures ne requièrent pas d'accès en écriture. Le fractionnement des transactions achemine ces lectures vers les instances en lecture seule avant le début de toute opération d'écriture, ce qui réduit la charge sur l'instance principale et améliore sa stabilité.

Prérequis

Avant de commencer, assurez-vous que :

Fonctionnement

Par défaut, le proxy de base de données envoie toutes les requêtes effectuées au sein d'une transaction à l'instance principale afin de préserver la cohérence en lecture/écriture. Cette approche est nécessaire pour les opérations d'écriture, mais les requêtes de lecture précédant toute écriture sont également envoyées à l'instance principale, même lorsque des instances en lecture seule pourraient les traiter en toute sécurité.

Le fractionnement des transactions modifie ce comportement lorsque deux conditions sont remplies :

  • Le niveau d'isolation des transactions est READ COMMITTED (valeur par défaut de PostgreSQL).

  • La validation automatique est désactivée (autocommit = off).

Dans ces conditions, le proxy retarde l'ouverture d'une transaction sur l'instance principale jusqu'à la première opération d'écriture. Toutes les requêtes de lecture émises avant cette écriture sont acheminées vers les instances en lecture seule via l'équilibreur de charge.

Le fractionnement des transactions est activé automatiquement lorsque vous activez le proxy de base de données. Il n'est pas possible de le désactiver.

Limites

Toutes les transactions ne peuvent pas être fractionnées. Assurez-vous que le fractionnement des transactions convient à vos charges de travail avant d'activer le proxy de base de données.

Contrainte Détail
Transactions explicites Les transactions démarrées avec BEGIN ou START TRANSACTION ne sont jamais fractionnées. Toutes les requêtes d'une transaction explicite sont envoyées à l'instance principale.
Cohérence globale Le fractionnement des transactions ne peut pas garantir la cohérence globale entre les requêtes. Évaluez cet arbitrage avant d'activer le proxy de base de données.
Impossible à désactiver Une fois le proxy de base de données activé, le fractionnement des transactions reste toujours actif. Il n'existe aucune option permettant de le désactiver indépendamment.

Quand utiliser le fractionnement des transactions

Le fractionnement des transactions est particulièrement efficace lorsque votre application englobe des requêtes à forte dominance de lecture dans des transactions non validées automatiquement, sans utiliser d'instructions explicites BEGIN ou START TRANSACTION.

Scénario Adapté ?
Applications avec validation automatique désactivée, principalement des lectures avant les écritures Oui
Transactions explicites utilisant BEGIN ou START TRANSACTION Non — les lectures restent sur l'instance principale
Charges de travail nécessitant une cohérence globale stricte pour toutes les lectures Non — la cohérence globale ne peut pas être assurée

Référence API

Opération Description
DescribeDBProxy Interroger les détails d'un proxy de base de données
DescribeDBProxyEndpoint Interroger les informations relatives à un endpoint de proxy de base de données