Identificar transacciones que podrían causar latencias altas

En esta página, se describe cómo usar las estadísticas de bloqueo Estadísticas de transacciones para identificar las transacciones que generan latencias.

Descripción general

Para garantizar la coherencia de varias transacciones simultáneas Spanner usa bloqueos para controlar el acceso a los datos. La contención de bloqueo se produce cuando muchas transacciones requieren un acceso frecuente a la misma cerradura, lo que genera latencias altas. Sin un visual, puede ser tedioso identificar las transacciones problemáticas que generan una gran cantidad de problemas de contención de bloqueo.

Las operaciones de Spanner adquieren bloqueos cuando son parte de un read-write. Las transacciones de solo lectura no adquieren bloqueos.

Spanner te ayuda a identificar las transacciones que generan latencias altas guiándote en los siguientes pasos:

  1. Comprueba si hay un aumento repentino en las latencias con Spanner Monitoring.
  2. Comprueba si hay problemas de contención de bloqueo con las estadísticas de bloqueo.
  3. Identifica las transacciones problemáticas con las estadísticas de transacciones.

Precios

No hay costos adicionales por las estadísticas de bloqueo ni de transacciones.

Parámetros de configuración de región

Las estadísticas de bloqueo y de transacciones están disponibles en regionales y multirregionales.

Retención de datos

La retención máxima de datos para los datos que se muestran en el Los paneles Estadísticas de bloqueo y Estadísticas de transacciones son de 30 días. Para los gráficos, los datos se recuperan de tablas SPANNER_SYS.*, que tienen una retención máxima de 30 días.

Para obtener más información sobre estas tablas y la retención de datos, consulta Estadísticas de bloqueo y Estadísticas de transacciones.

Roles obligatorios

Necesitas distintos roles y permisos de IAM en función de si un usuario de IAM o un usuario de control de acceso detallado.

Usuario de Identity and Access Management (IAM)

Si quieres obtener los permisos necesarios para ver la página Estadísticas de bloqueo y transacción, sigue estos pasos: solicita a tu administrador que te otorgue el los siguientes roles de IAM en la instancia:

Se requieren los siguientes permisos de la función Lector de bases de datos de Cloud Spanner (roles/spanner.databaseReader) para ver la página Estadísticas de bloqueo y transacción:

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

Usuario con control de acceso detallado

Si eres un usuario de control de acceso detallado, asegúrate de hacer lo siguiente:

  • Tener el Visualizador de Cloud Spanner(roles/spanner.viewer)
  • Solo tienen privilegios de control de acceso detallados y se les otorga spanner_sys_reader. rol de sistema o uno de sus roles miembros.
  • Selecciona las funciones de spanner_sys_reader o de miembros como tu función del sistema actual en la página de descripción general de la base de datos.

Para obtener más información, consulta Acerca del control de acceso detallado y Roles de sistema de control de acceso detallados.

Comprueba si hay un aumento repentino en las latencias con Spanner Monitoring

Puedes usar Cloud Monitoring para configurar alertas para métricas que superen umbrales para todas las solicitudes.

Si recibes una alerta que indica un aumento repentino en las latencias puedes confirmarla en el Spanner Panel de supervisión, que muestra gráficos para varias métricas importantes. El gráfico Latencia te ayuda a ver los valores latencias en los percentiles 50 y 99.

Para confirmar un aumento repentino en las latencias de escritura en el percentil 99, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Instancias de Spanner.

    Ir a Instancias de Spanner

  2. Haz clic en el nombre de la instancia .

    En la consola de Google Cloud, se muestra una descripción general de la instancia.

  3. Haz clic en Monitoring en el menú de navegación.

    La consola de Google Cloud muestra gráficos de datos de instancia.

  4. En el gráfico Latencia, establece Función en Write y Percentil en 99th.

  5. Consulta el gráfico actualizado para comprobar si muestra algún aumento.

Un grafo que muestra las latencias de escritura en el percentil 99

Si observas que el uso de CPU no tiene aumentos repentinos y que los errores aumentan por segundo, es probable que los picos de latencia se deban al bloqueo conflictos.

