Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Transaction splitting

Última atualização: Jun 26, 2026

A divisão de transações transfere solicitações de leitura em transações sem autocommit da instância primária para instâncias somente leitura, sem exigir alterações no código da aplicação. Quando todas as consultas são executadas em transações com autocommit desativado, a instância primária processa cada solicitação, mesmo que as leituras não precisem de acesso de escrita. A divisão de transações encaminha essas leituras para instâncias somente leitura antes do início de qualquer operação de escrita, o que reduz a carga na instância primária e melhora sua estabilidade.

Pré-requisitos

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

Como funciona

Por padrão, o proxy de banco de dados envia todas as solicitações dentro de uma transação para a instância primária a fim de preservar a consistência de leitura e escrita. Isso é necessário para operações de escrita, mas solicitações de leitura anteriores a qualquer escrita também vão para a instância primária, mesmo quando instâncias somente leitura poderiam atendê-las com segurança.

A divisão de transações altera esse comportamento quando duas condições são atendidas:

  • O nível de isolamento da transação é READ COMMITTED (o padrão do PostgreSQL).

  • O autocommit está desativado (autocommit = off).

Nessas condições, o proxy adia a abertura de uma transação na instância primária até a primeira operação de escrita. Todas as solicitações de leitura emitidas antes dessa escrita são roteadas para instâncias somente leitura por meio do balanceador de carga.

A divisão de transações é ativada automaticamente ao ative o proxy de banco de dados. Não é possível desativá-la.

Limitações

Nem todas as transações podem ser divididas. Certifique-se de que a divisão de transações seja adequada às suas cargas de trabalho antes de ative o proxy de banco de dados.

Restrição

Detalhe

Transações explícitas

Transações iniciadas com BEGIN ou START TRANSACTION nunca são divididas. Todas as solicitações em uma transação explícita vão para a instância primária.

Consistência global

A divisão de transações não garante consistência global entre as solicitações. Avalie essa contrapartida antes de ative o proxy de banco de dados.

Não pode ser desativada

Depois que o proxy de banco de dados é ativado, a divisão de transações permanece sempre ativa. Não há opção para desativá-la independentemente.

Quando usar a divisão de transações

A divisão de transações funciona melhor quando sua aplicação agrupa consultas com muitas leituras em transações sem autocommit, sem usar instruções explícitas BEGIN ou START TRANSACTION.

Cenário

Adequado?

Aplicações com autocommit desativado e predominância de leituras antes das escritas

Sim

Transações explícitas usando BEGIN ou START TRANSACTION

Não — as leituras permanecem na instância primária

Cargas de trabalho que exigem consistência global estrita em todas as leituras

Não — a consistência global não pode ser garantida

Referência da API

Operação

Descrição

DescribeDBProxy

Consulta os detalhes de um proxy de banco de dados

DescribeDBProxyEndpoint

Consulta as informações sobre um endpoint de proxy de banco de dados