Nesta página, descrevemos como ativar, configurar e monitorar o encaminhamento transparente de consultas nas instâncias do AlloyDB para PostgreSQL. O encaminhamento transparente de consultas é um recurso inteligente de otimização de recursos que permite ao nó principal interceptar consultas somente leitura e encaminhá-las seletivamente para instâncias de pool de leitura subutilizadas, mantendo a consistência de leitura após gravação. As consultas encaminhadas para o pool de leitura geram resultados consistentes com a execução do nó principal.

O encaminhamento transparente de consultas é mais adequado para os seguintes cenários:
- Cargas de trabalho híbridas (HTAP): você executa consultas de relatórios ou analíticas, com consistência de leitura após gravação, no mesmo banco de dados que processa transações e quer evitar que leituras caras afetem a latência de gravação.
- Aplicativos monolíticos: você quer usar a capacidade do pool de leitura sem refatorar o aplicativo para usar endpoints separados de leitura e gravação, mas ainda precisa de consistência estrita de leitura e gravação.
- Gerenciamento dinâmico de carga: você tem picos imprevisíveis no tráfego de leitura e quer que o banco de dados descarregue automaticamente o trabalho para os nós do pool de leitura quando o nó principal estiver sob carga pesada com consistência de leitura após gravação.
Antes de começar
Verifique se o cluster do AlloyDB é compatível com o PostgreSQL 17 ou 18.
É necessário ter pelo menos uma instância de pool de leitura ativa configurada no cluster do AlloyDB. Para informações sobre como criar ou verificar instâncias de pool de leitura, consulte Criar uma instância de pool de leitura em um cluster e Ver detalhes da instância.
Funções exigidas
- Verifique se você tem a função de banco de dados
alloydbsuperuserou se fez login como o usuário padrãopostgres.
Ativar o encaminhamento de consultas transparente
O encaminhamento transparente de consultas fica desativado por padrão. É possível ativar dinamicamente no nível da sessão ou do banco de dados sem reiniciar o banco de dados.
Ativar no nível da sessão
Para ativar o encaminhamento transparente de consultas na sua sessão atual, execute o seguinte comando SQL:
SET alloydb.enable_query_forwarding = TRUE;
Ativar no nível do banco de dados
Para ativar o encaminhamento transparente de consultas em um banco de dados específico, execute o seguinte comando SQL:
ALTER DATABASE DATABASE_NAME SET alloydb.enable_query_forwarding = ON;
Substitua DATABASE_NAME pelo nome do seu banco de dados.
Condições de qualificação da consulta
- O encaminhamento transparente de consultas se aplica apenas a instruções
SELECTsomente leitura. - A consulta não pode usar bloqueios no nível da linha, como os usados em
SELECT ... FOR UPDATE. - O encaminhamento transparente de consultas tem suporte limitado para instruções
SELECTem transações com várias instruções. - As consultas não podem fazer referência a tabelas temporárias, não registradas ou de catálogo.
- A consulta precisa obedecer às seguintes restrições de função:
- A consulta não pode conter funções voláteis nem funções definidas pelo usuário (UDFs).
- A consulta não pode conter funções de valor SQL, como
CURRENT_DATE,LOCALTIME,USERouCURRENT_SCHEMA. - A consulta não pode conter expressões
NEXTVAL(). - A consulta não pode conter procedimentos ou funções SQL.
- Todas as colunas de resultado precisam usar tipos de dados que implementam funções binárias de envio e recebimento.
- Uma consulta só se qualifica para encaminhamento se o custo indireto for mínimo em comparação com o custo total dela. Isso significa que as consultas que usam verificações de índice geralmente são excluídas, já que a sobrecarga delas costuma exceder o custo da própria consulta.
- Não é possível encaminhar para um nó de espera ativa do AlloyDB. Um nó de espera ativa do AlloyDB é um nó secundário dedicado para instâncias principais de alta disponibilidade (HA).
Verificar a qualificação da consulta com EXPLAIN
No exemplo a seguir, large_table é uma tabela em um banco de dados com muitas linhas. Para verificar se uma consulta específica está qualificada para encaminhamento na sua configuração atual, execute o comando EXPLAIN:
EXPLAIN SELECT count(*) FROM large_table t1, large_table t2;
Se a consulta for qualificada, a saída vai incluir uma declaração de status de encaminhamento de consulta após o plano de execução padrão do Postgres. Se essa instrução estiver faltando, a consulta não vai se qualificar para encaminhamento e será executada localmente no primário.
Aggregate (cost=25000.00..25000.01 rows=1 width=8)
-> Nested Loop (cost=0.00..20000.00 rows=1000000 width=0)
... [Standard Postgres Plan Steps] ...
Query Forwarding: Eligible. (overhead=1250.02)
Na resposta de saída, Eligible indica que a consulta atende aos critérios padrão de SQL somente leitura e que a análise de custo-benefício favorece o encaminhamento para uma instância de pool de leitura. O parâmetro overhead indica o custo calculado do planejador de encaminhar a consulta para uma instância de pool de leitura, incluindo a sobrecarga de estabelecer a conexão e restaurar snapshots na réplica.
Monitorar métricas de encaminhamento de consultas
Para verificar se o encaminhamento transparente de consultas está funcionando em toda a sua carga de trabalho, acompanhe a seguinte métrica no Cloud Monitoring:
| Métrica | Descrição | Detalhes |
|---|---|---|
alloydb.googleapis.com/internal/database/postgresql/workload/distributed/tqf_query_count |
A contagem cumulativa de consultas processadas pelo encaminhamento transparente de consultas. | Nome de exibição:contagem de consultas TQF Tipo de métrica:CUMULATIVE Tipo de valor:INT64 Rótulos: status: processamento de consultas se o encaminhamento transparente de consultas
estiver ativado. Esse rótulo registra um dos seguintes valores:
|