Guía de prueba de concepto de Spanner

En esta página se ofrece una estrategia para planificar y ejecutar una prueba de concepto (POC) con Spanner. Proporciona referencias e información valiosa detalladas sobre aspectos cruciales de una prueba de concepto, como la configuración de instancias, el diseño de esquemas, la carga de datos y la evaluación del rendimiento. En él se destacan los pasos esenciales para evaluar las funciones de Spanner y se te ayuda a identificar los posibles riesgos y ventajas asociados a la adopción de Spanner.

Además de validar las funciones técnicas de Spanner, una prueba de concepto tiene dos objetivos:

  • Para ayudarte a entender las ventajas que ofrece Spanner en tu caso práctico
  • Para ayudarte a identificar los riesgos asociados a la adopción de Spanner

Una prueba de concepto de Spanner abarca varias facetas de evaluación, cada una de ellas personalizada para abordar tus objetivos empresariales y técnicos específicos, tal como se muestra en el siguiente diagrama.

Prueba de concepto de Spanner

Las directrices de este documento te ayudarán a evaluar cada una de estas áreas.

  • Rendimiento y escalabilidad: te ayuda a entender cómo gestiona Spanner cargas de trabajo específicas, requisitos de latencia y el impacto de varias configuraciones de instancias. Estas pruebas pueden demostrar la capacidad de Spanner para escalar sin problemas.

  • Las funciones de monitorización te ayudan a evaluar si Spanner proporciona las estadísticas necesarias para llevar a cabo operaciones de bases de datos eficaces. Esta evaluación incluye lo siguiente:

    • Opciones para analizar planes de ejecución de consultas
    • Uso de recursos del sistema
    • Opciones para configurar alertas

    Una prueba de concepto puede revelar las carencias que deben abordarse para optimizar por completo la eficiencia operativa.

  • La seguridad y el cumplimiento son factores clave para determinar si Spanner es adecuado para tu organización. Esto incluye evaluaciones para asegurar que Spanner pueda mitigar los riesgos de seguridad y, al mismo tiempo, ofrecer ventajas sólidas en cuanto al cumplimiento, como las siguientes:

    • Opciones de cifrado, como CMEK o EKM para los datos en tránsito y en reposo
    • Postura de control de acceso con el principio de mínimos accesos
    • Registros de auditoría
    • Cumplimiento de los requisitos normativos
  • Las funciones de copia de seguridad y recuperación tras fallos son esenciales para garantizar la resiliencia operativa y de los datos. Una prueba de concepto puede validar las funciones de recuperación ante desastres de Spanner, como la recuperación a un momento dado y la disponibilidad.

  • La viabilidad de la migración implica comprender la complejidad de la transición de tu solución de base de datos actual a Spanner. Evaluar la compatibilidad del esquema, las herramientas de migración y los cambios en las aplicaciones te ayuda a cuantificar las inversiones necesarias y a determinar los riesgos y las ventajas de adoptar Spanner.

Durante la evaluación, puedes explorar el conjunto de funciones de Spanner para asegurarte de que cumple los requisitos funcionales de tu aplicación. Esto puede incluir probar su coherencia global, sus funciones de consulta SQL o su integración con otros servicios de Google Cloud.

Aunque las evaluaciones pueden destacar las ventajas únicas de Spanner, como la coherencia entre regiones, también pueden revelar posibles riesgos, como los esfuerzos de integración con la arquitectura de tu aplicación.

Ciclo de vida de las actividades de la prueba de concepto

En esta prueba de concepto se explican los siguientes pasos. Sigue las recomendaciones de este documento para configurar y evaluar Spanner en tu caso de uso específico.

El ciclo de vida incluye la planificación, la configuración, el dimensionamiento, la carga de datos, las pruebas de carga, la monitorización y la optimización.

Planifica tu prueba de concepto

Paso de planificación

La base de una prueba de concepto exitosa es definir objetivos claros y medibles que se ajusten a las prioridades técnicas y de negocio. Evita los objetivos vagos, como explorar el potencial de Spanner, ya que suelen dar lugar a esfuerzos poco definidos y resultados ambiguos. En su lugar, vincula los objetivos de tu prueba de concepto con metas concretas, como alcanzar una disponibilidad del 99, 999 %, reducir el tiempo de inactividad o escalar para gestionar un aumento del 200% en el rendimiento manteniendo las latencias de las transacciones por debajo de los 20 ms.