Comprueba si hay problemas de contención de bloqueo con las estadísticas de bloqueo

El panel Estadísticas de bloqueo te ayuda a ver el tiempo de espera del bloqueo en una o una base de datos seleccionada. Puede ayudarte a confirmar si las latencias altas debido a conflictos de bloqueo.

Comprueba el tiempo de espera alto del bloqueo

Para comprobar el tiempo de espera alto del bloqueo, sigue estos pasos:

  1. Haz clic en Bloquear estadísticas en el menú de navegación.

    La consola de Google Cloud muestra el Tiempo de bloqueo total gráfico, en el que se muestra el tiempo de espera de bloqueo de cada base de datos en la instancia.

    Los datos que se muestran corresponden a 1 hour de forma predeterminada, como el selector de hora del Se muestra la esquina superior derecha del panel de estadísticas de la cerradura. Cómo ver datos para un rango más amplio, selecciona otra opción, como 1 day.

    Para obtener más información, consulta Trabaja con gráficos.

  2. En el selector Bases de datos de la parte superior, selecciona la base de datos que se muestra. el tiempo de espera de bloqueo más alto.

    El gráfico Tiempo de bloqueo total se actualiza para mostrar solo los datos de la base de datos seleccionada.

    Además, otro gráfico, Bloqueo de espera por rango de filas, muestra gráficos de tiempo de espera de bloqueo por rangos de filas

  3. Haz clic en el gráfico y arrástralo horizontalmente para ampliar la hora en la que el aumento repentino de la demanda.

El panel Estadísticas de bloqueo

Analiza los datos de espera de bloqueo

En la tabla Bloquear estadísticas, se muestran las siguientes columnas de la SPANNER_SYS.LOCK_STATS del sistema:

  • Clave de inicio del rango de filas: Es la clave de fila en la que ocurrió el conflicto de bloqueo. Cuándo el conflicto implica un rango de filas, el valor representa la clave inicial de el rango. Un signo más (+) significa un rango.
  • Tiempo de espera de bloqueo: Es el tiempo total de espera de bloqueo representado de forma visual en una barra horizontal. De de forma predeterminada, la tabla usa esta columna para ordenar y muestra la clave de inicio del rango de filas con el tiempo de espera de bloqueo más alto en la parte superior.
  • Tiempo de espera de bloqueo (segundos): El tiempo de espera de bloqueo acumulado de los conflictos de bloqueo registrados. para todas las columnas del rango de clave de fila, en segundos.
  • Tiempo de espera de bloqueo (%): Indica el tiempo de espera de los conflictos de bloqueo registrados para todos. columnas en el rango de clave de fila como un porcentaje del tiempo de espera total de bloqueo para todos en los rangos de clave de fila de la base de datos.

Para correlacionar los datos del gráfico Bloqueo de espera por rango de filas con los datos de la tabla, selecciona una línea. La fila relacionada aparecerá destacada. Por el contrario, selecciona la casilla de verificación de una fila de la tabla para ver la línea relacionada en el gráfico.

La tabla de estadísticas de bloqueo

Para filtrar los datos en la tabla, haz lo siguiente:

  1. Haz clic en el cuadro de texto junto a Filtro.

  2. Selecciona una propiedad, un operador y especifica un valor.

En la tabla, se muestran los datos que coinciden con el filtro.

Ver ejemplos de solicitudes de bloqueo

En el panel Solicitudes de bloqueo de muestra, se muestran detalles sobre el bloqueo de muestra solicitudes de transacciones rivales.

Para ver información de solicitud de bloqueo de muestra de una clave de inicio del rango de filas, haz clic en el vínculo relacionado en la tabla.

La tabla muestra las siguientes columnas de información:

  • Ejemplo de nombre de columna: Es la columna que encontró el bloqueo. conflicto en el rango de clave de fila.
  • Modo bloqueado: Es el modo bloqueado solicitado.
  • Ver transacciones: Un vínculo a la página Estadísticas de transacciones, que muestra las transacciones que podrían estar compitiendo por los bloqueos.

La página de detalles de las estadísticas de bloqueo

Identifica las transacciones rivales con las estadísticas de transacciones

