En esta página, se describe cómo usar las estadísticas de bloqueo y las 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 bloqueos 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 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 generan latencias altas guiándote a través de los siguientes pasos:
- Verifica si hay un aumento repentino en las latencias con la supervisión de Spanner.
- Verifica si hay problemas de contención de bloqueo con las estadísticas de bloqueo.
- Identifica las transacciones problemáticas con las estadísticas de transacciones.
Precios
No se aplican costos adicionales por las estadísticas de bloqueo ni de transacciones.
Configuraciones de región
Las estadísticas de bloqueo y las estadísticas de transacciones están disponibles en las configuraciones regionales y multirregionales.
Retención de datos
La retención máxima de datos 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 de estadísticas de bloqueos y transacciones, pídele a tu administrador que te otorgue los siguientes roles de IAM en la instancia:
-
Visualizador de Cloud Spanner (
roles/spanner.viewer
) -
Lector de base de datos de Cloud Spanner (
roles/spanner.databaseReader
)
Para ver la página de estadísticas de bloqueos y transacciones, se requieren los siguientes permisos en el rol de Lector de bases de datos de Cloud Spanner (
roles/spanner.databaseReader
):
spanner.databases.beginReadOnlyTransaction
spanner.databases.select
spanner.sessions.create
Usuario del control de acceso detallado
Si eres un usuario del 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 detallado y se les otorga el rol del sistema
spanner_sys_reader
o uno de sus roles de miembro. - Selecciona
spanner_sys_reader
o un rol de miembro como tu rol de 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.
Cómo verificar si hay un aumento repentino en las latencias con Spanner Monitoring
Puedes usar Cloud Monitoring para configurar alertas de 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 confirmarla en el panel de supervisión de Spanner, que muestra gráficos de varias métricas importantes. El gráfico Latencia te ayuda a ver las 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:
En la consola de Google Cloud, ve a la página Instancias de Spanner.
Haz clic en el nombre de la instancia .
La consola de Google Cloud muestra una descripción general de la instancia.
En el menú de navegación, haz clic en Monitoring.
En la consola de Google Cloud, se muestran gráficos de datos de la instancia.
En el gráfico Latencia, establece Función en
Write
y Percentil en99th
.Revisa el gráfico actualizado para ver si muestra algún aumento repentino.
Si observas que la utilización de la CPU no aumenta y que los errores aumentan en las operaciones por segundo, es probable que los aumentos repentinos de latencia se deban a las contentiones de bloqueo.
Cómo verificar si hay problemas de contención de bloqueo con las 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 la contención de bloqueos.
Verifica si hay un tiempo de espera de bloqueo alto
Para verificar si hay un tiempo de espera de bloqueo alto, sigue estos pasos:
Haz clic en Bloquear estadísticas en el menú de navegación.
La consola de Google Cloud muestra el gráfico Total lock wait, que muestra el tiempo de espera de bloqueo de cada base de datos en la instancia.
Los datos que se muestran son de
1 hour
de forma predeterminada, como se muestra en el selector de hora de la esquina superior derecha del panel de estadísticas de bloqueo. Para ver los datos de un rango más amplio, selecciona otra opción, como1 day
.Para obtener más información, consulta Cómo trabajar con gráficos.
En el selector Bases de datos que se encuentra en la parte superior, selecciona la base de datos que muestra el tiempo de espera de bloqueo más alto.
El gráfico Total de tiempo de espera de bloqueo se actualiza para mostrar datos solo de la base de datos seleccionada.
Además, otro gráfico, Tiempo de bloqueo por rango de filas, muestra gráficos del tiempo de bloqueo por rangos de filas.
Haz clic en el gráfico y arrástralo horizontalmente para expandir la hora en la que se ve un aumento repentino de latencia.
Analiza los datos de espera de bloqueo
En la tabla Información del bloqueo, se muestran las siguientes columnas de las tablas del sistema SPANNER_SYS.LOCK_STATS
:
- 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. - Espera de bloqueo: Es el tiempo total de espera de bloqueo representado visualmente en una barra horizontal. 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 bloqueo (segundos): Es el tiempo de espera acumulado de los conflictos de bloqueo registrados para todas las columnas del rango de clave de fila, en segundos.
- Tiempo de espera de bloqueo (%): Es el tiempo de espera de los conflictos de bloqueo registrados para todas las columnas del intervalo de clave de fila como un porcentaje del tiempo de espera de bloqueo total para todos los intervalos de clave de fila de la base de datos.
Para correlacionar los datos del gráfico Espera de bloqueo 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 en la tabla para ver la línea relacionada en el gráfico.
Para filtrar los datos de la tabla, haz lo siguiente:
Haz clic en el cuadro de texto junto a Filtrar.
Selecciona una propiedad, un operador y especifica un valor.
La tabla muestra los datos que coinciden con el filtro.
Consulta solicitudes de bloqueo de muestra
En el panel Sample lock requests, se muestran detalles sobre las solicitudes de bloqueo de muestra de las transacciones en conflicto.
Para ver la información de la solicitud de bloqueo de muestra de una clave de inicio de 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 columna de muestra: Es la columna que encontró el conflicto de bloqueo en el rango de clave de fila.
- Modo bloqueado: Es el modo bloqueado solicitado.
- Ver transacciones: Es un vínculo a la página Estadísticas de transacciones, que muestra las transacciones que podrían estar en conflicto por bloqueos.
Identifica las transacciones en conflicto con las estadísticas de transacciones
El panel Información sobre 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 las contiendas de bloqueo.
Consulta las latencias de las transacciones
Para ver la latencia de las transacciones, sigue estos pasos:
Haz clic en Estadísticas de transacciones en el panel de navegación izquierdo.
En el selector Bases de datos que se encuentra 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 de la esquina superior derecha del panel Información sobre transacciones.
En el panel, se muestran los siguientes gráficos:
En el gráfico Latencia promedio (todas las transacciones), se 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.
Analiza los datos de las transacciones
Puedes ver y analizar los datos de cada transacción en la tabla que aparece debajo de los gráficos. En la tabla, se muestran los datos de métricas de las tablas del sistema SPANNER_SYS.TXN_STATS
en las siguientes columnas:
- Huella digital: Es el hash de la etiqueta de transacción, si existe. De lo contrario, el hash se calcula según 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. 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.
- Table.column Read: Son las columnas de las que lee la transacción.
- Table.column Written: Son las columnas en las que la transacción escribió.
- Latencia promedio (segundos): Es el promedio de segundos necesarios para realizar la transacción. De forma predeterminada, la tabla se ordena por esta columna de forma 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. La fila correspondiente de la tabla aparecerá destacada.
Para filtrar los datos de la tabla, haz lo siguiente:
Haz clic junto a Filtrar.
Selecciona una propiedad, un operador y especifica un valor.
La tabla muestra los datos que coinciden con el filtro.
Consultar 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 Fingerprint en la fila correspondiente de la tabla.
Aparecerá la página Detalles de la transacción. Además de la tabla de detalles en la parte superior, se 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 que se tarda desde la primera operación de la transacción para confirmar o anular.
- Latencia de confirmación promedio: Es el promedio de segundos necesarios para realizar la operación de confirmación.
- Recuento total de intentos: Es la cantidad total de intentos de transacción.
- Cantidad de abortos totales: Es la cantidad total de intentos de transacción que se abortaron, incluidos los que se abortaron antes de llamar al método de confirmación de la transacció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.
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.