La arquitectura única de Spanner es ideal para cargas de trabajo que requieren una escalabilidad masiva, por lo que evaluar la escalabilidad de tu caso de uso es un buen punto de partida. Los casos de prueba deben incluir lo siguiente:

  • Gestionar cargas operativas típicas
  • Gestionar picos de tráfico
  • Reducir la escala de forma eficiente

Estas pruebas le ayudan a saber cómo funciona Spanner en diferentes condiciones y si cumple sus requisitos técnicos de escalabilidad. Los objetivos específicos y prácticos no solo ayudan a estructurar la prueba de concepto, sino que también sientan una base sólida para evaluar el éxito.

Definir una rúbrica de evaluación cuantificada

Es fundamental contar con una rúbrica que incluya métricas claras y medibles, así como criterios de éxito independientes, para determinar si la prueba de concepto ha cumplido sus objetivos. Por ejemplo, en lugar de probar solo el rendimiento, también debe especificar objetivos como los siguientes:

  • Servir un número específico de consultas por segundo (CPS) de nivel de producción
  • Mantener latencias inferiores a 20 ms en cargas máximas predefinidas
  • Gestionar picos de tráfico claramente definidos sin que se vea afectado el rendimiento

Los criterios bien definidos te ayudan a evaluar Spanner de forma objetiva para tu carga de trabajo y te proporcionan información valiosa para los próximos pasos. Sé específico y define objetivos de percentil para la latencia de las operaciones de lectura y escritura (por ejemplo, p50 y p95). Una definición clara de los umbrales de latencia aceptables te ayuda a diseñar pruebas de rendimiento de Spanner que se ajusten a las necesidades de tu empresa.

Por ejemplo, una rúbrica de evaluación podría ser similar a la siguiente:

Facetas de evaluación Criterios de éxito
Disponibilidad 99,999 %
Seguridad Se requiere una CMEK con un EKM
Garantía de objetivo de punto de recuperación (RPO) en caso de interrupción del servicio regional 0
Límite de latencia para las transacciones más críticas p50 inferior a 20 ms
Latencia de las consultas más importantes de los usuarios p50 inferior a 100 ms
Escalabilidad Demostrar que es posible aumentar la capacidad de 10.000 transacciones por segundo a 100.000 transacciones por segundo con una latencia p50 inferior a 20 ms en el transcurso de una hora

Definir el alcance de los casos de evaluación

Una prueba de concepto no debería requerir una migración a gran escala. En su lugar, céntrate en probar cargas de trabajo representativas o componentes críticos de tu sistema. Por ejemplo, identifica las consultas clave, las formas de transacción críticas o los flujos de trabajo específicos basados en datos que sean fundamentales para tus operaciones. Acota el ámbito para reducir la complejidad y, al mismo tiempo, asegurarte de que los resultados sean relevantes y significativos. Este enfoque ofrece una forma sencilla de evaluar las funciones de Spanner sin verse abrumado por las complejidades de una migración de todo el sistema.

Elegir una configuración de instancia de Spanner

Paso de configuración de Spanner

Cuando crees una instancia de Spanner con fines de evaluación, elige una configuración de instancia que cumpla los requisitos de tu empresa en cuanto a ubicación geográfica y SLA de disponibilidad del servicio. Spanner ofrece varias configuraciones, incluidas las de una sola región, varias regiones y dos regiones. Cada configuración se ha diseñado para cumplir diferentes requisitos de latencia, disponibilidad y redundancia.

  • Las configuraciones de una sola región almacenan datos en una región de Google Cloud, lo que ofrece una latencia baja en esa región y rentabilidad. Estas topologías son ideales para cargas de trabajo que requieren redundancia zonal en la misma región, lo que proporciona una disponibilidad del 99,99%.
  • Las configuraciones birregionales replican los datos en dos regiones de un mismo país, con una réplica testigo en cada región para las conmutaciones por error. Esta configuración proporciona una mayor disponibilidad (99,999%) y tolerancia a fallos que una configuración de una sola región. Estas topologías son adecuadas para cargas de trabajo con requisitos de cumplimiento estrictos (como la residencia de datos) o de proximidad geográfica.
  • Las configuraciones multirregionales replican los datos en varias regiones, lo que garantiza una disponibilidad muy alta y resiliencia ante interrupciones regionales. Estas topologías son ideales para aplicaciones que requieren redundancia geográfica con una disponibilidad de hasta el 99,999%.

Consideraciones sobre la latencia en instancias entre regiones

