

# Encaminhamento de gravação local no Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding"></a>

 O *encaminhamento de gravação local (no cluster)* permite que as aplicações emitam transações de leitura/gravação diretamente em uma réplica do Aurora. Os comandos de gravação são então encaminhadas à instância de banco de dados do gravador para serem confirmados. É possível usar o encaminhamento de gravação local para as aplicações que têm gravações ocasionais e exigem *consistência de leitura após gravação*, que é a capacidade de ler a gravação mais recente em uma transação. 

 Sem o encaminhamento de gravação, as aplicações devem dividir todo o tráfego de leitura e de gravação, mantendo dois conjuntos de conexões a bancos de dados para enviar o tráfego ao endpoint apropriado. As réplicas de leitura recebem atualizações de maneira assíncrona da instância do gravador. Além disso, como o atraso na replicação pode diferir entre as réplicas de leitura, é difícil ter consistência de leitura global em todas as réplicas. É necessário realizar todas as leituras que exigem consistência de leitura após gravação na instância de banco de dados do gravador. Também é necessário desenvolver uma lógica de aplicação personalizada complexa para aproveitar as vantagens de várias réplicas de leitura para escalabilidade e, ao mesmo tempo, garantir a consistência. 

 Com o encaminhamento de gravação, é possível evitar a necessidade de dividir essas transações ou de enviá-las exclusivamente à instância do gravador. Além disso, não é necessário desenvolver uma lógica complexa de aplicações para ter *consistência de leitura após gravação*. 

 O encaminhamento de gravação local está disponível em todas as regiões que oferecem o Aurora PostgreSQL. O recurso é compatível com as seguintes versões do Aurora PostgreSQL: 
+ 16.4 e versões 16 posteriores
+ 15.8 e versões 15 posteriores
+ 14.13 e versões 14 posteriores

 O encaminhamento de gravação local é usado para encaminhar gravações de réplicas na região. Para encaminhar gravações de uma réplica global, consulte [Como usar o encaminhamento de gravação em um banco de dados global Amazon Aurora](aurora-global-database-write-forwarding.md). 

**Topics**
+ [Limitações e considerações referentes ao encaminhamento de gravação local no Aurora PostgreSQL](aurora-postgresql-write-forwarding-limitations.md)
+ [Configurar o Aurora PostgreSQL para encaminhamento de gravação local](aurora-postgresql-write-forwarding-configuring.md)
+ [Trabalhar com encaminhamento de gravação local para o Aurora PostgreSQL](aurora-postgresql-write-forwarding-understanding.md)
+ [Monitorar o encaminhamento de gravação local no Aurora PostgreSQL](aurora-postgresql-write-forwarding-monitoring.md)

# Limitações e considerações referentes ao encaminhamento de gravação local no Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-limitations"></a>

 No momento, as seguintes limitações se aplicam ao encaminhamento de gravação local no Aurora PostgreSQL: 
+  O encaminhamento de gravação local não é compatível com o RDS Proxy. 
+  Determinadas instruções não são permitidas ou podem gerar resultados obsoletos ao serem usadas no Aurora PostgreSQL com encaminhamento de gravação. Além disso, funções definidas pelo usuário e procedimentos definidos pelo usuário não são compatíveis. Assim, a configuração `EnableLocalWriteForwarding` é desativada por padrão para clusters de banco de dados. Antes de ativá-la, verifique se o código do aplicativo não é afetado por nenhuma dessas restrições. 
+  Os seguintes tipos de instruções SQL não são compatíveis com o encaminhamento de gravação: 
**nota**  
Essas instruções podem ser usadas implicitamente por você na aplicação ou inferidas pelo protocolo do PostgreSQL. Por exemplo, o tratamento de exceções PL/SQL pode ocasionar o uso de SAVEPOINT, que não é uma instrução aceita.
  +  `ANALYZE` 
  +  `CLUSTER` 
  +  `COPY` 
  + Cursores: cursores não são compatíveis, então feche-os antes de usar o encaminhamento de gravação local.
  +  Instruções Data Definition Language (DDL) 
  +  `GRANT`\$1`REVOKE`\$1`REASSIGN OWNED`\$1`SECURITY LABEL`
  +  `LISTEN / NOTIFY` 
  +  `LOCK` 
  +  `SAVEPOINT` 
  +  `SELECT INTO` 
  +  `SET CONSTRAINTS` 
  +  Atualizações de sequência: `nextval()`, `setval()` 
  +  `TRUNCATE` 
  +  Comandos de confirmação em duas fases: `PREPARE TRANSACTION`, `COMMIT PREPARED`, `ROLLBACK PREPARED` 
  + Funções definidas pelo usuário e procedimentos definidos pelo usuário.
  +  `VACUUM` 

 É possível considerar o uso das seguintes instruções SQL com o encaminhamento de gravação: 
