Identificar las transacciones que pueden provocar latencias altas

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

Información general

Para asegurar la coherencia de varias transacciones simultáneas, Spanner usa bloqueos para controlar el acceso a los datos. La contención de bloqueos se produce cuando muchas transacciones requieren acceso frecuente al mismo bloqueo, lo que provoca latencias altas. Sin una interfaz visual, puede ser tedioso identificar las transacciones problemáticas que provocan un gran número de problemas de contención de bloqueos.

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 provocan latencias altas guiándote por los siguientes pasos:

  1. Comprueba si hay un pico en las latencias con la monitorización de Spanner.
  2. Comprueba si hay problemas de contención de bloqueos con Estadísticas de bloqueos.
  3. Identifica las transacciones problemáticas con las estadísticas de transacciones.

Precios

No hay ningún coste adicional por usar las estadísticas de bloqueos o de transacciones.

Configuraciones regionales

Lock insights y Transaction insights están disponibles en configuraciones regionales y multirregionales.

Conservación de datos

El periodo máximo de conservación de los datos que se muestran en los paneles de control Estadísticas de bloqueo y Estadísticas de transacciones es de 30 días. En el caso de los gráficos, los datos se obtienen de las tablas SPANNER_SYS.*, que tienen un periodo de conservación máximo de 30 días.

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

Roles obligatorios

Necesitas diferentes roles y permisos de gestión de identidades y accesos en función de si eres un usuario de gestión de identidades y accesos o un usuario de control de acceso pormenorizado.

Usuario de Gestión de Identidades y Accesos (IAM)

Para obtener los permisos que necesitas para ver la página Estadísticas de bloqueos y transacciones, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en la instancia:

Para ver la página Estadísticas de bloqueos y transacciones, se necesitan los siguientes permisos del rol Lector de las bases de datos de Cloud Spanner (roles/spanner.databaseReader):

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

Usuario de control de acceso pormenorizado

Si usas el control de acceso pormenorizado, asegúrate de que:

  • Tener el rol Lector de Cloud Spanner(roles/spanner.viewer)
  • Solo tienen privilegios de control de acceso pormenorizado y se les ha asignado el rol de sistema spanner_sys_reader o uno de sus roles miembros.
  • Selecciona spanner_sys_reader o un rol de miembro como rol del sistema actual en la página de resumen de la base de datos.

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

Comprobar un pico de latencias con la monitorización de Spanner

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

Si recibes una alerta que indica un aumento de las latencias de una instancia, puedes confirmarlo en el panel de control de monitorización de Spanner, que muestra gráficos de varias métricas importantes. El gráfico Latencia le ayuda a ver las latencias altas en los percentiles 50 y 99.

Para confirmar un pico 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 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. En el menú de navegación, haga clic en Monitorización.

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

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

  5. Consulta el gráfico actualizado para ver si muestra algún pico.

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

Si observa que el uso de la CPU no aumenta de forma drástica y que los errores sí lo hacen en las operaciones por segundo, es probable que los picos de latencia se deban a las contenciones de bloqueo.

Comprobar si hay problemas de contención de bloqueos con Estadísticas de bloqueos

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

Comprobar si el tiempo de espera de los bloqueos es alto

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

  1. En el menú de navegación, haga clic en Bloquear estadísticas.

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

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

    Para obtener más información, consulta el artículo Trabajar con gráficos.

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

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

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

  3. Haz clic en el gráfico y arrástralo horizontalmente para ampliar la hora en la que se vea un pico de latencia.

Panel de control Estadísticas de bloqueo

Analizar los datos de espera de bloqueo

La tabla Estadísticas de bloqueos muestra las siguientes columnas de las tablas de sistema SPANNER_SYS.LOCK_STATS:

  • Clave de inicio del intervalo de filas: clave de la fila en la que se ha producido el conflicto de bloqueo. Cuando el conflicto implica un intervalo de filas, el valor representa la clave inicial del intervalo. El signo más (+) indica un intervalo.
  • Espera de bloqueo: tiempo total de espera de bloqueo representado visualmente en una barra horizontal. De forma predeterminada, la tabla usa esta columna para ordenar los datos y muestra la clave de inicio del intervalo de filas con el tiempo de espera de bloqueo más alto en la parte superior.
  • Espera de bloqueo (segundos): el tiempo de espera de bloqueo acumulativo de los conflictos de bloqueo registrados en todas las columnas del intervalo de claves de fila, en segundos.
  • Espera de bloqueo (%). Tiempo de espera de los conflictos de bloqueo registrados en todas las columnas del intervalo de claves de fila como porcentaje del tiempo de espera de bloqueo total de todos los intervalos de claves de fila de la base de datos.

