

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

El evento `LWLock:buffer_content` ocurre cuando una sesión espera para leer o escribir una página de datos en memoria mientras otra sesión tiene esa página bloqueada para escribir. En RDS para PostgreSQL 13 y versiones posteriores, este evento de espera se llama `BufferContent`.

**Topics**
+ [Versiones del motor admitidas](#wait-event.lwlockbuffercontent.context.supported)
+ [Context](#wait-event.lwlockbuffercontent.context)
+ [Causas probables del aumento de las esperas](#wait-event.lwlockbuffercontent.causes)
+ [Acciones](#wait-event.lwlockbuffercontent.actions)

## Versiones del motor admitidas
<a name="wait-event.lwlockbuffercontent.context.supported"></a>

Esta información de eventos de espera es compatible con todas las versiones de RDS para PostgreSQL.

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

Para leer o manipular datos, PostgreSQL accede a ellos a través de búferes de memoria compartida. Para leer del búfer, un proceso obtiene un bloqueo ligero (LWLock) sobre el contenido del búfer en modo compartido. Para escribir en el búfer, obtiene ese bloqueo en modo exclusivo. Los bloqueos compartidos permiten a otros procesos adquirir simultáneamente bloqueos compartidos sobre ese contenido. Los bloqueos exclusivos impiden que otros procesos obtengan cualquier tipo de bloqueo sobre él.

El evento `LWLock:buffer_content` (`BufferContent`) indica que varios procesos intentan obtener un bloqueo sobre el contenido de un búfer específico.

## Causas probables del aumento de las esperas
<a name="wait-event.lwlockbuffercontent.causes"></a>

Cuando el evento `LWLock:buffer_content` (`BufferContent`) aparece más de lo normal, lo que posiblemente indica un problema de rendimiento, las causas típicas son las siguientes:

**Aumento de las actualizaciones simultáneas de los mismos datos**  
Puede haber un aumento en el número de sesiones concurrentes con consultas que actualizan el mismo contenido del búfer. Esta contención puede ser más pronunciada en tablas con muchos índices.

**Los datos de carga de trabajo no están en la memoria**  
Cuando los datos que la carga de trabajo activa está procesando no están en memoria, estos eventos de espera pueden aumentar. Este efecto se debe a que los procesos que mantienen bloqueos pueden mantenerlos durante más tiempo mientras hacen operaciones de E/S en disco.

**Uso excesivo de restricciones de clave externa**  
Las restricciones de clave externa pueden aumentar el tiempo que un proceso mantiene un bloqueo de contenido de búfer. Este efecto se debe a que las operaciones de lectura requieren un bloqueo de contenido de búfer compartido en la clave referenciada mientras se actualiza dicha clave.

## Acciones
<a name="wait-event.lwlockbuffercontent.actions"></a>

Recomendamos diferentes acciones en función de las causas del evento de espera. Puede identificar los eventos `LWLock:buffer_content` (`BufferContent`) mediante Información sobre rendimiento de Amazon RDS o consultar la vista `pg_stat_activity`.

**Topics**
+ [Mejorar la eficiencia en memoria](#wait-event.lwlockbuffercontent.actions.in-memory)
+ [Reducir el uso de restricciones de clave externa](#wait-event.lwlockbuffercontent.actions.foreignkey)
+ [Eliminar los índices que no se utilizan](#wait-event.lwlockbuffercontent.actions.indexes)
+ [Aumentar el tamaño de la memoria caché al utilizar secuencias](#wait-event.lwlockbuffercontent.actions.sequences)

### Mejorar la eficiencia en memoria
<a name="wait-event.lwlockbuffercontent.actions.in-memory"></a>

Para aumentar la posibilidad de que los datos de la carga de trabajo activa estén en memoria, particione las tablas o escale verticalmente su clase de instancia. Para obtener información acerca de las clases de instancia de base de datos, consulte [Clases de instancia de base de datos de ](Concepts.DBInstanceClass.md).

### Reducir el uso de restricciones de clave externa
<a name="wait-event.lwlockbuffercontent.actions.foreignkey"></a>

Examine las cargas de trabajo que experimentan un elevado número de eventos de espera `LWLock:buffer_content` (`BufferContent`) para comprobar el uso de las restricciones de clave externa. Elimine las restricciones de clave externa innecesarias.

### Eliminar los índices que no se utilizan
<a name="wait-event.lwlockbuffercontent.actions.indexes"></a>

Para las cargas de trabajo que experimentan un gran número de eventos de espera `LWLock:buffer_content` (`BufferContent`), identifique los índices que no se utilizan y elimínelos.

### Aumentar el tamaño de la memoria caché al utilizar secuencias
<a name="wait-event.lwlockbuffercontent.actions.sequences"></a>

Si las tablas usan secuencias, aumente el tamaño de la memoria caché para eliminar la contención en las páginas de secuencias y las páginas de índice. Cada secuencia es una página individual en la memoria compartida. La memoria caché predefinida es por conexión. Es posible que esto no sea suficiente para gestionar la carga de trabajo cuando muchas sesiones simultáneas reciben un valor de secuencia. 