En las configuraciones birregionales y multirregionales, la distribución geográfica de las réplicas de Spanner puede influir en la latencia. La latencia de escritura depende de la proximidad de la región líder, que coordina las transacciones de lectura y escritura, y de las demás regiones, que confirman cada operación de escritura. Si colocas los recursos informáticos de tu aplicación cerca de la región líder, se reducen los retrasos de ida y vuelta y se minimiza la latencia.

Puedes modificar la región líder de una base de datos para que se ajuste a las necesidades de tu aplicación. En el caso de las operaciones de solo lectura, Spanner puede servir lecturas obsoletas desde la réplica más cercana, lo que reduce la latencia, mientras que las lecturas sólidas pueden implicar la región líder, lo que podría aumentar la latencia de las operaciones. Para optimizar la latencia en configuraciones multirregión, elige la región líder de forma estratégica, coloca los recursos informáticos de tus servicios en la misma ubicación que la región líder y aprovecha las lecturas obsoletas en cargas de trabajo con muchas operaciones de lectura.

Configuraciones que cumplan los requisitos de tu aplicación

Cuando selecciones una configuración de instancia para tu aplicación, ten en cuenta factores como la disponibilidad, la latencia y los requisitos de residencia de datos. Por ejemplo, si tu aplicación requiere respuestas de baja latencia para los usuarios de una zona geográfica específica, puede que sea suficiente con una instancia regional. Sin embargo, para las aplicaciones que requieren una mayor disponibilidad o que ofrecen servicios a usuarios distribuidos por todo el mundo, las configuraciones multirregionales serían más adecuadas.

Empieza con una configuración que se ajuste a los requisitos de producción de tu aplicación para evaluar el rendimiento. Ten en cuenta que la latencia y los costes varían entre configuraciones, por lo que debes adaptar tu entorno de prueba de concepto para que refleje las necesidades de tu caso práctico. En las implementaciones multirregionales, simula la distribución geográfica de los servicios y prueba la latencia para asegurarte de que la configuración se ajusta a tus requisitos de producción. Para obtener más información, consulta la guía sobre la colocación de líderes en varias regiones de Spanner.

Tamaño de Spanner

Paso para dimensionar Spanner

Aprovisiona la capacidad de computación inicial de tu instancia de Spanner para asegurarte de que puede gestionar tu carga de trabajo de evaluación de forma eficaz durante la prueba de concepto. El tamaño inicial de la instancia debe ajustarse a la carga de trabajo prevista, teniendo en cuenta la combinación de consultas de lectura y escritura por segundo (CPS), la complejidad de las consultas y los niveles de simultaneidad.

Si empiezas con una suposición razonable, podrás establecer una base y aumentar la escala de forma gradual en función del rendimiento observado. Puede usar las referencias de Spanner para determinar el tamaño y establecer una configuración de instancia de referencia.

El dimensionamiento durante una prueba de concepto debe ser iterativo. Empieza con una configuración inicial y, después, monitoriza métricas clave como la latencia y la utilización de la CPU, y ajusta la capacidad de computación asignada según sea necesario. De esta forma, puedes validar las funciones de escalabilidad y rendimiento de Spanner al tiempo que replicas condiciones similares a las de tu entorno de producción.

Los patrones de carga de trabajo típicos, como el tráfico constante frente a la demanda fluctuante, deben influir en tu estrategia de dimensionamiento. Cuando habilitas el autoescalado, Spanner asigna su capacidad de recursos de computación de forma dinámica para adaptarse a la intensidad de la carga de trabajo.

Diseño de esquema

Paso de diseño del esquema

El diseño del esquema es un aspecto fundamental de una prueba de concepto de Spanner, ya que la forma en que organices los datos puede influir directamente en el rendimiento y la escalabilidad.

Un esquema bien diseñado es fundamental para demostrar las funciones de Spanner en una prueba de concepto. Las pruebas de carga suelen revelar posibles cuellos de botella o ineficiencias, lo que permite realizar mejoras iterativas para crear un esquema óptimo.

Diseñar para la escalabilidad

