LWLock:buffer_content (BufferContent) - Amazon Relational Database Service

LWLock:buffer_content (BufferContent)

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.

Versiones del motor admitidas

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

Contexto

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

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

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.

Mejorar la eficiencia en memoria

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 .

Reducir el uso de restricciones de clave externa

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

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

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.