Identifica las transacciones que podrían causar latencias altas

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

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 ocurre cuando muchas transacciones requieren acceso frecuente al mismo bloqueo, lo que genera latencias altas. Sin una interfaz 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 forman parte de una transacción de lectura y escritura. Las transacciones de solo lectura no adquieren bloqueos.

Spanner te ayuda a identificar las transacciones que generan latencias altas, ya que te guía a través de los siguientes pasos:

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

Precios

No hay costos adicionales para Estadísticas de bloqueo ni Estadísticas de transacciones.

Configuraciones de región

Estadísticas de bloqueo y Estadísticas de transacciones están disponibles en configuraciones regionales y multirregionales.

Retención de datos

La retención de datos máxima para los datos que se muestran en los paneles de Estadísticas de bloqueo y Estadísticas de transacciones es de 30 días. En el caso de los gráficos, los datos se recuperan de las tablas SPANNER_SYS.*, que tienen un período de retención máximo 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 diferentes roles y permisos de IAM según si eres un usuario de IAM o un usuario de control de acceso detallado.

Usuario de Identity and Access Management (IAM)

Para obtener los permisos que necesitas para ver la página Estadísticas de bloqueo y Estadísticas de transacciones, pídele a tu administrador que te otorgue los siguientes roles de IAM en la instancia:

Se requieren los siguientes permisos en el rol Lector de bases de datos de Cloud Spanner (roles/spanner.databaseReader) para ver la página Estadísticas de bloqueo y Estadísticas de transacciones:

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

Usuario de control de acceso detallado

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

  • Tener el Visualizador de Cloud Spanner(roles/spanner.viewer)
    • Solo tener privilegios de control de acceso detallado y que se te otorgue el rol del sistema spanner_sys_reader o uno de sus roles miembros.
  • Seleccionar spanner_sys_reader o un rol miembro como tu rol del sistema actual en la página de descripción general de la base de datos.

Para obtener más información, consulta Información sobre el control de acceso detallado y Roles del sistema de control de acceso detallado.

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

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

Si recibes una alerta que indica un aumento repentino en las latencias de una instancia, puedes confirmarlo en el panel de Spanner Monitoring, que muestra gráficos de varias métricas importantes. El gráfico de Latencia te ayuda a ver latencias altas 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 Google Cloud consola, ve a la página Instancias de Spanner.

    Ir a las instancias de Spanner

  2. Haz clic en el nombre de la instancia.

    La Google Cloud consola muestra una descripción general de la instancia.

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

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

  4. En el gráfico de Latencia, configura Función como Write y Percentil como 99th.

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

Un gráfico que muestra las latencias de escritura en el percentil 99

Si observas que el uso de CPU no aumenta y los errores aumentan en las operaciones por segundo, es probable que los aumentos repentinos de latencia se deban a las contenciones de bloqueo.

Verifica si hay problemas de contención de bloqueo con Estadísticas de bloqueo

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

Verifica si hay un tiempo de espera de bloqueo alto

Para verificar si hay un tiempo de espera de bloqueo alto, sigue estos pasos:

  1. Haz clic en Estadísticas de bloqueo en el menú de navegación.

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

    Los datos que se muestran son de 1 hour de forma predeterminada, como se muestra en el selector de tiempo en la esquina superior derecha del panel de Estadísticas de bloqueo. Para ver datos de un rango más amplio, selecciona otra opción, como 1 day.

    Para obtener más información, consulta Cómo trabajar con gráficos.

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

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

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

  3. Haz clic en el gráfico y arrastra horizontalmente para expandir la hora en la que se ve un aumento repentino de latencia.

El panel de estadísticas de bloqueo

Analiza los datos de tiempo de espera de bloqueo

En la tabla Estadísticas de bloqueo, se muestran las siguientes columnas de las SPANNER_SYS.LOCK_STATS tablas del sistema:

  • Clave de inicio del rango de filas: Es la clave de fila en la que se produjo el conflicto de bloqueo. Cuando el conflicto involucra un rango de filas, el valor representa la clave de inicio del rango. Un signo más (+) indica un rango.
  • Tiempo de bloqueo: Es el tiempo de espera total de bloqueo representado visualmente en una barra horizontal. De forma predeterminada, la tabla usa esta columna para las ordenaciones 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 bloqueo (segundos): Es el tiempo de espera acumulado de los conflictos de bloqueo registrados para todas las columnas en el rango de clave de fila, en segundos.
  • Tiempo de bloqueo (%): Es el tiempo de espera de los conflictos de bloqueo registrados para todas las columnas en el rango de clave de fila como un porcentaje del tiempo de espera total de bloqueo para todos los rangos de clave de fila en la base de datos.

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