Cuando creas un esquema de base de datos para Spanner, es fundamental tener en cuenta su arquitectura distribuida. Estas son algunas de las consideraciones y optimizaciones clave:

  • Claves principales: elija claves principales que distribuyan los datos de forma uniforme en el espacio de claves. Evite las claves que aumenten de forma monótona, como las marcas de tiempo, que pueden provocar puntos de acceso en las divisiones.
  • Índices: diseña índices para optimizar el rendimiento de las consultas sin perder de vista su impacto en el rendimiento de escritura y los costes de almacenamiento. Demasiados índices o índices mal planificados pueden introducir una sobrecarga innecesaria.
  • Entrelazado de tablas: usa el entrelazado de tablas para optimizar los patrones de acceso a datos relacionados. Esto podría reducir la comunicación entre procesos y mejorar la eficiencia de las consultas.

Consulta las prácticas recomendadas para diseñar esquemas de Spanner para evitar errores comunes y diseñar un esquema que admita un alto rendimiento y escalabilidad.

Puedes crear un borrador de esquema en la consola Google Cloud , como se muestra en la siguiente imagen.

Crea un borrador de esquema en la consola.

Migración de esquemas con la herramienta de migración de Spanner

La herramienta de migración de Spanner (SMT) puede simplificar la creación de esquemas al migrar desde bases de datos relacionales, como MySQL o PostgreSQL. SMT automatiza la generación de esquemas e incluye optimizaciones básicas, como sugerencias de índices y ajustes de esquemas. Aunque SMT proporciona un buen punto de partida, a menudo se necesitan ajustes manuales para alinear el esquema con tus casos prácticos o patrones de carga de trabajo específicos.

Usar un proceso de diseño de esquema iterativo

Aunque un esquema inicial proporciona un punto de partida, es poco probable que sea perfecto. La creación de un esquema para una prueba de concepto no es una tarea puntual, sino un proceso iterativo que evoluciona a medida que obtienes información valiosa de tus pruebas. Un esquema sólido es esencial para el rendimiento de las aplicaciones. Para conseguirlo, es necesario un diseño inicial bien pensado, el uso de herramientas como SMT y un perfeccionamiento iterativo basado en los resultados de las pruebas de carga. Si sigues este proceso, podrás asegurarte de que tu esquema satisfaga las necesidades de tu aplicación. También aprenderás a sacar el máximo partido a las funciones de Spanner.

Carga de datos

Para que una prueba de concepto de Spanner sea satisfactoria, es necesario cargar datos representativos en la base de datos para validar el diseño del esquema y simular los flujos de trabajo de la aplicación. Hay varias herramientas recomendadas que pueden agilizar este proceso. Para cargar sus propios datos, Spanner ofrece las siguientes opciones:

  • La estrategia de extracción, transformación y carga (ETL) inversa de BigQuery a Spanner es un mecanismo de carga de datos integrado y fácil de usar que te permite usar transformaciones basadas en SQL para cargar datos en Spanner. Este método es ideal para una amplia gama de formatos de datos, incluidos los datos semiestructurados, como JSON.
  • En el caso de las bases de datos relacionales, como MySQL y PostgreSQL, la herramienta de migración de Spanner (SMT) automatiza la creación de esquemas, la asignación de tipos de datos y la carga masiva de datos.
  • En el caso de los formatos de archivo plano, Google proporciona plantillas de Dataflow para convertir archivos CSV en Spanner y archivos Avro en Spanner, con el fin de crear definiciones de esquema manuales para la carga de datos en bloque. En el caso de las bases de datos compatibles con JDBC, Google proporciona la plantilla de Dataflow de JDBC a Spanner.

Para obtener más información sobre estas opciones, consulta el artículo Aportar tus propios datos.

Si no hay datos de muestra disponibles, puedes usar herramientas de generación de datos sintéticos, como JMeter de Machmeter y QuickPerf, para crear conjuntos de datos adaptados a tu esquema y caso práctico. Para obtener más información, consulta Generar datos de muestra.

Incorpora tus propios datos

Paso para incorporar tus propios datos

Si tienes datos de muestra disponibles que quieres usar en la prueba de concepto, tienes varias opciones para cargar esos datos en Spanner.

Origen Herramienta Creación de esquemas Transformaciones Tamaño de los datos
MySQL SMT automático Solo conversión de tipo de datos pequeña
PostgreSQL SMT automático Solo conversión de tipo de datos pequeña
Cualquier JDBC JDBC a Spanner manual Solo conversión de tipo de datos grande
CSV CSV a Spanner manual Solo conversión de tipo de datos grande
ETL inverso de BigQuery manual Transformaciones complejas admitidas grande
Avro De Avro a Spanner manual Solo conversión de tipo de datos grande
ETL inverso de BigQuery manual Transformaciones complejas admitidas grande
JSON ETL inverso de BigQuery manual Transformaciones complejas admitidas grande

