Tous les produits
Search
Centre de documentation

PolarDB:Séparation des transactions

Dernière mise à jour :Aug 11, 2026

Lorsque vous utilisez un endpoint de cluster en mode lecture/écriture, certains pilotes clients de base de données, comme Java Database Connectivity (JDBC), encapsulent automatiquement chaque requête dans une transaction. Tout le trafic, y compris les requêtes en lecture seule, est alors dirigé vers le nœud principal. Les nœuds en lecture seule restent inactifs tandis que le nœud principal subit une charge inutile. La séparation des transactions corrige ce comportement sans modification de code.

La séparation des transactions permet à PolarProxy de router les requêtes de lecture d'une transaction vers les nœuds en lecture seule. Cela redistribue la charge sans exiger de modifications du code de votre application. Cette fonctionnalité garantit également la cohérence entre les lectures et les écritures.

Fonctionnement

Par défaut, lorsque vous utilisez un endpoint de cluster en mode lecture/écriture, PolarProxy envoie toutes les requêtes d'une session au nœud principal. Des pilotes tels que JDBC encapsulant toutes les requêtes dans des transactions, même les requêtes en lecture seule atteignent le nœud principal, qu'elles impliquent ou non des écritures.

Transaction splitting unavailable

Une fois la séparation basique des transactions activée, PolarProxy distingue les lectures des écritures au sein de chaque transaction :

  • Les requêtes de lecture reçues avant la première requête d'écriture d'une transaction sont transmises aux nœuds en lecture seule.

  • Dès l'arrivée de la première requête d'écriture, toutes les requêtes suivantes (lectures et écritures) sont transmises au nœud principal afin de préserver la cohérence des données.

  • Les données non validées ne sont jamais visibles depuis les nœuds en lecture seule.

Basic transaction splitting

Cas d'utilisation de la séparation des transactions

La séparation des transactions est particulièrement efficace lorsque :

  • Votre application utilise un endpoint de cluster en mode lecture/écriture.

  • Votre charge de travail est principalement constituée de lectures.

  • Le pilote encapsule automatiquement les lectures dans des transactions, par exemple les applications JDBC avec autoCommit=false.

Cette fonctionnalité n'apporte aucun avantage si votre application route déjà les lectures directement vers un endpoint en lecture seule, ou si votre charge de travail est majoritairement composée d'écritures.

Limites

  • Niveau d'isolation : Seules les transactions utilisant le niveau d'isolation Read Committed peuvent être séparées. Les autres niveaux (tels que Repeatable Read ou Serializable) exigent que la session reste attachée à un seul nœud pour garantir une cohérence reposant sur un snapshot stable ; la séparation est donc impossible.

  • Interaction avec le niveau de cohérence : Si le niveau de cohérence n'est pas défini sur eventual consistency, PolarProxy n'envoie les lectures pré-écriture aux nœuds en lecture seule qu'après synchronisation complète des données depuis le nœud principal. En cas de retard de réplication, PolarProxy redirige ces lectures vers le nœud principal. Pour plus de détails, consultez .

Activer la séparation des transactions

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster PolarDB for PostgreSQL (Compatible with Oracle) comportant au moins un nœud en lecture seule

  • Un endpoint de cluster configuré en mode lecture/écriture

Procédure

  1. Connectez-vous à la console PolarDB.

  2. Dans le coin supérieur gauche, sélectionnez la région où votre cluster est déployé.

  3. Localisez le cluster concerné et cliquez sur son ID.

  4. Dans la section Cluster Endpoints, cliquez sur Modify.

  5. Cliquez sur On en regard de Transaction Splitting.

    La séparation des transactions s'applique uniquement aux nouvelles connexions. Pour appliquer ce changement aux connexions existantes, fermez-les puis reconnectez-vous.

    Enable transaction splitting

  6. Cliquez sur OK.

Référence API

Opération

Description

ModifyDBClusterEndpoint

Modifie les attributs d'un endpoint de cluster, notamment le mode lecture/écriture, le niveau de cohérence, la séparation des transactions et la délégation des requêtes de lecture hors du nœud principal. Permet également d'associer ou non l'endpoint spécifié aux nœuds nouvellement ajoutés.