LWLock:buffer_mapping - Amazon Aurora

LWLock:buffer_mapping

Este evento se produce cuando una sesión espera asociar un bloque de datos con un búfer en el grupo de búferes compartidos.

nota

Este evento aparece como LWLock:buffer_mapping en la versión 12 de Aurora PostgreSQL e inferior, y LWLock:BufferMapping en la versión 13 y posterior.

Versiones del motor admitidas

La información del evento de espera es relevante para Aurora PostgreSQL versión 9.6 y posterior.

Contexto

El grupo de búferes compartidos es un área de memoria de Aurora PostgreSQL que contiene todas las páginas que se están o se estaban utilizando por los procesos. Cuando un proceso necesita una página, lee la página en el grupo de búferes compartidos. El parámetro shared_buffers establece el tamaño del búfer compartido y reserva un área de memoria para almacenar las páginas de tablas e índices. Si cambia este parámetro, asegúrese de reiniciar la base de datos. Para obtener más información, consulte Búferes compartidos .

El evento de espera LWLock:buffer_mapping ocurre en los siguientes escenarios:

  • Un proceso busca una página en la tabla de búferes y adquiere un bloqueo de asignación de búferes compartidos.

  • Un proceso carga una página en el grupo de búferes y adquiere un bloqueo de asignación de búferes exclusivo.

  • Un proceso elimina una página del grupo y adquiere un bloqueo de asignación de búferes exclusivo.

Causas

Cuando este evento aparece más de lo normal, lo que puede indicar un problema de rendimiento, la base de datos entra y sale del grupo de búferes compartidos. Las causas típicas son las siguientes:

  • Consultas grandes

  • Índices y tablas sobrecargados

  • Escaneos completos de tablas

  • Un tamaño del grupo compartido menor que el conjunto de trabajo

Acciones

Recomendamos diferentes acciones en función de las causas del evento de espera.

Monitorear las métricas relacionadas con el buffer

Cuando las esperas de LWLock:buffer_mapping se disparan, hay que investigar la tasa de aciertos del búfer. Puede utilizar estas métricas para comprender mejor lo que ocurre en la caché del búfer. Examina las siguientes métricas:

BufferCacheHitRatio

Esta métrica de Amazon CloudWatch mide el porcentaje de solicitudes que se atienden en la caché del búfer de una instancia de base de datos en su clúster de base de datos. Es posible que esta métrica disminuya en el periodo previo al evento de espera LWLock:buffer_mapping.

blks_hit

Esta métrica del contador de Información sobre rendimiento indica el número de bloques que se recuperaron del grupo de búferes compartidos. Después de que aparezca el evento de espera LWLock:buffer_mapping, se puede observar un pico en blks_hit.

blks_read

Esta métrica del contador de Información sobre rendimiento indica el número de bloques que requirieron E/S para leerse en el grupo de búferes compartidos. Puede observar un pico en blks_read en el periodo previo al evento de espera LWLock:buffer_mapping.

Evaluar la estrategia de indexación

Para confirmar que la estrategia de indexación no disminuye el rendimiento, verifique lo siguiente:

Sobrecarga del índice

Asegúrese de que el índice y la sobrecarga de la tabla no provocan la lectura de páginas innecesarias en el búfer compartido. Si las tablas contienen filas que no se utilizan, considere la posibilidad de archivar los datos y eliminar las filas de las tablas. A continuación, puede reconstruir los índices para las tablas redimensionadas.

Índices para consultas de uso frecuente

Para determinar si cuenta con los índices óptimos, monitoree las métricas del motor de base de datos en Información sobre rendimiento. La métrica tup_returned muestra el número de filas leídas. La métrica tup_fetched muestra el número de filas devueltas al cliente. Si tup_returned es mucho mayor que tup_fetched, es posible que los datos no estén bien indexados. Además, es posible que las estadísticas de la tabla no se encuentren actualizadas.

Reducir el número de búferes que deben ser asignados rápidamente

Para reducir los eventos de espera de LWLock:buffer_mapping, intente reducir el número de búferes que se deben asignar de forma rápida. Una estrategia es hacer operaciones por lotes más pequeños. Se pueden conseguir lotes más pequeños por medio de la partición de las tablas.