Todos os produtos
Search
Central de documentação

PolarDB:Divisão de transações

Última atualização: Jul 14, 2026

Ao usar um endpoint de cluster no modo de leitura e gravação, alguns drivers de cliente de banco de dados — como o driver Java Database Connectivity (JDBC) — encapsulam automaticamente cada solicitação em uma transação. Consequentemente, todo o tráfego, inclusive consultas somente leitura, vai para o nó primário. Os nós somente leitura permanecem ociosos enquanto o nó primário processa carga desnecessária, sem que alterações de código resolvam o problema.

A divisão de transações permite que o PolarProxy encaminhe solicitações de leitura dentro de uma transação para os nós somente leitura, redistribuindo a carga sem exigir modificações no código da aplicação. Esse recurso também ajuda a garantir a consistência entre leituras e gravações.

Como funciona

Por padrão, o PolarProxy envia todas as solicitações de uma sessão para o nó primário quando se usa um endpoint de cluster no modo de leitura e gravação. Como drivers como o JDBC encapsulam todas as solicitações em transações, até mesmo as consultas somente leitura atingem o nó primário, independentemente de envolverem operações de escrita.

Transaction splitting unavailable

Com a divisão básica de transações ativada, o PolarProxy separa as leituras das gravações dentro de cada transação:

  • O sistema encaminha as solicitações de leitura recebidas antes da primeira solicitação de gravação em uma transação aos nós somente leitura.

  • Após a chegada da primeira solicitação de gravação, o sistema envia todas as solicitações subsequentes — tanto de leitura quanto de gravação — ao nó primário para preservar a consistência dos dados.

  • Dados não confirmados nunca ficam visíveis nos nós somente leitura.

Basic transaction splitting

Quando usar a divisão de transações

A divisão de transações oferece maior eficácia nas seguintes situações:

  • Sua aplicação usa um endpoint de cluster no modo de leitura e gravação.

  • A carga de trabalho consiste predominantemente em leituras.

  • O driver encapsula automaticamente as leituras em transações — por exemplo, aplicações JDBC com autoCommit=false.

Esse recurso não traz benefícios caso sua aplicação já direcione as leituras diretamente para um endpoint somente leitura ou se a carga de trabalho for majoritariamente composta por gravações.

Limitações

  • Nível de isolamento: Apenas transações que usam o nível de isolamento Read Committed podem ser divididas. Outros níveis (como Repeatable Read ou Serializable) exigem que a sessão permaneça fixa em um único nó para garantir a consistência baseada em um snapshot estável, impossibilitando a divisão.

  • Interação com o nível de consistência: Se o nível de consistência não estiver defina como eventual consistency, o PolarProxy enviará leituras pré-gravação aos nós somente leitura apenas após esses nós sincronizarem completamente os dados com o nó primário. Caso haja atraso na sincronização, o PolarProxy voltará a enviar as leituras para o nó primário. Para mais detalhes, consulte Níveis de consistência.

Ative divisão de transações

Pré-requisitos

Antes de começar, verifique se você possui:

  • Um cluster PolarDB for PostgreSQL (Compatible with Oracle) com pelo menos um nó somente leitura

  • Um endpoint de cluster configurado no modo de leitura e gravação

Procedimento

  1. Faça login no console do PolarDB.

  2. No canto superior esquerdo, selecione a região onde seu cluster está implantado.

  3. Localize o cluster e clique em seu ID.

  4. Na seção Cluster Endpoints, clique em Modify.

  5. Clique em On ao lado de Transaction Splitting.

    A divisão de transações entra em vigor apenas para novas conexões. Para aplicar a alteração às conexões existentes, feche-as e reconecte-se.

    Enable transaction splitting

  6. Clique em OK.

Referência de API

Operação

Descrição

ModifyDBClusterEndpoint

Modifica os atributos do endpoint de cluster, incluindo modo de leitura/gravação, nível de consistência, divisão de transações e a opção de descarregar solicitações de leitura do nó primário. Também permite especifique se o endpoint deve ser associado a novos nós adicionados.