Reverse ETL de BigQuery a Spanner

La ETL inversa de BigQuery a Spanner te permite ingerir rápidamente una amplia gama de fuentes de datos y transformarlas en tablas de BigQuery mediante SQL. Después, puedes exportar datos de la tabla de BigQuery a una tabla de Spanner. Es especialmente útil para datos semiestructurados, como JSON, que a menudo proceden de exportaciones de fuentes de datos NoSQL. Aunque BigQuery tiene un sistema de detección automática de esquemas, la creación de esquemas de Spanner es manual, por lo que debes definir el esquema antes de cargar los datos.

Herramienta de migración de Spanner

Para poner en marcha tu prueba de concepto, puedes usar la herramienta de migración de Spanner (SMT) para migrar datos de fuentes de MySQL y PostgreSQL a Spanner. SMT automatiza el proceso de creación de esquemas, asignando los tipos de datos de la base de datos de origen a sus tipos equivalentes en Spanner. También ofrece recomendaciones de optimización de esquemas específicas de Spanner. Por eso, resulta especialmente útil para migraciones sencillas en las que la conversión automática del esquema es suficiente.

SMT proporciona una interfaz de usuario que te guía durante el proceso de migración. Durante este proceso, se selecciona la base de datos de origen y se revisan las recomendaciones y las opciones de diseño del esquema.

Plantillas de Dataflow

Dataflow es un servicio totalmente gestionado diseñado para el procesamiento de datos escalable, lo que lo convierte en una opción adecuada para cargar grandes cantidades de datos.

Google proporciona las siguientes plantillas de código abierto para patrones de carga habituales:

  • CSV a Spanner carga datos de archivos CSV almacenados en Cloud Storage en Spanner.
  • Avro a Spanner carga archivos de datos Avro de Cloud Storage.
  • JDBC a Spanner carga datos de bases de datos compatibles con JDBC.

Para usar cualquiera de estas plantillas, debes crear manualmente el esquema de Spanner antes de empezar a cargar los datos.

Dataflow se escala automáticamente para adaptarse a conjuntos de datos de cualquier tamaño, lo que garantiza una ingesta de datos de alto rendimiento en Spanner, incluso en conjuntos de datos de escala de terabytes. Esta escalabilidad se ofrece a cambio de algunas concesiones:

  • Las canalizaciones de Dataflow requieren una configuración manual para definir el esquema, la asignación de datos y los parámetros de ejecución para que la ejecución sea óptima.
  • Dataflow ofrece la flexibilidad y la potencia necesarias para hacer migraciones de datos a gran escala, pero puede que requiera más esfuerzo para configurarla y gestionarla que otras herramientas.

Generar datos de muestra

Generar datos de muestra.

Si no tiene datos de muestra, pero tiene un caso práctico específico en mente, puede modelar el esquema en función de sus requisitos y usar herramientas para generar conjuntos de datos representativos. Estas herramientas te permiten rellenar Spanner con datos significativos para validar el diseño de tu esquema y los flujos de trabajo de la aplicación.

JMeter de Machmeter

JMeter de Machmeter proporciona ejemplos que usan JMeter para generar datos de muestra para Spanner. Gracias a que Machmeter se centra en ejemplos basados en casos prácticos, es un punto de partida excelente para generar patrones de datos estructuralmente similares al esquema de producción esperado. Los ejemplos proporcionados incluyen secuencias de comandos para inserciones masivas y otras operaciones. Puede adaptar las secuencias de comandos para generar conjuntos de datos sintéticos a gran escala. Para obtener más información, consulta el repositorio o la documentación de Machmeter.

QuickPerf

QuickPerf se distribuye con el controlador JDBC de Spanner. QuickPerf proporciona secuencias de comandos basadas en SQL que crean rápidamente conjuntos de datos representativos para probar la integridad del esquema y el comportamiento de la base de datos. Es una opción que requiere poco esfuerzo para generar rápidamente conjuntos de datos pequeños o medianos que sean menos complejos.

Pruebas de carga

Paso de prueba de carga

Las pruebas de carga te permiten observar el rendimiento de Spanner al gestionar cargas de trabajo para asegurarte de que tu base de datos tiene la configuración óptima para las demandas de producción. Dos herramientas que ya hemos presentado, JMeter de Machmeter y QuickPerf, son especialmente eficaces para simular cargas de trabajo y medir métricas de rendimiento, como el rendimiento, la latencia y el uso de recursos.