+ Uma declaração DML pode consistir em várias partes, como uma declaração `INSERT ... SELECT` ou `DELETE ... WHERE`. Nesse caso, a declaração inteira é encaminhada para a instância de banco de dados do gravador e é executada nela.
+ Instruções de linguagem de manipulação de dados (DML), como `INSERT`, `DELETE` e `UPDATE`.
+  Instruções `EXPLAIN` com as instruções desta lista
+  Instruções `PREPARE` e `EXECUTE`.
+  Instruções `SELECT FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }`.

# Configurar o Aurora PostgreSQL para encaminhamento de gravação local
<a name="aurora-postgresql-write-forwarding-configuring"></a>

 Com as seções a seguir, é possível habilitar o encaminhamento de gravação local para o cluster de banco de dados do Amazon Aurora PostgreSQL, configurando níveis de consistência e gerenciando transações com encaminhamento de gravação. 

## Habilitar o encaminhamento de gravação local
<a name="aurora-postgresql-write-forwarding-enabling"></a>

 Por padrão, o encaminhamento de gravação local não está habilitado para clusters de banco de dados do Aurora PostgreSQL. Você habilita o encaminhamento de gravação local no cluster, não na instância. 

### Console
<a name="aurora-postgresql-write-forwarding-enabling.CON"></a>

 Usando o Console de gerenciamento da AWS, marque a caixa de seleção **Ativar o encaminhamento de gravação local** abaixo de **Encaminhamento de gravação de réplica de leitura** quando você criar ou modificar um cluster de banco de dados. 

### AWS CLI
<a name="aurora-postgresql-write-forwarding-enabling.CLI"></a>

 Para habilitar o encaminhamento de gravação local com a AWS CLI, use a opção `--enable-local-write-forwarding`. Essa opção funciona quando você cria um cluster de banco de dados usando o comando `create-db-cluster`. Ela também funciona quando você modifica um cluster de banco de dados usando o comando `modify-db-cluster`. É possível desabilitar o encaminhamento de gravação local usando a opção `--no-enable-local-write-forwarding` com esses mesmos comandos da CLI. 

 O exemplo a seguir cria um cluster de banco de dados do Aurora PostgreSQL com encaminhamento de gravação local habilitado. 

```
                        aws rds create-db-cluster \
                        --db-cluster-identifier write-forwarding-test-cluster \
                        --enable-local-write-forwarding \
                        --engine aurora-postgresql \
                        --engine-version 16.4 \
                        --master-username myuser \
                        --master-user-password mypassword \
                        --backup-retention 1
```

 Depois, você cria instâncias de banco de dados do gravador e do leitor para poder usar o encaminhamento de gravação. Para ter mais informações, consulte [Criar um cluster de bancos de dados do Amazon Aurora](Aurora.CreateInstance.md).

### API do RDS
<a name="aurora-postgresql-write-forwarding-enabling.API"></a>

 Para habilitar o encaminhamento de gravação local usando a API do Amazon RDS, defina o parâmetro `EnableLocalWriteForwarding` como `true`. Esse parâmetro funciona quando você cria um cluster de banco de dados usando a operação `CreateDBCluster`. Ele também funciona quando você modifica um cluster de banco de dados usando a operação `ModifyDBCluster`. É possível desabilitar o encaminhamento de gravação local definindo o parâmetro `EnableLocalWriteForwarding` como `false`. 

