Cómo encontrar hotspots en tu base de datos

En este documento, se describe cómo usar el panel de Estadísticas de zonas activas para detectar zonas activas en tu base de datos de Spanner.

Descripción general de las estadísticas de hotspot

Los hotspots provocan latencia en tu base de datos de Spanner. El panel de estadísticas de hotspots te ayuda a detectar las divisiones afectadas por los hotspots. Sigue estos pasos para determinar si los puntos de acceso están causando latencia y, si es así, cómo resolver el problema:

  1. Abre el panel.
  2. Determina si los puntos de acceso requieren tu intervención.
  3. Identifica las divisiones problemáticas de datos frecuentes.

Las estadísticas de Hotspot están disponibles en configuraciones regionales, birregionales y multirregionales.

Precios

No hay costos adicionales por las Estadísticas de Hotspot.

Retención de datos

Las políticas de retención de datos para los gráficos de estadísticas de Hotspot y la tabla de divisiones TopN se basan en las tablas subyacentes de SPANNER_SYS.SPLIT_STATS_TOP_*. Para conocer las políticas de retención específicas, consulta Retención de datos de estadísticas de división en caliente.

Roles obligatorios

Es posible que necesites diferentes permisos y roles de IAM, según si eres un usuario de IAM o un usuario de control de acceso específico.

Usuario de Identity and Access Management (IAM)

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

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

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

Usuario con control de acceso detallado

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

  • Tener el rol de Visualizador de Cloud Spanner (roles/spanner.viewer)
  • Tener privilegios de control de acceso detallado y tener asignado el rol de sistema spanner_sys_reader o uno de sus roles de miembro
  • Selecciona el rol de spanner_sys_reader o de miembro como tu rol actual del sistema en la página Overview de la base de datos.

Para obtener más información, consulta la descripción general del control de acceso detallado y las funciones del sistema de control de acceso detallado.

Abre el panel de Estadísticas de hotspot

En el panel de Estadísticas de puntos críticos, se muestra el porcentaje máximo de uso de CPU de división. Esta métrica es un porcentaje abstracto de 0 a 100 que refleja la cantidad de CPU que se usa cuando se accede a las filas dentro de una división.

Para ver el panel de Estadísticas de hotspot de una base de datos, haz lo siguiente:

  1. En la consola de Google Cloud , abre la página Spanner.

    Ir a Spanner

  2. Elige una instancia de la lista.

  3. En el menú de navegación, haz clic en la pestaña Estadísticas de zonas de interés.

  4. En el campo base de datos, selecciona una base de datos de la lista. En el panel, se muestra la puntuación máxima de uso de CPU de división para la base de datos.

El panel incluye los siguientes elementos:

  • Gráfico de Puntuación de uso de CPU de división máxima: Una puntuación de uso de CPU más alta (como cerca de 100) indica que la división es activa y es muy probable que cause un hotspot en el servidor en comparación con las puntuaciones más bajas.
  • Campo de base de datos: Filtra la información de las divisiones activas en una base de datos específica o en todas las bases de datos.
  • Filtro de período: Filtra el uso de CPU de los segmentos de mayor actividad en incrementos de 1 minuto hasta un total de 6 horas.
  • Tabla de divisiones de TopN: Muestra la lista de las principales divisiones ordenadas por las puntuaciones de uso de CPU de división.

El panel de Hotspot Insights en Spanner, que muestra un gráfico del uso máximo de CPU de la división, un selector de bases de datos, un filtro de intervalo de tiempo y una tabla de las principales N divisiones activas.

Cómo comprender los datos de la tabla TopN Splits: La tabla TopN Splits se completa con datos de las tablas subyacentes de SPANNER_SYS.SPLIT_STATS_TOP_* según el período que selecciones. Para obtener más información, consulta Retención de datos de estadísticas de división activa.

Cómo interpretar las filas de las tablas 10MINUTE o HOUR: Las filas provenientes de SPANNER_SYS.SPLIT_STATS_TOP_10MINUTE o SPANNER_SYS.SPLIT_STATS_TOP_HOUR representan datos agregados en sus respectivos intervalos. Como se describe en Agregación de eventos de tabla, el CPU_USAGE_SCORE en estas filas es la puntuación máxima que se observó en cualquier subintervalo subyacente de 1 minuto, y UNSPLITTABLE_REASONS es una unión de motivos.

Determina si las ubicaciones con grandes cantidades de casos confirmados requieren intervención

Si ves un aumento repentino o una elevación en el gráfico que corresponde a la latencia general y una puntuación alta persistente del uso de CPU de división máxima, es posible que debas investigar más.