La tabla de estadísticas de bloqueo

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

  1. Haz clic en el campo junto a Filtrar.

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

La tabla muestra los datos que coinciden con el filtro.

Visualiza solicitudes de bloqueo de muestra

En el panel Solicitudes de bloqueo de muestra , se muestran detalles sobre las solicitudes de bloqueo de muestra de las transacciones en contienda.

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

En la tabla, se muestran las siguientes columnas de información:

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

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

Identifica las transacciones en contienda con Estadísticas de transacciones

El panel de Estadísticas de transacciones te ayuda a ver la latencia en las transacciones de una instancia o una base de datos seleccionada. Puede ayudarte a identificar las transacciones que podrían generar latencias altas debido a contenciones de bloqueo.

Visualiza las latencias de las transacciones

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

  1. Haz clic en Estadísticas de transacciones en la navegación de la izquierda.

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

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

    Los datos que se muestran son de 1 hour de forma predeterminada, como se muestra en el selector de tiempo en la esquina superior derecha del panel de 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 las transacciones de la instancia.

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

Panel de estadísticas de transacciones

Analiza los datos de las transacciones

Puedes ver y analizar los datos de cada transacción en la tabla que se encuentra debajo de los gráficos. En la tabla, se muestran datos de métricas de las SPANNER_SYS.TXN_STATS tablas 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 en función de las operaciones involucradas en la transacción. El valor es un vínculo que lleva a la página Detalles de la transacción.
  • Etiqueta de transacción: Es la etiqueta de transacción opcional para la transacción. Los datos estadísticos de varias transacciones que tienen la misma cadena de etiquetas se agrupan en una sola fila con la etiqueta TRANSACTION_TAG que coincide con la cadena de etiquetas.
  • Tablas afectadas: Son las tablas afectadas por la transacción.
  • Lectura de la tabla con columnas: Son las columnas desde las que leyó la transacción.
  • Escritura de la tabla con columnas: Son las columnas en las que escribió la transacción.
  • Latencia promedio (segundos): Es el promedio de segundos necesarios para realizar la transacción. De forma predeterminada, la tabla está ordenada por esta columna en orden descendente.

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

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

  1. Haz clic en junto a Filtrar.

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

La tabla muestra los datos que coinciden con el filtro.

La tabla de 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 la latencia más alta, haz clic en el vínculo Huella digital en la fila respectiva de la tabla.

Aparecerá la página Detalles de la transacción. Además de la tabla de detalles en la parte superior, muestra la siguiente información:

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

    • Bytes promedio: Es la cantidad promedio de bytes que escribió la transacción.
    • Latencia promedio: Es el promedio de segundos tomados de la primera operación de la transacción para confirmar o anular.
    • Latencia promedio de confirmación: Es el promedio de segundos necesarios para realizar la operación de confirmación.
    • Cantidad total de intentos: Es la cantidad total de intentos de transacción. Esta cantidad representa una tasa por minuto. Para obtener más información sobre los intervalos, consulta Estadísticas de transacciones.
    • Cantidad total de anulaciones: Es la cantidad total de intentos de transacción que se anulan, incluidos los intentos que se anulan antes de llamar al método de confirmación de la transacción. Esta cantidad representa una tasa por minuto. Para obtener más información sobre los intervalos, consulta Estadísticas de transacciones.
  • Gráficos que representan estos valores. El gráfico Total de intentos y anulaciones muestra la cantidad o la tasa por minuto de intentos y anulaciones de transacciones. Para mostrar los intentos y las anulaciones de transacciones por minuto, la Google Cloud consola consulta la SPANNER_SYS.TXN_STATS_TOP_* tabla que mejor cubre el período seleccionado (_MINUTE, _10MINUTE o _HOUR). Luego, la Google Cloud consola divide los valores de la ATTEMPT_COUNT columna y la COMMIT_ABORT_COUNT columna de la tabla elegida por la duración del intervalo en minutos (1, 10 o 60) para presentar una tasa por minuto. Para obtener más información sobre los intervalos, consulta Estadísticas de transacciones.

    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 se puede optimizar la forma de la transacción para reducir las latencias. Considera aplicar las prácticas recomendadas para reducir la contención de bloqueo.

Pasos siguientes