### Habilitar o encaminhamento de gravação local para sessões de banco de dados
<a name="aurora-postgresql-write-forwarding-enabling-session"></a>

 `apg_write_forward.consistency_mode` é um parâmetro de banco de dados e de cluster de banco de dados que permite o encaminhamento de gravação. É possível especificar `SESSION`, `EVENTUAL`, `GLOBAL` ou `OFF` para o nível de consistência de leitura. Para saber mais sobre os níveis de consistência, consulte [Isolamento e consistência para o encaminhamento de gravação local no Aurora PostgreSQL](#aurora-postgresql-write-forwarding-isolation). 

 As seguintes regras se aplicam a esse parâmetro: 
+ O valor padrão é `SESSION`.
+  O encaminhamento de gravação local estará disponível apenas se você definir `apg_write_forward.consistency_mode` como `EVENTUAL`, `SESSION` ou `GLOBAL`. Esse parâmetro é relevante somente em instâncias do leitor de clusters de banco de dados que têm o encaminhamento de gravação local habilitado. 
+ Definir o valor como `OFF` desabilita o encaminhamento de gravação local na sessão. 

## Isolamento e consistência para o encaminhamento de gravação local no Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-isolation"></a>

É possível controlar o grau de consistência de leitura em uma réplica de leitura. Você pode ajustar o nível de consistência de leitura para garantir que todas as operações de gravação encaminhadas da sessão estejam visíveis na réplica de leitura antes de qualquer consulta subsequente. Também é possível usar essa configuração para garantir que as consultas na réplica de leitura sempre vejam as atualizações mais recentes da instância de banco de dados do gravador. Isso acontece mesmo para aquelas submetidas por outras sessões ou outros clusters. Para especificar esse tipo de comportamento para a aplicação, escolha o valor apropriado para o parâmetro `apg_write_forward.consistency_mode` de nível de sessão. O parâmetro `apg_write_forward.consistency_mode` tem efeito somente em réplicas de leitura que tenham o encaminhamento de gravação local habilitado.

**nota**  
Para o parâmetro `apg_write_forward.consistency_mode`, é possível especificar o valor `SESSION`, `EVENTUAL`, `GLOBAL` ou `OFF`. Por padrão, o valor é definido como `SESSION`. Definir o valor como `OFF` desabilita o encaminhamento de gravação.

À medida que você aumenta o nível de consistência, a aplicação passa mais tempo aguardando as alterações serem propagadas para as réplicas de leitura. É possível escolher o equilíbrio entre latência mais baixa e garantia de que as alterações feitas em outros locais estejam totalmente disponíveis antes da execução das consultas.

Com cada configuração de modo de consistência disponível, o efeito é o seguinte:
+ `SESSION`: uma sessão em uma réplica de leitura que usa o encaminhamento de gravação local vê os resultados de todas as alterações feitas nessa sessão. As alterações são visíveis independentemente de a transação ser confirmada. Se necessário, a consulta aguardará que os resultados das operações de gravação encaminhadas sejam replicados na instância de banco de dados do leitor atual. Ela não aguarda resultados atualizados de operações de gravação realizadas em outras sessões no cluster de banco de dados atual. 
+ `EVENTUAL`: uma sessão em uma réplica de leitura que usa o encaminhamento de gravação local pode ver dados ligeiramente obsoletos devido ao atraso de replicação. Os resultados das operações de gravação na mesma sessão ficam visíveis apenas quando a operação de gravação é realizada na instância de banco de dados do gravador e replicada na réplica de leitura. A consulta não espera que os resultados atualizados estejam disponíveis. Assim, ela pode recuperar os dados mais antigos ou os dados atualizados, dependendo do tempo das declarações e da quantidade de atraso da replicação. 
+ `GLOBAL`: uma sessão em uma réplica de leitura vê as alterações feitas por essa sessão. Ela também vê todas as alterações confirmadas da instância de banco de dados do gravador e das outras réplicas de leitura. Cada consulta pode aguardar por um período que varia de acordo com a quantidade de atraso da sessão. A consulta prosseguirá quando a réplica de leitura estiver atualizada com todos os dados confirmados da instância de banco de dados do gravador, a partir do momento em que a consulta foi iniciada. 
**nota**  
O modo de consistência global prejudica a latência das consultas realizadas em uma sessão. Ele realizará uma espera mesmo quando a sessão não tiver enviado nenhuma consulta de gravação.
+ `OFF`: o encaminhamento de gravação local está desabilitado.

Em sessões que usam o encaminhamento de gravação, é possível usar os níveis de isolamento `REPEATABLE READ` e `READ COMMITTED`. No entanto, o nível de isolamento `SERIALIZABLE` não é compatível.

 Para obter mais informações sobre todos os parâmetros envolvidos no encaminhamento de gravação, consulte [Configurações de parâmetros padrão para o encaminhamento de gravação](aurora-postgresql-write-forwarding-understanding.md#aurora-postgresql-write-forwarding-params).

## Modos de acesso a transações com encaminhamento de gravação
<a name="aurora-postgresql-write-forwarding-txns"></a>

Se o modo de acesso a transações estiver definido como somente leitura, o encaminhamento de gravação local não será usado. Você só poderá definir o modo de acesso como leitura e gravação enquanto estiver conectado a um cluster de banco de dados e a uma sessão que tenha o encaminhamento de gravação local habilitado.

Para ter mais informações sobre os modos de acesso a transações, consulte [SET TRANSACTION](https://www.postgresql.org/docs/current/sql-set-transaction.html).

# Trabalhar com encaminhamento de gravação local para o Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-understanding"></a>

Com as seções a seguir, é possível conferir se um cluster de banco de dados tem o encaminhamento de gravação local habilitado, ver as considerações de compatibilidade e consultar os parâmetros configuráveis e a configuração de autenticação. Essas informações fornecem os detalhes para utilizar o recurso de encaminhamento de gravação local no Aurora PostgreSQL de maneira eficaz.

**nota**  
Quando uma instância do gravador em um cluster que use o encaminhamento de gravação local é reiniciada, todas as transações e consultas ativas e encaminhadas nas instâncias do leitor que usam o encaminhamento de gravação local são fechadas automaticamente. Quando a instância do gravador estiver novamente disponível, você poderá repetir essas transações.

## Conferir se um cluster de banco de dados tem o encaminhamento de gravação local habilitado
<a name="aurora-postgresql-write-forwarding-describing"></a>

Para determinar se você pode usar o encaminhamento de gravação local em um cluster de banco de dados, confirme se o cluster tem o atributo `LocalWriteForwardingStatus` definido como `enabled`.

No Console de gerenciamento da AWS, na guia **Configuração** da página de detalhes do cluster, você vê o status **Habilitado** para **Encaminhamento de gravação de réplica de leitura local**.

Para ver o status da configuração do encaminhamento de gravação local para todos os clusters, execute o comando da AWS CLI a seguir.

**Example**  

```
aws rds describe-db-clusters \
--query '*[].{DBClusterIdentifier:DBClusterIdentifier,LocalWriteForwardingStatus:LocalWriteForwardingStatus}'

[
{
"LocalWriteForwardingStatus": "enabled",
"DBClusterIdentifier": "write-forwarding-test-cluster-1"
},
{
"LocalWriteForwardingStatus": "disabled",
"DBClusterIdentifier": "write-forwarding-test-cluster-2"
},
{
"LocalWriteForwardingStatus": "requested",
"DBClusterIdentifier": "test-global-cluster-2"
},
{
"LocalWriteForwardingStatus": "null",
"DBClusterIdentifier": "aurora-postgresql-v2-cluster"
}
]
```

Um cluster de banco de dados pode ter os seguintes valores para `LocalWriteForwardingStatus`:
+ `disabled`: o encaminhamento de gravação local está desabilitado.
+ `disabling`: o encaminhamento de gravação local está sendo desabilitado.
+ `enabled`: o encaminhamento de gravação local está habilitado.
+ `enabling`: o encaminhamento de gravação local está sendo habilitado.
+ `null`: o encaminhamento de gravação local não está disponível para esse cluster de banco de dados.
+ `requested`: o encaminhamento de gravação local foi solicitado, mas ainda não está ativo.

## Configurações de parâmetros padrão para o encaminhamento de gravação
<a name="aurora-postgresql-write-forwarding-params"></a>

Os grupos de parâmetros do cluster do Aurora incluem configurações para o recurso de encaminhamento de gravação local. Como são parâmetros de cluster, todas as instâncias de banco de dados em cada cluster têm os mesmos valores para essas variáveis. Detalhes sobre esses parâmetros são resumidos na tabela a seguir, com notas de uso após a tabela.


| Parameter | Escopo | Type | Valor padrão | Valores válidos | 
| --- | --- | --- | --- | --- | 
| apg\$1write\$1forward.connect\$1timeout | Sessão | segundos | 30 | 0–2147483647 | 
| apg\$1write\$1forward.consistency\$1mode | Sessão | enum | Sessão | SESSION, EVENTUAL, GLOBAL, e OFF | 
| apg\$1write\$1forward.idle\$1in\$1transaction\$1session\$1timeout | Sessão | milissegundos | 86400000 | 0–2147483647 | 
| apg\$1write\$1forward.idle\$1session\$1timeout | Sessão | milissegundos | 300000 | 0–2147483647 | 
| apg\$1write\$1forward.max\$1forwarding\$1connections\$1percent | Global | int | 25 | 1–100 | 

O parâmetro `apg_write_forward.max_forwarding_connections_percent` é o limite máximo em conexões de banco de dados que pode ser usado em consultas encaminhadas de leitores. Ele é expresso como uma porcentagem da configuração `max_connections` para a instância de banco de dados do gravador. Por exemplo, se `max_connections` for `800` e `apg_write_forward.max_forwarding_connections_percent` for `10`, o gravador permitirá um máximo de 80 sessões encaminhadas simultaneamente. Essas conexões vêm do mesmo grupo de conexões gerenciado pela configuração `max_connections`. Essa configuração se aplica somente à instância de banco de dados do gravador quando o encaminhamento de gravação local está habilitado no cluster.

Use as seguintes configurações para controlar as solicitações de encaminhamento de gravação local:
+ `apg_write_forward.consistency_mode`: um parâmetro ao nível da sessão que controla o grau de consistência de leitura em uma réplica de leitura. Os valores válidos são `SESSION`, `EVENTUAL`, `GLOBAL` ou `OFF`. Por padrão, o valor é definido como `SESSION`. Definir o valor como `OFF` desabilita o encaminhamento de gravação local na sessão. Para saber mais sobre os níveis de consistência, consulte [Isolamento e consistência para o encaminhamento de gravação local no Aurora PostgreSQL](aurora-postgresql-write-forwarding-configuring.md#aurora-postgresql-write-forwarding-isolation). Esse parâmetro é relevante somente em instâncias do leitor que tenham o encaminhamento de gravação local habilitado.
+ `apg_write_forward.connect_timeout`: o número máximo de segundos que a réplica de leitura espera ao estabelecer uma conexão com a instância de banco de dados do gravador antes de desistir. Um valor de `0` significa esperar indefinidamente.
+ `apg_write_forward.idle_in_transaction_session_timeout`: o número de milissegundos que a instância de banco de dados do gravador espera pela atividade em uma conexão encaminhada de uma réplica de leitura que tenha uma transação aberta antes de fechá-la. Se a sessão permanecer ociosa além desse período na transação, o Aurora encerrará a sessão. Um valor de `0` desabilita o tempo limite.
+ `apg_write_forward.idle_session_timeout`: o número de milissegundos que a instância de banco de dados do gravador espera pela atividade em uma conexão encaminhada de uma réplica de leitura antes de fechá-la. Se a sessão permanecer ociosa além desse período, o Aurora encerrará a sessão. Um valor de `0` desativa o tempo limite.

## rdswriteforwarduser
<a name="aurora-postgresql-write-forwarding-rdswriteforwarduser"></a>

 O `rdswriteforwarduser` é um usuário que vamos utilizar para estabelecer conexão entre a réplica de leitura e a instância de banco de dados do gravador. 

**nota**  
`rdswriteforwarduser` herda os privilégios CONNECT para bancos de dados de clientes por meio do perfil PUBLIC. Se os privilégios do perfil PUBLIC forem revogados, você precisará conceder privilégios CONNECT para os bancos de dados aos quais precisa encaminhar gravações. 

# Monitorar o encaminhamento de gravação local no Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-monitoring"></a>

Usando as seções a seguir, é possível monitorar o encaminhamento de gravação local nos clusters do Aurora PostgreSQL, incluindo métricas pertinentes do CloudWatch e eventos de espera com o objetivo de monitorar o desempenho e identificar possíveis problemas.

## Métricas do Amazon CloudWatch e variáveis de status do Aurora PostgreSQL para encaminhamento de gravação
<a name="aurora-postgresql-write-forwarding-cloudwatch"></a>

 As métricas do Amazon CloudWatch a seguir se aplicam às instâncias de banco de dados do gravador quando o encaminhamento de gravação é utilizado em uma ou mais réplicas de leitura.


| Métrica do CloudWatch | Unidades e descrição | 
| --- | --- | 
| `AuroraLocalForwardingWriterDMLThroughput`  | Contagem (por segundo). Número de instruções DML encaminhadas processadas a cada segundo por essa instância de banco de dados de gravador. | 
|  `AuroraLocalForwardingWriterOpenSessions`  | Contagem. Número de sessões abertas nessa instância de banco de dados de gravação que processa consultas encaminhadas. | 
|  `AuroraLocalForwardingWriterTotalSessions`  | Contagem. Número de sessões encaminhadas na instância de banco de dados de gravação. | 

 As métricas do CloudWatch a seguir se aplicam a cada réplica de leitura. Essas métricas são medidas em cada instância de banco de dados do leitor em um cluster secundário com o encaminhamento de gravação local habilitado. 


| Métrica do CloudWatch | Unidade e descrição | 
| --- | --- | 
|  `AuroraForwardingReplicaCommitThroughput` |  Contagem (por segundo). Número de confirmações em sessões encaminhadas por essa réplica a cada segundo.  | 
|  `AuroraForwardingReplicaDMLLatency` |  Milissegundos. Tempo médio de resposta, em milissegundos, de DMLs encaminhadas na réplica.  | 
|  `AuroraForwardingReplicaDMLThroughput` |  Contagem (por segundo). Número de instruções DML encaminhadas processadas por segundo nessa réplica.  | 
|  `AuroraForwardingReplicaErrorSessionsLimit` |  Contagem. Número de sessões rejeitadas pela instância de banco de dados do gravador por ter atingido o limite máximo de conexões ou o máximo de conexões de encaminhamento de gravação.  | 
|  `AuroraForwardingReplicaOpenSessions`  |  Contagem. O número de sessões que estão usando o encaminhamento de gravação local em uma instância de réplica.  | 
|  `AuroraForwardingReplicaReadWaitLatency` | Milissegundos. Tempo médio de espera, em milissegundos, que a réplica aguarda para ser consistente com o LSN da instância de banco de dados do gravador. O grau em que a instância de banco de dados de leitura aguarda depende da configuração apg\$1write\$1forward.consistency\$1mode. Para obter mais informações sobre essa configuração, consulte [Parâmetros de configuração para o encaminhamento de gravação no Aurora PostgreSQL](aurora-global-database-write-forwarding-apg.md#aurora-global-database-write-forwarding-params-apg).  | 

## Eventos de espera para encaminhamento de gravação local no Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-wait-events-apg"></a>

O Amazon Aurora gera os seguintes eventos de espera quando você usa o encaminhamento de gravação com o Aurora PostgreSQL.

**Topics**
+ [IPC:AuroraWriteForwardConnect](#apg-waits.ipcaurorawriteforwardconnect)
+ [IPC:AuroraWriteForwardConsistencyPoint](#apg-waits.ipcaurorawriteforwardconsistencypoint)
+ [IPC:AuroraWriteForwardExecute](#apg-waits.ipc:aurorawriteforwardexecute)
+ [IPC:AuroraWriteForwardGetGlobalConsistencyPoint](#apg-waits.ipc:aurorawriteforwardgetglobalconsistencypoint)
+ [IPC:AuroraWriteForwardXactAbort](#apg-waits.ipc:aurorawriteforwardxactabort)
+ [IPC:AuroraWriteForwardXactCommit](#apg-waits.ipc:aurorawriteforwardxactcommit)
+ [IPC:AuroraWriteForwardXactStart](#apg-waits.ipc:aurorawriteforwardxactstart)

### IPC:AuroraWriteForwardConnect
<a name="apg-waits.ipcaurorawriteforwardconnect"></a>

O evento `IPC:AuroraWriteForwardConnect` ocorre quando um processo de backend na réplica de leitura está aguardando a abertura de uma conexão com a instância de banco de dados do gravador.

**Possíveis causas do maior número de esperas**

Esse evento aumenta à medida que aumenta o número de tentativas de conexão de uma réplica de leitura no nó do gravador.

**Ações do**

Reduza o número de conexões simultâneas de uma réplica de leitura no nó do gravador.

### IPC:AuroraWriteForwardConsistencyPoint
<a name="apg-waits.ipcaurorawriteforwardconsistencypoint"></a>

O evento `IPC:AuroraWriteForwardConsistencyPoint` descreve por quanto tempo uma consulta de um nó na réplica de leitura aguardará até que os resultados das operações de gravação encaminhadas sejam replicados na região atual. Esse evento só será gerado se o parâmetro do nível da sessão `apg_write_forward.consistency_mode` estiver definido como um dos seguintes casos:
+ `SESSION`: as consultas em uma réplica de leitura aguardam os resultados de todas as alterações feitas nessa sessão.
+ `GLOBAL`: as consultas em uma réplica de leitura aguardam os resultados das alterações feitas por essa sessão, além de todas as alterações confirmadas da instância de banco de dados do gravador e da réplica de leitura.

Para obter informações sobre as configurações do parâmetro `apg_write_forward.consistency_mode`, consulte [Parâmetros de configuração para o encaminhamento de gravação no Aurora PostgreSQL](aurora-global-database-write-forwarding-apg.md#aurora-global-database-write-forwarding-params-apg).

**Possíveis causas do maior número de esperas**

As causas comuns de tempos de espera mais longos incluem o seguinte:
+ Aumento do atraso na réplica, conforme medido pela métrica do Amazon CloudWatch `ReplicaLag`. Para obter mais informações sobre essa métrica, consulte [Monitorar a replicação do Aurora PostgreSQL](AuroraPostgreSQL.Replication.md#AuroraPostgreSQL.Replication.Monitoring).
+ Maior carga na instância de banco de dados do gravador ou na réplica de leitura.

**Ações do**

Altere seu modo de consistência, dependendo dos requisitos da aplicação.

### IPC:AuroraWriteForwardExecute
<a name="apg-waits.ipc:aurorawriteforwardexecute"></a>

O evento `IPC:AuroraWriteForwardExecute` ocorre quando um processo de backend na réplica de leitura está aguardando a conclusão de uma consulta encaminhada e o recebimento dos resultados no nó do gravador do cluster de banco de dados.

**Possíveis causas do maior número de esperas**

As causas típicas incluem:
+ Buscar um grande número de linhas no nó do gravador.
+ O aumento da latência da rede entre o nó do gravador e a réplica de leitura aumenta o tempo necessário para a réplica de leitura receber dados do nó do gravador.
+ O aumento da carga na réplica de leitura pode atrasar a transmissão da solicitação de consulta da réplica de leitura para o nó do gravador.
+ O aumento da carga no nó do gravador pode atrasar a transmissão dos dados do nó do gravador para a réplica de leitura.

**Ações do**

Recomenda-se ações distintas, dependendo dos motivos do evento de espera.
+ Otimize as consultas para recuperar somente os dados necessários.
+ Otimize as operações de linguagem de manipulação de dados (DML) para modificar somente os dados necessários.
+ Se a réplica de leitura ou o nó do gravador estiver limitado pela CPU ou pela largura de banda da rede, pense em alterá-lo para um tipo de instância com maior capacidade de CPU ou maior largura de banda da rede.

### IPC:AuroraWriteForwardGetGlobalConsistencyPoint
<a name="apg-waits.ipc:aurorawriteforwardgetglobalconsistencypoint"></a>

O evento `IPC:AuroraWriteForwardGetGlobalConsistencyPoint` ocorre quando um processo de backend na réplica de leitura que está usando o modo de consistência GLOBAL está esperando para receber o ponto de consistência global do nó do gravador antes de realizar uma consulta.

**Possíveis causas do maior número de esperas**

As causas típicas incluem:
+ O aumento da latência da rede entre a réplica de leitura e o nó do gravador aumenta o tempo necessário para a réplica de leitura receber dados do nó do gravador.
+ O aumento da carga na réplica de leitura pode atrasar a transmissão da solicitação de consulta da réplica de leitura para o nó do gravador.
+ O aumento da carga no nó do gravador pode atrasar a transmissão dos dados do nó do gravador para a réplica de leitura.

**Ações do**

Recomenda-se ações distintas, dependendo dos motivos do evento de espera.
+ Altere seu modo de consistência, dependendo dos requisitos da aplicação.
+ Se a réplica de leitura ou o nó do gravador estiver limitado pela CPU ou pela largura de banda da rede, pense em alterá-lo para um tipo de instância com maior capacidade de CPU ou maior largura de banda da rede.

### IPC:AuroraWriteForwardXactAbort
<a name="apg-waits.ipc:aurorawriteforwardxactabort"></a>

O evento `IPC:AuroraWriteForwardXactAbort` ocorre quando um processo de backend na réplica de leitura está aguardando o resultado de uma consulta de limpeza remota. As consultas de limpeza são emitidas para retornar o processo ao estado apropriado após a interrupção de uma transação por gravação. O Amazon Aurora as executa porque um erro foi encontrado ou porque um usuário emitiu um comando `ABORT` explícito ou cancelou uma consulta em execução.

**Possíveis causas do maior número de esperas**

As causas típicas incluem:
+ O aumento da latência da rede entre a réplica de leitura e o nó do gravador aumenta o tempo necessário para a réplica de leitura receber dados do nó do gravador.
+ O aumento da carga na réplica de leitura pode atrasar a transmissão da solicitação de consulta de limpeza da réplica de leitura para o nó do gravador.
+ O aumento da carga no nó do gravador pode atrasar a transmissão dos dados do nó do gravador para a réplica de leitura.

**Ações do**

Recomenda-se ações distintas, dependendo dos motivos do evento de espera.
+ Investigue a causa da transação abortada.
+ Se a réplica de leitura ou a instância de banco de dados do gravador estiver limitada pela CPU ou pela largura de banda da rede, pense em alterá-la para um tipo de instância com maior capacidade de CPU ou maior largura de banda da rede.

### IPC:AuroraWriteForwardXactCommit
<a name="apg-waits.ipc:aurorawriteforwardxactcommit"></a>

O evento `IPC:AuroraWriteForwardXactCommit` ocorre quando um processo de backend na réplica de leitura está aguardando o resultado de um comando de confirmação de transação encaminhado.

**Possíveis causas do maior número de esperas**

As causas típicas incluem:
+ O aumento da latência da rede entre a réplica de leitura e o nó do gravador aumenta o tempo necessário para a réplica de leitura receber dados do nó do gravador.
+ O aumento da carga na réplica de leitura pode atrasar a transmissão da solicitação de consulta da réplica de leitura para o nó do gravador.
+ O aumento da carga no nó do gravador pode atrasar a transmissão dos dados do nó do gravador para a réplica de leitura.

**Ações do**

Se a réplica de leitura ou o nó do gravador estiver limitado pela CPU ou pela largura de banda da rede, pense em alterá-lo para um tipo de instância com maior capacidade de CPU ou maior largura de banda da rede.

### IPC:AuroraWriteForwardXactStart
<a name="apg-waits.ipc:aurorawriteforwardxactstart"></a>

O evento `IPC:AuroraWriteForwardXactStart` ocorre quando um processo de backend na réplica de leitura está aguardando o resultado de um comando de início de transação encaminhado.

**Possíveis causas do maior número de esperas**

As causas típicas incluem:
+ O aumento da latência da rede entre a réplica de leitura e o nó do gravador aumenta o tempo necessário para a réplica de leitura receber dados do nó do gravador.
+ O aumento da carga na réplica de leitura pode atrasar a transmissão da solicitação de consulta da réplica de leitura para o nó do gravador.
+ O aumento da carga no nó do gravador pode atrasar a transmissão dos dados do nó do gravador para a réplica de leitura.

**Ações do**

Se a réplica de leitura ou o nó do gravador estiver limitado pela CPU ou pela largura de banda da rede, pense em alterá-lo para um tipo de instância com maior capacidade de CPU ou maior largura de banda da rede.