Todos los productos
Search
Centro de documentos

PolarDB:División de transacciones

Última actualización: Sep 05, 2026

Este tema describe la función de división de transacciones de los clústeres de PolarDB for PostgreSQL. Se explica su funcionamiento y cómo habilitarla.

Contexto

Cuando se usa el endpoint del clúster de un clúster de PolarDB for PostgreSQL en modo de lectura y escritura, PolarProxy enruta las solicitudes de lectura y escritura al nodo primario y a los nodos de solo lectura. Para garantizar la coherencia de lectura y escritura dentro de una sesión, PolarProxy envía todas las solicitudes que pertenecen a una transacción de esa sesión al nodo primario.

Por ejemplo, algunos controladores de cliente de base de datos, como Java Database Connectivity (JDBC), encapsulan las solicitudes en transacciones de forma predeterminada. Como resultado, todas las solicitudes de la aplicación se envían al nodo primario. Esto genera una carga elevada en dicho nodo, mientras que los nodos de solo lectura permanecen casi inactivos, como se muestra en la siguiente figura.

No transaction splitting

Para resolver este problema, PolarDB ofrece la función de división de transacciones. Esta función enruta las solicitudes de lectura de una transacción hacia los nodos de solo lectura sin perder la coherencia entre lecturas y escrituras, lo que reduce la carga del nodo primario.

Funciones

Servicio básico de división de transacciones

PolarProxy enruta las solicitudes de lectura anteriores a la primera solicitud de escritura de una transacción hacia los nodos de solo lectura, lo que reduce la carga del nodo primario. Dado que los datos no confirmados de una transacción no son visibles en los nodos de solo lectura, todas las solicitudes de lectura y escritura posteriores a la primera escritura siguen dirigiéndose al nodo primario para garantizar la coherencia de lectura y escritura. Para obtener más información sobre cómo habilitar el servicio básico de división de transacciones, consulte Enable transaction splitting.

Basic transaction splitting

Beneficios

No es necesario modificar el código ni la configuración de la aplicación para trasladar la carga de lectura de las transacciones del nodo primario a los nodos de solo lectura. Esto mejora la estabilidad del nodo primario.

Precauciones

  • La división de transacciones solo es compatible con el nivel de aislamiento de transacciones Read Committed.

  • En el servicio básico de división de transacciones, si el nivel de coherencia no está establecido en Eventual Consistency (Weak), las solicitudes de lectura anteriores a la primera solicitud de escritura de una transacción se enrutan a los nodos de solo lectura únicamente después de que los datos de dichos nodos se sincronicen con el nodo primario. De lo contrario, estas solicitudes se siguen enviando al nodo primario. Para obtener más información sobre los niveles de coherencia, consulte Consistency levels.

Habilitar la división de transacciones

  1. Inicie sesión en la consola de PolarDB. En el panel de navegación izquierdo, haga clic en Clusters. Seleccione la Region donde se despliega el clúster y luego haga clic en el ID del clúster para ir a la página de detalles del clúster.

  2. En la sección Database Connections, haga clic en Configure junto al endpoint de conexión de destino.

  3. Haga clic en Transaction Splitting y luego seleccione On en el lado derecho.

    Nota

    Después de habilitar la división de transacciones, esta solo surte efecto en las conexiones nuevas. Las conexiones existentes deben restablecerse para que el cambio surta efecto.

  4. Haga clic en OK.

Operaciones relacionadas

Operación de API

Descripción

ModifyDBClusterEndpoint

Modifica los atributos del endpoint de un clúster de PolarDB, como el modo de lectura y escritura, la inclusión automática de nodos nuevos en el endpoint, el nivel de coherencia, la división de transacciones y si el nodo primario acepta solicitudes de lectura.