Intérpretes Go más rápidos: Reduciendo la brecha con C++

2025-04-05
Intérpretes Go más rápidos: Reduciendo la brecha con C++

El motor de evaluación SQL que se incluye con Vitess, la base de datos de código abierto que impulsa PlanetScale, se implementó originalmente como un evaluador AST que operaba directamente en el AST SQL generado por nuestro analizador. Durante el último año, lo hemos ido reemplazando gradualmente con una Máquina Virtual que, a pesar de estar escrita de forma nativa en Go, tiene un rendimiento similar al código de evaluación C++ original en MySQL. Lo más notable es que la nueva Máquina Virtual ha demostrado repetidamente ser más fácil de mantener que el intérprete Go original, a pesar de ser órdenes de magnitud más rápida. Repasemos las opciones de implementación que hemos tomado para obtener estos resultados sorprendentes.

Leer más
Desarrollo

PlanetScale expone la verdadera tasa de fallos de EBS: no es binaria, es degradación continua

2025-03-18
PlanetScale expone la verdadera tasa de fallos de EBS: no es binaria, es degradación continua

Basándose en su uso masivo de Amazon EBS, PlanetScale revela que la verdadera tasa de fallos es mucho mayor de lo que sugiere la documentación de AWS. El artículo destaca que la 'lentitud' de EBS es mucho más común que los fallos completos, con frecuentes fluctuaciones de rendimiento incluso cuando se cumplen las garantías de rendimiento de AWS, causando interrupciones en las aplicaciones. Esta degradación no es aleatoria; es inherente a la complejidad del sistema. PlanetScale mitiga los problemas mediante la monitorización y la sustitución automática de volúmenes EBS, lo que finalmente lleva a PlanetScale Metal para evitar problemas de rendimiento del almacenamiento en red.

Leer más

PlanetScale Metal: Eliminando el cuello de botella de E/S de las bases de datos en la nube

2025-03-13
PlanetScale Metal: Eliminando el cuello de botella de E/S de las bases de datos en la nube

Este artículo explora la historia de la evolución de las tecnologías de almacenamiento de computadoras, desde cintas hasta discos duros y unidades de estado sólido (SSD), y los desafíos de rendimiento de E/S que presenta la computación en la nube. Los servicios tradicionales de bases de datos en la nube suelen utilizar almacenamiento conectado a la red (NAS), lo que resulta en una alta latencia y limitaciones de IOPS. El producto Metal de PlanetScale utiliza unidades NVMe locales, conectando directamente la computación y el almacenamiento, para lograr una latencia extremadamente baja, IOPS ilimitados y una alta durabilidad de los datos, resolviendo completamente el problema del cuello de botella de E/S de las bases de datos en la nube.

Leer más

Conquistando la Contención de Bloqueos de Contadores de Bases de Datos: El Patrón de Contador con Ranuras

2025-02-04
Conquistando la Contención de Bloqueos de Contadores de Bases de Datos: El Patrón de Contador con Ranuras

Actualizar contadores de bases de datos en escenarios de alta concurrencia a menudo conduce a la contención de bloqueos, causando degradación del rendimiento e incluso bloqueos. Este artículo presenta un patrón llamado "contadores con ranuras" que mitiga eficazmente la contención de bloqueos distribuyendo contadores en varias ranuras. Este patrón distribuye las operaciones de actualización en varias filas, eliminando el cuello de botella de las actualizaciones de una sola fila y mejorando el rendimiento de concurrencia. GitHub utilizó una solución similar para abordar los problemas de conteo; la idea principal es distribuir las operaciones de actualización en varias filas y luego agregarlas para obtener el conteo final.

Leer más
Desarrollo