El panel Estadísticas de transacciones te permite ver la latencia de las transacciones en una instancia o una base de datos seleccionada. Te puede ayudar a identificar las transacciones lo que podría generar latencias altas debido a las contenciones de bloqueo.

Visualiza las latencias de las transacciones

Para consultar la latencia de las transacciones, sigue estos pasos:

  1. Haz clic en Estadísticas de transacciones en el panel de navegación izquierdo.

  2. En el selector Bases de datos de la parte superior, selecciona la base de datos que se muestra. el tiempo de espera de bloqueo más alto.

    Como alternativa, en el panel Estadísticas de bloqueo, haz clic en Ver transacciones para filtrar transacciones que leen o escriben a un columna de muestra.

    Los datos que se muestran corresponden a 1 hour de forma predeterminada, como el selector de hora del Se muestra la esquina superior derecha del panel Estadísticas de transacciones.

En el panel, se muestran los siguientes gráficos:

  • El gráfico Latencia promedio (todas las transacciones) muestra la latencia de todas transacciones en la instancia.

  • El gráfico Latencia promedio (por transacción) muestra la latencia de cada para la base de datos seleccionada.

El panel Estadísticas de transacciones

Analiza los datos de las transacciones

Puedes ver y analizar los datos de cada transacción en la tabla ubicada debajo de la gráficos. En la tabla, se muestran los datos de métricas de SPANNER_SYS.TXN_STATS. del sistema en las siguientes columnas:

  • Huella digital: Es el hash de la etiqueta de transacción, si existe. De lo contrario, el hash se calcula con base en las operaciones involucradas en la transacción. El valor es un vínculo que dirige a la página Detalles de la transacción.
  • Etiqueta de transacción: Es la etiqueta de transacción opcional. para la transacción. Datos estadísticos para varias transacciones que tienen la misma etiqueta cadena se agrupa en una sola fila, donde la etiqueta TRANSACTION_TAG coincide con la cadena de etiquetas.
  • Tablas afectadas: Son las tablas afectadas por la transacción.
  • Lectura de tabla.columna: Las columnas desde las que se lee la transacción.
  • Escritura de tabla.columna: Las columnas en las que se escribió la transacción.
  • Latencia promedio (segundos): Promedio de segundos que se tarda en realizar la transacción. De forma predeterminada, la tabla se ordena por esta columna en orden descendente.

Para correlacionar los datos del gráfico Latencia promedio (por transacción) con el datos de la tabla, selecciona una línea del gráfico. La fila correspondiente de la tabla aparecerá destacado.

Para filtrar los datos en la tabla, haz lo siguiente:

  1. Haz clic junto a Filtro.

  2. Selecciona una propiedad, un operador y especifica un valor.

En la tabla, se muestran los datos que coinciden con el filtro.

La tabla Estadísticas de transacciones

Visualiza información detallada sobre una transacción

Para ver información detallada sobre una transacción, como la que muestra el la latencia más alta, haz clic en el vínculo de huella digital en la fila correspondiente de la tabla.

Se abrirá la página Detalles de la transacción. Además de la tabla de detalles en la parte superior, en él se muestra la siguiente información:

  • Una barra que muestra valores numéricos para cada una de estas métricas:

    • Promedio de bytes: Es la cantidad promedio de bytes que escribe la transacción.
    • Latencia promedio: el promedio de segundos transcurridos desde la primera operación de la para confirmar o anular una transacción.
    • Latencia de confirmación promedio: Promedio de segundos que se tarda en realizar la operación de confirmación.
    • Recuento total de intentos: Es la cantidad total de intentos de transacción.
    • Recuento total de anulaciones: Es la cantidad total de intentos de transacción que anuladas, incluidas aquellas que se anulan antes de llamar al método de confirmación.
  • Gráficos que representan estos valores.

    Además, el gráfico Participantes promedio muestra la cantidad promedio de participantes en cada intento de confirmación.

La página Detalles de las estadísticas de transacciones

Investiga si la forma de la transacción se puede optimizar para reducir las latencias. Considera aplicar las prácticas recomendadas para reducir la contención de bloqueo.

Qué sigue