Apache JMeter, mejorado con el proyecto Machmeter, proporciona un potente marco de trabajo para las pruebas de carga distribuidas con Spanner. Machmeter incluye configuraciones de JMeter prediseñadas específicamente para simular cargas de trabajo de Spanner. Estas configuraciones se pueden adaptar para ejecutar consultas, transacciones y operaciones por lotes representativas, lo que te permite medir el rendimiento de Spanner en diferentes situaciones.

La capacidad de JMeter para simular usuarios y transacciones simultáneos lo convierte en una buena opción para probar la escalabilidad y la resiliencia de tu instancia de Spanner. Puedes desplegar JMeter en modo distribuido con Kubernetes o el servicio gestionado GKE para escalar tu entorno de pruebas. Los resultados ofrecen información valiosa sobre cómo gestiona Spanner cargas de trabajo específicas, cómo escala ante una demanda cada vez mayor y cómo funciona durante los picos de carga.

Para obtener más información y ejemplos de configuraciones, consulta el repositorio de Machmeter.

QuickPerf es una herramienta de comparativas ligera diseñada para probar el rendimiento con Spanner. Se centra en generar métricas de rendimiento con una configuración mínima, lo que te permite iterar rápidamente en las optimizaciones. QuickPerf es fácil de configurar y resulta especialmente adecuado para pruebas a menor escala y situaciones en las que quieras medir rápidamente el impacto en el rendimiento de optimizaciones de esquemas o consultas específicas.

Prácticas recomendadas para las pruebas de carga

Cuando realices pruebas de carga, es fundamental que sigas las prácticas recomendadas de Spanner para obtener resultados precisos y útiles.

  • Periodo de calentamiento: permite un periodo de calentamiento (normalmente, 30 minutos o más) para que Spanner alcance un estado estable después de escalar nodos o introducir una nueva carga de trabajo.
  • Mide las métricas relevantes: céntrate en métricas como el rendimiento (operaciones por segundo), los percentiles de latencia (por ejemplo, p50 y p95) y la utilización de la CPU para saber cómo sirve Spanner tu carga de trabajo.
  • Ejecuta pruebas de larga duración: para obtener resultados más representativos, ejecuta las pruebas de carga durante periodos prolongados (por ejemplo, más de una hora) para tener en cuenta los comportamientos del sistema, como el reequilibrio y las tareas de mantenimiento en segundo plano.
  • Pruebas de escalado: prueba escenarios de escalado vertical y horizontal para observar el comportamiento de Spanner con diferentes configuraciones de nodos y cargas máximas.

Puedes usar herramientas como JMeter Machmeter y QuickPerf, junto con las prácticas recomendadas para las pruebas de carga, para evaluar de forma eficaz el rendimiento de Spanner, identificar cuellos de botella y optimizar tu base de datos para satisfacer las demandas de tu carga de trabajo.

Supervisión

Paso de monitorización

Para demostrar de forma eficaz el rendimiento y la escalabilidad de Spanner durante una prueba de concepto, especialmente bajo carga, es necesario que conozcas a fondo sus características operativas. Spanner ofrece un paquete completo de herramientas de monitorización y diagnóstico diseñadas para proporcionarte información detallada sobre todos los aspectos del rendimiento de tu base de datos. Este conjunto de herramientas ofrece una amplia gama de recursos, desde paneles de control de métricas hasta tablas del sistema detalladas, que te ayudan a identificar cuellos de botella, validar las decisiones de diseño y optimizar el rendimiento.

Estadísticas del sistema proporciona una observabilidad detallada del rendimiento y el estado operativo de una instancia de Spanner. Ofrece métricas y estadísticas sobre varias áreas, como el uso de la CPU, la latencia y el rendimiento, entre otras, con niveles de granularidad ajustables. Durante una prueba de concepto, este es el punto de partida para observar el comportamiento de Spanner durante las pruebas. Estadísticas del sistema te permite identificar rápidamente los cuellos de botella del rendimiento, como el uso elevado de la CPU o el aumento de las latencias de lectura o escritura. Sienta las bases para las investigaciones posteriores.

