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:
O recurso de database proxy ativado na sua instância ApsaraDB RDS for MySQL. Para obter detalhes, consulte Ativar o recurso de database proxy
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.

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.
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
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.
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.
No painel de navegação à esquerda, clique em Database Proxy.
Na seção Connection Information, localize o proxy endpoint que deseja modifique e clique em Modify Configuration na coluna Actions.
Na caixa de diálogo, clique em Enable ou Disable ao lado de Transaction Splitting.
A nova configuração se aplica apenas às novas conexões.
Referência de API
|
Operação |
Descrição |
|
Consulta detalhes do database proxy |
|
|
Consulta informações do endpoint do database proxy |
|
|
Modifica as configurações do endpoint do database proxy |