En esta página, se proporciona una estrategia para planificar y ejecutar una prueba de concepto (PdC) con Spanner. Proporciona referencias y estadísticas detalladas sobre aspectos cruciales de un POC, como la configuración de la instancia, el diseño del esquema, la carga de datos y la evaluación del rendimiento. En él, se destacan los pasos esenciales para evaluar las capacidades de Spanner y se te ayuda a identificar los posibles riesgos y beneficios relacionados con la adopción de Spanner.
Además de validar las capacidades técnicas de Spanner, una PDV tiene dos propósitos:
- Para ayudarte a comprender los beneficios que ofrece Spanner para tu caso de uso
- Para ayudarte a identificar los riesgos asociados con la adopción de Spanner
Una prueba de concepto de Spanner abarca una variedad de aspectos de evaluación, cada uno de ellos personalizado para abordar tus objetivos comerciales y técnicos específicos, como se muestra en el siguiente diagrama.
Los lineamientos de este documento te ayudan a evaluar cada una de estas áreas.
Rendimiento y escalabilidad te ayuda a comprender cómo Spanner controla 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 capacidades de supervisión te ayudan a evaluar si Spanner proporciona las estadísticas necesarias para realizar operaciones de bases de datos eficaces. Esta evaluación incluye lo siguiente:
- Opciones para analizar los planes de ejecución de consultas
- Uso de recursos del sistema
- Opciones para configurar alertas
Una prueba de concepto puede revelar brechas 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 garantizar que Spanner pueda mitigar los riesgos de seguridad y, al mismo tiempo, ofrecer beneficios sólidos de cumplimiento, como los siguientes:
- Opciones de encriptación, como CMEK o EKM para datos en tránsito y en reposo
- Postura de control de acceso con privilegio mínimo
- Registros de auditoría
- Cumplimiento de los requisitos reglamentarios
Las capacidades de copia de seguridad y recuperación ante desastres (DR) son fundamentales para garantizar la resiliencia operativa y de los datos. Una PD puede validar las funciones de DR de Spanner, como la recuperación de un momento determinado y la disponibilidad.
La factibilidad 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 la aplicación te ayuda a cuantificar las inversiones necesarias y a determinar los riesgos y beneficios de la adopción de Spanner.
Durante la evaluación, es posible que desees explorar el conjunto de funciones de Spanner para asegurarte de que cumpla con los requisitos funcionales de tu aplicación. Esto puede incluir probar su coherencia global, sus capacidades de consulta en SQL o su integración con otros servicios de Google Cloud.
Si bien las evaluaciones pueden destacar las fortalezas únicas de Spanner, como la coherencia en todas las regiones, también pueden revelar posibles riesgos, como los esfuerzos de integración con la arquitectura de aplicaciones existente.
Ciclo de vida de las actividades del PDC
En esta PDV, se te guiará por los siguientes pasos. Sigue las recomendaciones de este documento para configurar y evaluar Spanner en tu caso de uso específico.
Planifica tu POC
La base de una prueba de concepto exitosa radica en definir objetivos claros y medibles que se alineen con las prioridades técnicas y comerciales. Evita los objetivos vagos, como explorar el potencial de Spanner, ya que suelen generar esfuerzos poco enfocados y resultados ambiguos. En cambio, vincula tus objetivos de la PDD a metas concretas, como lograr una disponibilidad del 99.999%, reducir el tiempo de inactividad o escalar para controlar un aumento del 200% en el rendimiento y, al mismo tiempo, mantener las latencias de las transacciones por debajo de los 20 ms.
La arquitectura única de Spanner es ideal para las cargas de trabajo que requieren una escalabilidad masiva, por lo que evaluar la escalabilidad para tu caso de uso es un buen punto de partida. Las situaciones de prueba deben incluir lo siguiente:
- Manejo de cargas operativas típicas
- Cómo administrar los aumentos repentinos de tráfico
- Cómo reducir la escala de forma eficiente
Estas pruebas te ayudan a comprender el rendimiento de Spanner en diferentes condiciones y si cumple con tus requisitos técnicos de escalabilidad. Los objetivos específicos y prácticos no solo ayudan a estructurar la PDV, sino que también crean una base sólida para evaluar el éxito.
Define una rúbrica de evaluación cuantificada
Es fundamental contar con una rúbrica que incluya métricas claras y medibles, y criterios de éxito discretos para determinar si la PDD cumplió con sus objetivos. Por ejemplo, en lugar de solo probar el rendimiento, también debes especificar objetivos como los siguientes:
- Publica QPS específicas a nivel de producción (consultas por segundo).
- Mantener latencias inferiores a 20 ms con cargas máximas predefinidas
- Controla los picos de actividad de tráfico claramente definidos sin degradación del rendimiento
Los criterios bien definidos te ayudan a evaluar Spanner de forma objetiva para tu carga de trabajo y proporcionan estadísticas prácticas para los próximos pasos. Sé específico y define los objetivos de percentiles para la latencia de las operaciones de lectura y escritura (como p50 y p95). Una definición clara de los umbrales de latencia aceptables te ayuda a diseñar pruebas del rendimiento de Spanner que se alineen con las necesidades de tu empresa.
Un ejemplo de una rúbrica de evaluación podría verse de la siguiente manera:
Faceta de evaluación | Criterios para alcanzar el éxito |
Disponibilidad | 99.999% |
Seguridad | Se requiere CMEK con un EKM |
Garantía de objetivo de punto de recuperación (RPO) en caso de una interrupción regional | 0 |
Límite de latencia para las transacciones más críticas | P50 inferior a 20 ms |
Latencia para las búsquedas más importantes que realizan los usuarios | P50 por debajo de 100 ms |
Escalabilidad | Demostrar que es posible escalar de 10,000 transacciones por segundo a 100,000 transacciones por segundo con una latencia del percentil 50 inferior a 20 ms en el transcurso de una hora |
Define el alcance de tus casos de evaluación
Una PoC no debería requerir una migración a gran escala. En su lugar, enfócate en probar cargas de trabajo representativas o componentes críticos de tu sistema. Por ejemplo, identifica las búsquedas clave, las formas de transacción críticas o los flujos de trabajo específicos basados en datos que son fundamentales para tus operaciones. Acota el alcance para reducir la complejidad y, al mismo tiempo, garantizar que los resultados sean pertinentes y significativos. Este enfoque proporciona una forma manejable de evaluar las capacidades de Spanner sin sentirse abrumado por las complejidades de una migración completa del sistema.
Elige una configuración de instancia de Spanner
Cuando crees una instancia de Spanner para fines de evaluación, elige una configuración de instancia que cumpla con los requisitos de tu empresa en cuanto a la ubicación geográficay el ANS de disponibilidad del servicio. Spanner ofrece varias configuraciones, incluidas las regionales, multirregionales y birregionales. Cada configuración está diseñada para satisfacer 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 baja latencia dentro de esa región y rentabilidad. Estas topologías son ideales para las cargas de trabajo que requieren redundancia zonal dentro de la 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 errores que una configuración de una sola región. Estas topologías son adecuadas para cargas de trabajo con requisitos estrictos de cumplimiento (como la residencia de datos) o de proximidad geográfica.
- Las configuraciones multirregionales replican los datos en varias regiones, lo que garantiza una disponibilidad y resiliencia muy altas ante interrupciones regionales. Estas topologías son ideales para las 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 otras regiones, que confirman cada operación de escritura. Colocar los recursos de procesamiento de tu aplicación cerca de la región líder reduce las demoras de ida y vuelta y minimiza la latencia.
Puedes modificar la región líder de una base de datos para que se alinee con las necesidades de tu aplicación. Para las operaciones de solo lectura, Spanner puede entregar lecturas inactivas desde la réplica más cercana, lo que reduce la latencia, mientras que las lecturas sólidas pueden involucrar a la región líder, lo que podría aumentar la latencia de la operación. Para optimizar la latencia en configuraciones multirregionales, elige la región líder de forma estratégica, coloca los recursos de procesamiento de tus servicios en la misma ubicación que la región líder y aprovecha las lecturas obsoletas para las cargas de trabajo con alto volumen de lecturas.
Configuraciones que cumplen con 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 los datos. Por ejemplo, si tu aplicación requiere respuestas de baja latencia para los usuarios en un área geográfica específica, una instancia regional podría ser suficiente. Sin embargo, para las aplicaciones que exigen una mayor disponibilidad o prestan servicio a usuarios distribuidos a nivel mundial, las configuraciones multirregionales serían más adecuadas.
Comienza con una configuración que se alinee estrechamente con los requisitos de producción de tu aplicación para evaluar el rendimiento. Ten en cuenta que la latencia y los costos varían según las configuraciones, por lo que debes adaptar tu entorno de la PDCP para que refleje las necesidades de tu caso de uso. Para las implementaciones en varias regiones, simula la distribución geográfica del servicio y prueba la latencia para asegurarte de que la configuración se alinee con tus requisitos de producción. Para obtener más detalles, consulta la guía de ubicación de líderes multirregionales de Spanner.
Tamaño de la llave
Aprovisiona la capacidad de procesamiento inicial para tu instancia de Spanner y asegúrate de que pueda controlar tu carga de trabajo de evaluación de manera eficaz durante la PDCP. El tamaño inicial de la instancia debe alinearse con la carga de trabajo esperada, teniendo en cuenta la combinación de consultas de lectura y escritura por segundo (QPS), la complejidad de las consultas y los niveles de simultaneidad.
Comenzar con una suposición razonable te permite establecer un punto de partida y aumentar la escala de forma incremental en función del rendimiento observado. Puedes usar la guía de dimensionamiento de las comparativas de referencia de Spanner para establecer una configuración de instancia de referencia.
El dimensionamiento durante una prueba de concepto debe ser iterativo. Comienza con una configuración inicial, luego supervisa las métricas clave, como la latencia y el uso de CPU, y ajusta la capacidad de procesamiento asignada según sea necesario. Esto garantiza que puedas validar las capacidades de escalabilidad y rendimiento de Spanner mientras replicas condiciones similares a las de tu entorno de producción.
Los patrones típicos de carga de trabajo, como el tráfico constante en comparación con la demanda fluctuante, deben influir en tu enfoque de dimensionamiento. Cuando habilitas el ajuste de escala automático, Spanner aprovisiona su capacidad de recursos de procesamiento de forma dinámica para que coincida con la intensidad de la carga de trabajo.
Diseño de esquemas
El diseño del esquema es un aspecto fundamental de una PDV de Spanner, ya que la forma en que organizas tus datos puede afectar directamente el rendimiento y la escalabilidad.
Un esquema bien diseñado es fundamental para demostrar las capacidades de Spanner en una PDCP. Las pruebas de carga suelen revelar posibles cuellos de botella o ineficiencias, lo que permite realizar ajustes iterativos que crean un esquema óptimo.
Diseña para la escalabilidad
Cuando creas un esquema de base de datos para Spanner, es fundamental tener en cuenta su arquitectura distribuida. Estas son algunas consideraciones y optimizaciones clave:
- Claves primarias: Elige claves primarias que distribuyan los datos de manera uniforme en el espacio de claves, y evita las claves que aumentan de forma monótona, como las marcas de tiempo, que podrían causar hotspots en las divisiones.
- Índices: Diseña índices para optimizar el rendimiento de las consultas y, al mismo tiempo, ten en cuenta su impacto en el rendimiento de escritura y los costos de almacenamiento. Demasiados índices o índices mal planificados pueden generar una sobrecarga innecesaria.
- Intercalación de tablas: Usa la intercalación de tablas para optimizar los patrones de acceso a los datos relacionados. Esto podría reducir la comunicación entre procesos y mejorar la eficiencia de las consultas.
Consulta las prácticas recomendadas para el diseño de esquemas de Spanner para evitar errores comunes y diseñar un esquema que admita un alto rendimiento y escalabilidad.
Puedes crear un esquema de borrador en la consola de Google Cloud como se muestra en la siguiente imagen.
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 cuando se migra desde bases de datos relacionales, incluidas MySQL o PostgreSQL. SMT automatiza la generación de esquemas y ofrece optimizaciones básicas, como sugerencias de índices y ajustes de esquemas. Si bien el SMT proporciona un buen punto de partida, a menudo se necesitan ajustes manuales para alinear el esquema con tus casos de uso o patrones de carga de trabajo específicos.
Usa un proceso iterativo de diseño de esquemas
Si bien un esquema inicial proporciona un punto de partida, es poco probable que sea perfecto. La creación del esquema para una prueba de concepto no es una tarea única, sino un proceso iterativo que evoluciona a medida que obtienes estadísticas de tus pruebas. Un esquema sólido es esencial para el rendimiento de la aplicación. Para lograrlo, se requiere 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, puedes asegurarte de que tu esquema satisfaga de manera eficaz las demandas de tu aplicación. También aprenderás a aprovechar al máximo las funciones de Spanner.
Carga de datos
Una prueba de concepto (PdC) exitosa de Spanner depende de la carga de datos representativos en la base de datos para validar el diseño del esquema y simular los flujos de trabajo de la aplicación. Existen varias herramientas recomendadas que pueden optimizar este proceso. Para cargar tus propios datos, Spanner ofrece las siguientes opciones:
- La extracción, transformación y carga (ETL) inversa de BigQuery en 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 variedad de formatos de datos, incluidos los datos semiestructurados, como JSON.
- Para 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.
- Para los formatos de archivos planos, Google proporciona plantillas de Dataflow para CSV a Spanner y Avro a Spanner, con el objetivo de crear definiciones de esquemas manuales para la carga masiva de datos. Para 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 Usa 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 de uso. Para obtener más información, consulta Cómo generar datos de muestra.
Aporta tus propios datos
Si tienes datos de muestra disponibles que deseas usar para la PDV, 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 | poco a poco |
PostgreSQL | SMT | automático | Solo conversión de tipo de datos | poco a poco |
Cualquier JDBC | De 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 | Se admiten transformaciones complejas | Grande | |
Avro | Avro a Spanner | manual | Solo conversión de tipo de datos | Grande |
ETL inverso de BigQuery | manual | Se admiten transformaciones complejas | Grande | |
JSON | ETL inverso de BigQuery | manual | Se admiten transformaciones complejas | Grande |
ETL inverso de BigQuery a Spanner
BigQuery reverse ETL to Spanner te permite transferir rápidamente una amplia variedad de fuentes de datos y transformarlos en tablas de BigQuery con SQL. Luego, puedes exportar datos de la tabla de BigQuery a una tabla de Spanner. Es especialmente útil para los datos semiestructurados, como JSON, que a menudo se originan como exportaciones de fuentes de datos NoSQL. Si bien BigQuery cuenta con 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 iniciar rápidamente tu PVT, 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, ya que asigna los tipos de datos de la base de datos de origen a sus tipos equivalentes en Spanner. También proporciona recomendaciones de optimización del esquema específicas de Spanner. Esto lo hace particularmente útil para migraciones sencillas en las que la conversión automática del esquema es suficiente.
La SMT proporciona una interfaz de usuario que te guía a través del proceso de migración. Durante este proceso, seleccionas la base de datos de origen y revisas las recomendaciones y opciones para el diseño del esquema.
Plantillas de Dataflow
Dataflow es un servicio completamente administrado 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 comunes:
- CSV a Spanner carga datos de archivos CSV almacenados en Cloud Storage en Spanner.
- Avro to Spanner carga archivos de datos Avro existentes desde Cloud Storage.
- JDBC to Spanner carga datos de bases de datos que admiten JDBC.
Cada una de estas plantillas requiere que crees manualmente el esquema de Spanner antes de comenzar la carga de datos.
Dataflow se ajusta automáticamente para admitir conjuntos de datos de cualquier tamaño, lo que garantiza la transferencia de datos de alto rendimiento a Spanner, incluso para conjuntos de datos a escala de terabytes. Esta escalabilidad se proporciona a expensas de algunas desventajas:
- Las canalizaciones de Dataflow requieren configuración manual para definir el esquema, la asignación de datos y los parámetros de ejecución para una ejecución óptima.
- Dataflow proporciona la flexibilidad y la potencia necesarias para las migraciones de datos a gran escala, pero puede requerir más esfuerzo para configurarlo y administrarlo que otras herramientas.
Genera datos de muestra
Si no tienes datos de muestra, pero tienes un caso de uso específico en mente, puedes modelar el esquema según tus requisitos y usar herramientas para generar conjuntos de datos representativos. Estas herramientas te permiten completar 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. El enfoque de Machmeter en ejemplos basados en casos de uso lo convierte en un excelente punto de partida para generar patrones de datos estructuralmente similares a tu esquema de producción esperado. Los ejemplos proporcionados incluyen secuencias de comandos para inserciones masivas y otras operaciones. Puedes 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. Esta es una opción que requiere poco esfuerzo para generar rápidamente conjuntos de datos pequeños y medianos que son menos complejos.
Pruebas de carga
Las pruebas de carga te permiten observar el rendimiento de Spanner cuando controla cargas de trabajo para garantizar que tu base de datos tenga la configuración óptima para las exigencias de producción. Dos herramientas que se presentaron anteriormente, JMeter de Machmeter y QuickPerf, son particularmente eficaces para simular cargas de trabajo y medir métricas de rendimiento, como la capacidad de procesamiento, la latencia y la utilización de recursos.
Apache JMeter, mejorado a través del proyecto Machmeter, proporciona un marco de trabajo potente para las pruebas de carga distribuidas con Spanner. Machmeter incluye configuraciones de JMeter prediseñadas y diseñadas específicamente para simular cargas de trabajo de Spanner. Estos parámetros de configuración 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 capacidad de recuperación de tu instancia de Spanner. Puedes implementar JMeter en modo distribuido con Kubernetes o el servicio administrado GKE para escalar tu entorno de prueba. Los resultados ofrecen estadísticas sobre cómo Spanner administra cargas de trabajo específicas, se escala ante una demanda cada vez mayor y funciona durante las cargas máximas.
Para obtener más información y ejemplos de configuración, consulta el repositorio de Machmeter.
QuickPerf es una herramienta de comparativas ligera diseñada para realizar pruebas de rendimiento con Spanner. Se enfoca en generar métricas de rendimiento con una configuración mínima, lo que te permite realizar iteraciones rápidamente en las optimizaciones. QuickPerf es fácil de configurar y es especialmente adecuado para pruebas a menor escala y situaciones en las que deseas medir rápidamente el impacto en el rendimiento de optimizaciones específicas del esquema o de las consultas.
Prácticas recomendadas para las pruebas de carga
Cuando realices pruebas de carga, es fundamental que sigas las prácticas recomendadas de Spanner para garantizar resultados precisos y prácticos.
- Período de calentamiento: Permite un período de calentamiento (por lo general, de 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 pertinentes: Enfócate en métricas como la capacidad de procesamiento (operaciones por segundo), los percentiles de latencia (por ejemplo, p50 y p95) y el uso de CPU para comprender cómo Spanner procesa tu carga de trabajo.
- Ejecuta comparativas de larga duración: Para obtener resultados más representativos, ejecuta tus pruebas de carga durante períodos 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 escalamiento: Prueba situaciones de escalamiento vertical y horizontal para observar el comportamiento de Spanner en 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 manera 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
Para demostrar de manera eficaz el rendimiento y la escalabilidad de Spanner durante una PDV, en especial bajo carga, es necesario que comprendas en profundidad sus características operativas. Spanner proporciona un conjunto integral de herramientas de supervisión y diagnóstico diseñadas para brindarte estadísticas detalladas sobre cada aspecto del rendimiento de tu base de datos. Este conjunto de herramientas ofrece una variedad de recursos, desde paneles de métricas hasta tablas detalladas del sistema, que te ayudan a identificar cuellos de botella, validar las opciones de diseño y optimizar el rendimiento.
Estadísticas del sistema proporciona 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 CPU, la latencia, el rendimiento y mucho más, con niveles de detalle ajustables. Durante una PDV, este es el punto de partida para observar el comportamiento de Spanner durante tus pruebas. Las estadísticas del sistema te permiten identificar rápidamente los cuellos de botella de rendimiento, como el uso alto de CPU o el aumento de las latencias de lectura o escritura. Sienta las bases para las investigaciones posteriores.
Estadísticas de consultas proporciona una vista descendente de la ejecución de consultas, que comienza con la identificación de las consultas más frecuentes y costosas según métricas como el tiempo de CPU, el recuento de ejecución y la latencia promedio. Si profundizas más, las estadísticas de consultas te permiten examinar los planes de ejecución detallados, incluidas las estadísticas de cada paso de la consulta, y señalar las operaciones específicas que causan ralentizaciones. También ofrece funciones para investigar las tendencias históricas del rendimiento y comparar el rendimiento de las búsquedas en diferentes períodos. Esto te ayuda a identificar regresiones o el impacto de los cambios en el esquema y el código. Las herramientas adicionales, como el asesor de índices, analizan tus consultas para recomendar índices nuevos o modificados que pueden mejorar el rendimiento de tus consultas.
Estadísticas de 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, la cantidad de filas y bytes leídos y escritos, y los participantes en las transacciones distribuidas. Estas métricas revelan transacciones con alta latencia o anuladas, y proporcionan detalles sobre sus características. Durante una prueba de carga de la PDV, las estadísticas de transacciones son fundamentales para evaluar la eficiencia transaccional del sistema bajo presión. Te permite supervisar 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 únicas que leen o escriben volúmenes de datos excesivamente grandes. La información de las estadísticas de transacciones te permite realizar ajustes segmentados, 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 involucrados en las transacciones típicas. Esto garantiza que la prueba de concepto demuestre la capacidad de Spanner para mantener la coherencia y el rendimiento de las transacciones en el nivel de carga esperado.
Las estadísticas de bloqueo proporcionan visibilidad del comportamiento de bloqueo de las transacciones, lo que te ayuda a identificar y resolver problemas de contención de bloqueos. Muestra información sobre las esperas de bloqueo, incluidos los rangos de clave de fila específicos que causan el problema. Durante una prueba de carga de la PDV, las estadísticas de bloqueo son fundamentales para identificar si los conflictos de bloqueo transaccional están causando limitaciones de escalabilidad. A medida que aumenta la carga simultánea, es posible que las transacciones comiencen a competir para actualizar los mismos datos, lo que genera un aumento en los tiempos de espera y una reducción en la capacidad de procesamiento. Esta información te ayuda a optimizar el esquema, modificar los límites de las transacciones y ajustar la lógica de la aplicación. Estas acciones mitigan la contención y garantizan que la base de datos de Spanner mantenga el rendimiento bajo la carga de trabajo proyectada, lo que evita la degradación debido a los mecanismos de bloqueo.
Las Estadísticas de hotspot identifican los cuellos de botella de rendimiento, en especial el aumento de la latencia, que se producen debido a las condiciones de hotspot. Por lo general, los hotspots se producen cuando hay una carga alta y desigual. A menudo, los hotspots se deben a los siguientes motivos:
- Diseño de esquema subóptimo
- Selección de clave primaria
- Patrones de acceso que concentran las operaciones en un pequeño subconjunto de datos en lugar de distribuirlas de manera uniforme entre los nodos
Durante una prueba de carga de la PDV, las estadísticas de hotspots te ayudan a decidir dónde optimizar tu esquema. Por ejemplo, es posible que debas ajustar las claves primarias o modificar los índices secundarios para evitar puntos calientes.
Key Visualizer proporciona 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, y destacan las áreas de alta intensidad y los patrones potencialmente problemáticos. Durante una PDV, esta herramienta ayuda a validar el diseño del esquema y a 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 exponen 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 la PDV, estas tablas de introspección proporcionan un enfoque basado en datos para el diagnóstico del rendimiento, más allá de lo que ofrecen las herramientas de estadísticas mencionadas anteriormente. Por ejemplo, puedes usarlas 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 y obtener estadísticas prácticas para la optimización.
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 a partir 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 garantizar que Spanner satisfaga las demandas de tu carga de trabajo.
Optimiza el diseño del esquema
Si bien un diseño de esquema inicial se basa en las prácticas recomendadas para la escalabilidad y el rendimiento, la ejecución de cargas de trabajo en condiciones reales a menudo revela áreas que requieren perfeccionamiento. Las pruebas de carga proporcionan estadísticas valiosas sobre el rendimiento del esquema en condiciones específicas, y destacan problemas como la concentració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 las siguientes áreas para alinearlas con las características de la carga de trabajo de tu aplicación.
- Ajustes de la clave principal: Si las pruebas de carga revelan puntos críticos o una distribución de datos desequilibrada, revisa el diseño de la clave principal. Por ejemplo, considera agregar aleatoriedad en el prefijo de la clave para distribuir los datos de manera más uniforme entre los nodos y, al mismo tiempo, conservar la eficiencia de las consultas.
- Refinamientos del índice: Las pruebas de carga pueden revelar si los índices redundantes o el exceso de indexación afectan negativamente el rendimiento de escritura. Quita los índices innecesarios o reestructura los existentes para mejorar el rendimiento de las consultas. Evalúa la selectividad del índice y asegúrate de que se alinee con los patrones de búsqueda típicos.
- Tablas y 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 intercalado según los patrones de acceso observados durante las pruebas. Por el contrario, considera modelar esas tablas por separado si la estructura jerárquica causa una sobrecarga inesperada.
Para obtener información sobre cómo compilar esquemas escalables, consulta las prácticas recomendadas para el diseño de esquemas de Spanner.
Optimiza la semántica y las consultas de las transacciones
Las pruebas de carga suelen destacar las ineficiencias en la ejecución de transacciones y consultas, como problemas de bloqueo o contención altos. Optimiza la semántica de las transacciones y las estructuras de las consultas para maximizar la capacidad de procesamiento 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 modifican datos o DML particionado para actualizaciones y eliminaciones masivas.
- Procesamiento por lotes: Cuando sea posible, usa operaciones de escritura por lotes para reducir la sobrecarga que generan los múltiples viajes de ida y vuelta.
- Optimización de consultas: Refactoriza las consultas para incluir solo las columnas y las filas necesarias, aprovecha 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 la consulta para validar las mejoras y asegurarte de que no se introduzcan nuevos cuellos de botella.
Simula situaciones de aplicación realistas con diferentes niveles de simultaneidad, tipos de transacciones y volúmenes de datos para confirmar que Spanner funciona según lo esperado en condiciones de carga máxima y de estado estable.
Métricas clave para supervisar
Realiza un seguimiento de las métricas clave, como la latencia (P50, P99), la capacidad de procesamiento y el uso de CPU durante la optimización.
¿Qué sigue?
- Mira Cómo planificar y ejecutar un POC de Spanner para conocer los pasos esenciales, las prácticas recomendadas y las herramientas que necesitas para evaluar de manera eficaz las capacidades de Spanner.