Para correlacionar los datos del gráfico Tiempo de espera de bloqueo por intervalo de filas con los datos de la tabla, selecciona una línea. La fila relacionada aparece resaltada. Por el contrario, marque la casilla de una fila de la tabla para ver la línea correspondiente en el gráfico.

Tabla de estadísticas de bloqueo

Para filtrar los datos de la tabla, siga estos pasos:

  1. Haz clic en el cuadro de texto situado junto a Filtrar.

  2. Seleccione una propiedad, un operador y un valor.

La tabla muestra los datos que coinciden con el filtro.

Ver solicitudes de bloqueo de ejemplo

El panel Solicitudes de bloqueo de ejemplo muestra detalles sobre las solicitudes de bloqueo de ejemplo de transacciones en conflicto.

Para ver información de ejemplo sobre una solicitud de bloqueo de una clave de inicio de un intervalo de filas, haga clic en el enlace correspondiente de la tabla.

La tabla muestra las siguientes columnas de información:

  • Nombre de columna de ejemplo: la columna en la que se ha producido el conflicto de bloqueo en el intervalo de claves de fila.
  • Modo de bloqueo: el modo de bloqueo solicitado.
  • Ver transacciones: enlace a la página Estadísticas de transacciones, que muestra las transacciones que pueden estar compitiendo por los bloqueos.

Página de detalles de Información útil sobre el bloqueo

Identificar transacciones en conflicto con la información útil sobre la transacción

El panel de control Estadísticas de transacciones le ayuda a ver la latencia de las transacciones de una instancia o de una base de datos seleccionada. Puede ayudarte a identificar las transacciones que pueden provocar latencias altas debido a conflictos de bloqueo.

Ver las latencias de las transacciones

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

  1. En el panel de navegación de la izquierda, haga clic en Estadísticas de transacciones.

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

    También puede hacer clic en Ver transacciones en el panel de control Estadísticas de bloqueo para filtrar las transacciones de lectura o escritura en una columna de muestra específica.

    De forma predeterminada, se muestran los datos de 1 hour, tal como se indica en el selector de tiempo de la esquina superior derecha del panel de control Estadísticas de transacciones.

En el panel de control se muestran los siguientes gráficos:

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

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

Panel de control Estadísticas de transacciones

Analizar los datos de las transacciones

Puede ver y analizar los datos de cada transacción en la tabla que aparece debajo de los gráficos. La tabla muestra datos de métricas de las tablas de sistema SPANNER_SYS.TXN_STATS en las siguientes columnas:

  • Huella digital: el hash de la etiqueta de transacción, si existe. De lo contrario, el hash se calcula en función de las operaciones que se realicen en la transacción. El valor es un enlace que lleva a la página de detalles de la transacción.
  • Etiqueta de transacción: la etiqueta de transacción opcional de la transacción. Los datos estadísticos de varias transacciones que tienen la misma cadena de etiqueta se agrupan en una sola fila con la etiqueta TRANSACTION_TAG que coincide con la cadena de etiqueta.
  • Tablas afectadas: las tablas afectadas por la transacción.
  • Table.column Read: las columnas de las que ha leído la transacción.
  • Table.column Written: las columnas en las que ha escrito la transacción.
  • Latencia media (segundos): tiempo medio 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 media (por transacción) con los datos de la tabla, selecciona una línea del gráfico. La fila correspondiente de la tabla aparece resaltada.

Para filtrar los datos de la tabla, siga estos pasos:

  1. Haz clic junto a Filtrar.

  2. Seleccione una propiedad, un operador y un valor.

La tabla muestra los datos que coinciden con el filtro.

Tabla Información útil sobre la transacción

Ver 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 enlace Huella digital de la fila correspondiente de la tabla.

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

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

    • Bytes medios: el número medio de bytes escritos por la transacción.
    • Latencia media: el tiempo medio en segundos que transcurre desde la primera operación de la transacción hasta que se confirma o se anula.
    • Latencia media de confirmación: media de los segundos que se tarda en realizar la operación de confirmación.
    • Número total de intentos: número total de intentos de transacción.
    • Número total de cancelaciones: número total de intentos de transacción que se han cancelado, incluidos los que se han cancelado antes de llamar al método de confirmación de la transacción.
  • Gráficos que representan estos valores.

    Además, el gráfico Promedio de participantes muestra el número medio de participantes en cada intento de confirmación.

Página de detalles de las estadísticas de las transacciones

Investiga si se puede optimizar la forma de la transacción para reducir las latencias. Te recomendamos que apliques las prácticas recomendadas para reducir la contención de bloqueos.

Siguientes pasos