Información útil sobre las consultas ofrece una vista general de la ejecución de las consultas, empezando por identificar las consultas más frecuentes y costosas en función de métricas como el tiempo de CPU, el recuento de ejecuciones y la latencia media. Si profundizas, las estadísticas de las consultas te permiten examinar planes de ejecución detallados, incluidas las estadísticas de cada paso de la consulta, y localizar las operaciones específicas que provocan ralentizaciones. También ofrece funciones para investigar las tendencias históricas del rendimiento y comparar el rendimiento de las consultas en diferentes periodos. Esto le ayudará a identificar regresiones o el impacto de los cambios en el esquema y el código. Otras herramientas, como el asesor de indexación, analizan tus consultas para recomendarte índices nuevos o modificados que pueden mejorar el rendimiento de las consultas.

Estadísticas de las transacciones: proporcionan visibilidad del rendimiento de las transacciones con métricas detalladas sobre la latencia de las transacciones, los tiempos de espera de confirmación, el número de filas y bytes leídos y escritos, y los participantes en las transacciones distribuidas. Estas métricas revelan transacciones con alta latencia o canceladas y proporcionan detalles sobre sus características. Durante una prueba de carga de una prueba de concepto, las estadísticas de transacciones son esenciales para evaluar la eficiencia transaccional del sistema bajo presión. Te permite monitorizar e identificar cualquier degradación a medida que aumenta la carga. Analizar las transacciones individuales te ayuda a identificar las causas de las ralentizaciones, como las transacciones de larga duración que bloquean a otras o las transacciones individuales que leen o escriben volúmenes de datos excesivamente grandes. La información de las estadísticas de transacciones le permite hacer ajustes específicos, como optimizar los límites de las transacciones, refinar las consultas dentro de las transacciones o ajustar el esquema para reducir la cantidad de datos que implican las transacciones típicas. De esta forma, se asegura que la prueba de concepto demuestre la capacidad de Spanner para mantener la coherencia transaccional y el rendimiento al nivel de carga esperado.

Estadísticas de los bloqueos: proporciona visibilidad sobre el comportamiento de los bloqueos de transacciones, lo que te ayuda a identificar y resolver problemas de conflictos de bloqueos. Muestra información sobre las esperas de bloqueo, incluidos los intervalos de claves de fila específicos que están causando el problema. Durante una prueba de carga de una prueba de concepto, las estadísticas de bloqueo son cruciales para identificar si los conflictos de bloqueo transaccional están causando limitaciones de escalabilidad. A medida que aumenta la carga simultánea, las transacciones pueden empezar a competir para actualizar los mismos datos, lo que provoca un aumento de los tiempos de espera y una reducción del rendimiento. Esta información te ayuda a optimizar el esquema, modificar los límites de las transacciones y ajustar la lógica de las aplicaciones. Estas acciones mitigan la contención y aseguran que la base de datos de Spanner mantenga el rendimiento con la carga de trabajo prevista, lo que evita la degradación debido a los mecanismos de bloqueo.

Estadísticas del punto de acceso: identifica los cuellos de botella del rendimiento, en concreto, el aumento de la latencia, que se produce por las condiciones de hotspotting. Los puntos de acceso suelen producirse cuando hay una carga alta y desigual. A menudo, los puntos de acceso se deben a lo siguiente:

  • Diseño de esquema subóptimo
  • Selección de clave principal
  • Patrones de acceso que concentran las operaciones en un pequeño subconjunto de datos en lugar de distribuirlas de forma uniforme entre los nodos

Durante una prueba de carga de una prueba de concepto, las estadísticas de puntos de acceso te ayudan a decidir dónde optimizar tu esquema. Por ejemplo, puede que tenga que ajustar las claves principales o modificar los índices secundarios para evitar los puntos de acceso.

Key Visualizer ofrece una representación visual de los patrones de uso de la base de datos a lo largo del tiempo en todo el espacio de claves de las tablas y los índices. Genera mapas de calor que muestran la actividad de lectura y escritura, destacando las zonas de alta intensidad y los patrones potencialmente problemáticos. Durante una prueba de concepto, esta herramienta ayuda a validar el diseño del esquema e identificar posibles limitaciones de escalabilidad. A medida que aumenta la carga, puedes observar cómo se distribuye la carga de trabajo en tu espacio de claves y en las tablas e índices correspondientes.