Revisa el gráfico para explorar estas preguntas:

  • ¿Qué base de datos experimenta la degradación de la latencia? Selecciona bases de datos diferentes en la lista Bases de datos para encontrar las bases de datos con la latencia más alta. Para saber qué base de datos tiene la carga más alta, también puedes revisar el gráfico de latencia de las bases de datos en la consola de Google Cloud .

    Un gráfico de líneas titulado "Puntuación máxima de uso de CPU de división", que muestra la puntuación máxima de uso de CPU de división a lo largo del tiempo. En el gráfico, se muestra un aumento repentino, lo que puede indicar un punto de acceso y posibles problemas de latencia.

  • ¿La latencia es alta? ¿La latencia es alta en comparación con la latencia esperada para la carga de trabajo? ¿El gráfico aumenta o se incrementa con el tiempo? Si no ves una latencia alta, los puntos de acceso no son un problema.

  • ¿La puntuación máxima de uso de CPU de división alta es del 100%? ¿El gráfico aumenta o se incrementa con el tiempo? Si no ves porcentajes de uso de CPU dividida máximos persistentes del 100% durante al menos 10 minutos, es posible que los puntos calientes no sean un problema. Si el porcentaje de uso máximo de la CPU dividida es alto durante más de 10 minutos, es posible que desees investigar más a fondo para ver si la base de datos tiene niveles de latencia más altos de lo esperado.

Si ves porcentajes de uso de CPU de división máxima del 100% durante más de 10 minutos, es posible que los hotspots requieran tu intervención. A continuación, puedes continuar el proceso de depuración identificando las divisiones activas en tu base de datos.

Identifica las divisiones problemáticas de los datos

Para identificar una división potencialmente problemática que tiene puntos calientes, consulta la sección TopN splits en la consola de Google Cloud , como se muestra a continuación.

Una tabla de las "divisiones TopN" en Spanner, que enumera las divisiones potencialmente problemáticas. La tabla incluye columnas para “Fin del intervalo”, “Inicio de la división”, “Límite de división”, “Puntuación de uso de CPU dividida”, “Tablas afectadas” y “Motivos por los que no se puede dividir”.

La tabla TopN splits proporciona una descripción general de las divisiones que podrían tener actividad durante el período seleccionado, ordenadas de más reciente a más antigua. La cantidad de divisiones de TopN se limita a 100.

En el caso de los gráficos, Spanner recupera datos de la tabla de estadísticas de divisiones TopN, con un nivel de detalle de un minuto. El valor de cada punto de datos en los gráficos representa el valor promedio durante un intervalo de un minuto.

En la tabla, se muestran las siguientes propiedades:

  • Final del intervalo: Es la fecha y hora en que finaliza el uso máximo de la CPU.
  • Inicio de la división: Es la clave inicial del rango de filas en la división. Si el inicio de la división es <begin>, indica el inicio del rango de claves de la base de datos.
  • Límite de división: Es la clave de límite del rango de filas en la división. Si la clave de límite es <end>, indica el final del rango de claves de la base de datos.
  • Puntuación de uso de CPU dividida: Es una puntuación abstracta entre 0 y 100 que refleja la cantidad de CPU que se usa en los accesos a las filas dentro de la división en un solo servidor. Usa la puntuación de uso de la CPU para evaluar si tienes hotspots.
  • Tablas afectadas: Son las tablas cuyas filas podrían estar en la división.
  • Unsplittable reasons: Es un array de motivos por los que Spanner no puede dividir más una división activa. La presencia de valores aquí indica que la división basada en la carga no puede mitigar el punto de acceso por los motivos que se indican. Para obtener más información, consulta los tipos de UNSPLITTABLE_REASONS.

Analiza los motivos de no división

La tabla TopN splits te permite desglosar qué divisiones específicas se ven afectadas por estos motivos en momentos determinados, como se muestra en la columna Unsplittable reasons.

Ejemplo de flujo de trabajo de diagnóstico

A continuación, se muestra un flujo de trabajo típico para depurar los puntos de acceso con el panel:

  1. Observa el problema de rendimiento: Observa un aumento en la latencia o errores en tu aplicación.
  2. Abre Hotspot insights: Navega al panel de Hotspot insights en la consola de Google Cloud para la base de datos de Spanner pertinente. Selecciona el período correspondiente al problema.
  3. Examina el gráfico:
    • Verifica el gráfico de Puntuación máxima de uso de CPU de división para detectar valores altos sostenidos, por ejemplo, superiores al 50%, especialmente si se acercan al 100% durante al menos 10 minutos.
  4. Identifica las divisiones afectadas y correlaciona los hallazgos: Si el uso de CPU es alto, ve a la tabla TopN splits. Filtra o ordena para encontrar las divisiones con la mayor puntuación de uso de CPU de división durante el período de impacto. Verifica la columna UNSPLITTABLE_REASONS para estos segmentos principales:
    • Puntuación alta de uso de CPU de la división y motivos por los que no se puede dividir: Este es un indicador sólido de que el problema de rendimiento está relacionado con los hotspots que Spanner no puede resolver automáticamente. El tipo de motivo, como HOT_ROW o MOVING_HOT_SPOT, proporciona una pista crucial.
    • Puntuación alta de uso de CPU de división y sin motivos de no división: Es posible que el punto de acceso sea nuevo y que Spanner aún esté en proceso de división. Como alternativa, el problema podría deberse a cambios en la carga de trabajo, por lo que no es necesario que realices ninguna acción.
  5. Comprende los motivos: Anota los códigos específicos en el array UNSPLITTABLE_REASONS.
  6. Mitigación: Según los motivos identificados, consulta los tipos de UNSPLITTABLE_REASONS para obtener explicaciones detalladas y estrategias de mitigación recomendadas, que suelen implicar cambios en el diseño del esquema o ajustes en la carga de trabajo.

¿Qué sigue?