Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Use transaction splitting

Última atualização: Jun 26, 2026

Quando o autocommit está desativado (por exemplo, via SET autocommit=0), o database proxy roteia todas as consultas — incluindo leituras — pela instância primária, concentrando a carga nela. A divisão de transações transfere automaticamente as requisições de leitura que ocorrem antes da primeira escrita em uma transação para instâncias somente leitura, sem exigir alterações no código da aplicação ou nas configurações.

Pré-requisitos

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

Como funciona

Por padrão, o database proxy envia todas as requisições de uma transação para a instância primária a fim de preservar a precisão dos dados. Quando o autocommit está desativado, cada consulta é executada dentro de uma transação implícita, o que concentra toda a carga na instância primária.

image.png

A divisão de transações altera esse comportamento: o proxy inicia uma transação na instância primária somente quando ocorre uma operação de escrita. Todas as requisições de leitura anteriores à primeira escrita são roteadas para instâncias somente leitura por meio de um balanceador de carga. Quando o nível de isolamento padrão READ COMMITTED está em uso e o modo autocommit das transações está desativado, o sistema inicia uma transação apenas para operações de escrita.

Nota

O suporte a transações explícitas (iniciadas com BEGIN TRANSACTION ou START TRANSACTION) depende de quando sua instância foi criada:

  • Criada em ou após 31 de julho de 2024: transações explícitas e implícitas podem ser divididas.

  • Criada antes de 31 de julho de 2024: apenas transações implícitas podem ser divididas.

Regras de roteamento

Roteadas para instâncias somente leitura:

  • Instruções SELECT que ocorrem antes da primeira escrita em uma transação

Roteadas para a instância primária:

  • A primeira requisição de escrita em uma transação (é neste momento que a transação se inicia na instância primária)

  • Todas as requisições subsequentes em uma transação de escrita aberta (SELECT, UPDATE, INSERT, DELETE, COMMIT)

A tabela a seguir mostra a sequência de roteamento para uma transação típica com autocommit desativado e uma transação iniciada implicitamente:

Instrução SQL

Roteada para

Observações

SELECT

Instância RDS somente leitura

Requisição de leitura antes da primeira escrita

SELECT

Instância RDS somente leitura

Requisição de leitura antes da primeira escrita

UPDATE, INSERT ou DELETE

Instância RDS primária

Primeira escrita — a transação se inicia aqui

SELECT

Instância RDS primária

Requisição de leitura após a primeira escrita

UPDATE, INSERT ou DELETE

Instância RDS primária

Requisição de escrita

SELECT

Instância RDS primária

Requisição de leitura após a primeira escrita

COMMIT

Instância RDS primária

Confirmação da transação

Ativar ou desativar a divisão de transações

Importante

A divisão de transações não garante consistência global. Verifique se sua carga de trabalho tolera essa troca antes de ativar o recurso.

  1. Acesse a página Instances. Na barra de navegação superior, selecione a região onde sua instância RDS está localizada e clique em no ID da instância.

  2. No painel de navegação à esquerda, clique em Database Proxy.

  3. Na seção Connection Information, localize o proxy endpoint que deseja modifique e clique em Modify Configuration na coluna Actions.

  4. Na caixa de diálogo, clique em Enable ou Disable ao lado de Transaction Splitting.

Nota

A nova configuração se aplica apenas às novas conexões.

Referência de API

Operação

Descrição

DescribeDBProxy

Consulta detalhes do database proxy

DescribeDBProxyEndpoint

Consulta informações do endpoint do database proxy

ModifyDBProxyEndpoint

Modifica as configurações do endpoint do database proxy