

# LWLock:buffer\$1content (BufferContent)
<a name="wait-event.lwlockbuffercontent"></a>

O evento `LWLock:buffer_content` ocorre quando uma sessão aguarda para ler ou gravar uma página de dados na memória enquanto outra sessão fica com a página bloqueada para gravação. No RDS para PostgreSQL 13 e versões superiores, esse evento de espera é chamado de `BufferContent`.

**Topics**
+ [Versões compatíveis do mecanismo](#wait-event.lwlockbuffercontent.context.supported)
+ [Contexto](#wait-event.lwlockbuffercontent.context)
+ [Possíveis causas do maior número de esperas](#wait-event.lwlockbuffercontent.causes)
+ [Ações](#wait-event.lwlockbuffercontent.actions)

## Versões compatíveis do mecanismo
<a name="wait-event.lwlockbuffercontent.context.supported"></a>

Essas informações de eventos de espera são compatíveis com todas as versões do RDS para PostgreSQL.

## Contexto
<a name="wait-event.lwlockbuffercontent.context"></a>

Para ler ou manipular dados, o PostgreSQL os acessa por meio de buffers de memória compartilhada. Para ler a partir do buffer, um processo obtém um bloqueio leve (LWLock) no conteúdo do buffer no modo compartilhado. Para gravar no buffer, ele adquire esse bloqueio no modo exclusivo. Bloqueios compartilhados permitem que outros processos adquiram bloqueios compartilhados simultaneamente nesse conteúdo. Bloqueios exclusivos impedem que outros processos obtenham qualquer tipo de bloqueio nele.

O evento `LWLock:buffer_content` (`BufferContent`) indica que vários processos estão tentando obter um bloqueio no conteúdo de um buffer específico.

## Possíveis causas do maior número de esperas
<a name="wait-event.lwlockbuffercontent.causes"></a>

Quando o evento `LWLock:buffer_content` (`BufferContent`) aparece mais que o normal, possivelmente indicando um problema de performance, as causas típicas incluem:

**Maior número de atualizações simultâneas para os mesmos dados**  
Pode haver um aumento no número de sessões simultâneas com consultas que atualizam o mesmo conteúdo do buffer. Essa contenção pode ser mais evidente em tabelas com vários índices.

**Os dados da workload não estão na memória**  
Quando os dados que a workload ativa está processando não estão na memória, esses eventos de espera podem aumentar. Esse efeito ocorre porque os processos que mantêm bloqueios podem fazer isso por mais tempo enquanto executam operações de E/S de disco.

**Uso excessivo de restrições de chaves externas**  
Restrições de chave externas podem aumentar o tempo durante o qual um processo mantém um bloqueio de conteúdo de buffer. Esse efeito ocorre porque operações de leitura exigem um bloqueio de conteúdo de buffer compartilhado na chave referenciada enquanto esta está sendo atualizada.

## Ações
<a name="wait-event.lwlockbuffercontent.actions"></a>

Recomenda-se ações distintas, dependendo dos motivos do evento de espera. Você pode identificar eventos `LWLock:buffer_content` (`BufferContent`) utilizando o Amazon RDS Performance Insights ou consultando a visualização `pg_stat_activity`.

**Topics**
+ [Melhorar a eficiência na memória](#wait-event.lwlockbuffercontent.actions.in-memory)
+ [Reduzir o uso de restrições de chaves externas](#wait-event.lwlockbuffercontent.actions.foreignkey)
+ [Remover índices não utilizados](#wait-event.lwlockbuffercontent.actions.indexes)
+ [Aumentar o tamanho do cache ao usar sequências](#wait-event.lwlockbuffercontent.actions.sequences)

### Melhorar a eficiência na memória
<a name="wait-event.lwlockbuffercontent.actions.in-memory"></a>

Para aumentar as chances de que os dados da workload ativa estejam na memória, particione tabelas ou aumente a escala da sua classe de instância na vertical. Para obter informações sobre classes de instância de banco de dados, consulte [Classes de instâncias de banco de dados do ](Concepts.DBInstanceClass.md).

### Reduzir o uso de restrições de chaves externas
<a name="wait-event.lwlockbuffercontent.actions.foreignkey"></a>

Investigue workloads com um número elevado de eventos de espera `LWLock:buffer_content` (`BufferContent`) quanto ao uso de restrições de chaves externas. Remova restrições desnecessárias de chaves externas.

### Remover índices não utilizados
<a name="wait-event.lwlockbuffercontent.actions.indexes"></a>

Para workloads com um número elevado de eventos de espera `LWLock:buffer_content` (`BufferContent`), identifique índices não utilizados e remova-os.

### Aumentar o tamanho do cache ao usar sequências
<a name="wait-event.lwlockbuffercontent.actions.sequences"></a>

Se suas tabelas usarem sequências, aumente o tamanho do cache para remover a contenção nas páginas de sequência e nas páginas de índice. Cada sequência é uma única página na memória compartilhada. O cache predefinido é de acordo com a conexão. Isso pode não ser suficiente para lidar com a workload quando muitas sessões simultâneas estão recebendo um valor de sequência. 