Las tablas de introspección, principalmente su sistema de tablas Spanner_SYS, proporcionan una gran cantidad de información sobre el estado interno y el rendimiento de la base de datos. Estas tablas muestran estadísticas detalladas sobre la ejecución de consultas, el comportamiento de las transacciones, la contención de bloqueos y los detalles del esquema. Durante una prueba de carga de una prueba de concepto, estas tablas de introspección proporcionan un enfoque basado en datos para el diagnóstico del rendimiento, que va más allá de lo que ofrecen las herramientas de estadísticas mencionadas anteriormente. Por ejemplo, puedes usarlos para solucionar la causa raíz de conflictos de bloqueo en tu base de datos que, de otro modo, serían difíciles de detectar, así como para obtener información valiosa que te permita optimizarla.

Optimización

Paso de optimización

Las pruebas de carga son un paso fundamental para identificar problemas de rendimiento y posibles cuellos de botella en tu implementación de Spanner. Las estadísticas obtenidas de estas pruebas deben guiar los esfuerzos de optimización en el diseño del esquema, el comportamiento de las transacciones y el rendimiento de las consultas para asegurar que Spanner cumpla los requisitos de tu carga de trabajo.

Optimizar el diseño del esquema

Aunque el diseño inicial del esquema se basa en las prácticas recomendadas para la escalabilidad y el rendimiento, la ejecución de cargas de trabajo en condiciones reales suele revelar áreas que requieren mejoras. Las pruebas de carga proporcionan información valiosa sobre el rendimiento del esquema en condiciones específicas, lo que permite detectar problemas como la creación de puntos de acceso, la distribución desigual de los datos o las ineficiencias en el rendimiento de las consultas.

La optimización se centra en ajustar los siguientes aspectos para adaptarlos a las características de la carga de trabajo de tu aplicación.

  • Ajustes de la clave principal: si las pruebas de carga revelan puntos de acceso o una distribución de datos desequilibrada, revisa el diseño de la clave principal. Por ejemplo, puedes añadir aleatoriedad al prefijo de la clave para distribuir los datos de forma más uniforme entre los nodos y, al mismo tiempo, mantener la eficiencia de las consultas.
  • Refinamientos de índice: las pruebas de carga pueden revelar si los índices redundantes o la indexación excesiva están afectando negativamente al rendimiento de escritura. Elimina los índices innecesarios o reestructura los que ya tengas para mejorar el rendimiento de las consultas. Evalúa la selectividad de los índices y asegúrate de que se ajustan a los patrones de consulta habituales.
  • Tablas e jerarquías intercaladas: analiza si las tablas relacionadas pueden beneficiarse de la intercalación de tablas para reducir la latencia de las consultas. Ajusta las decisiones de intercalación en función de los patrones de acceso observados durante las pruebas. Por el contrario, plantéate modelar esas tablas por separado si la estructura jerárquica provoca una sobrecarga inesperada.

Para obtener información sobre cómo crear esquemas escalables, consulta las prácticas recomendadas para diseñar esquemas de Spanner.

Optimizar la semántica y las consultas de las transacciones

Las pruebas de carga suelen poner de manifiesto ineficiencias en la ejecución de transacciones y consultas, como problemas de contención o de bloqueo. Optimiza la semántica de las transacciones y las estructuras de las consultas para maximizar el rendimiento y minimizar la latencia:

  • Modos de transacción: usa el modo de transacción adecuado para cada operación de carga de trabajo. Por ejemplo, usa transacciones de solo lectura para las consultas que no modifiquen datos o DML con particiones para las actualizaciones y eliminaciones en bloque.
  • Procesamiento por lotes: siempre que sea posible, usa operaciones de escritura por lotes para reducir la sobrecarga que suponen varios viajes de ida y vuelta.
  • Optimización de consultas: refactoriza las consultas para incluir solo las columnas y las filas necesarias, aprovecha las ventajas de los índices y usa parámetros de consulta en tu aplicación para reducir la sobrecarga.

Para obtener información sobre las estrategias de optimización, consulta la descripción general de las transacciones y las prácticas recomendadas de SQL.

Pruebas de carga iterativas

La optimización es un proceso iterativo. Realiza pruebas de carga después de cada cambio significativo en el esquema o en las consultas para validar las mejoras y asegurarte de que no se introduzcan nuevos cuellos de botella.

Simula escenarios de aplicaciones realistas con distintos niveles de simultaneidad, tipos de transacciones y volúmenes de datos para confirmar que Spanner funciona como se espera en condiciones de carga máxima y de estado estable.

Métricas clave que se deben monitorizar

Monitoriza métricas clave, como la latencia (p50 y p99), el rendimiento y la utilización de la CPU, durante la optimización.

Siguientes pasos